Re: pbuiderrc: не работает "export PATH"
Я несколько поправил /usr/lib/pbuilder/pbuilder-buildpackage
чтобы отследить где переписывается PATH
--- pbuilder-buildpackage.orig 2010-12-28 19:28:38.000000000 +0300
+++ pbuilder-buildpackage 2011-04-15 11:47:33.000000000 +0400
@@ -127,3 +127,8 @@
log "I: Running $DPKG_COMMANDLINE"
- echo "$DPKG_COMMANDLINE" | $CHROOTEXEC $SUTOUSER
+ echo "BERORE: PATH=$PATH"
+ echo "$CHROOTEXEC $SUTOUSER"
+ # echo "$DPKG_COMMANDLINE" | $CHROOTEXEC $SUTOUSER
+ echo "echo \"IN: PATH=\$PATH\"" | $CHROOTEXEC $SUTOUSER
+ echo "AFTER: PATH=$PATH"
Вот что получилось.
BERORE: PATH=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
chroot /var/cache/pbuilder/build/cow.11433 cow-shell env LOGNAME=pbuilder su -p pbuilder
IN: PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
AFTER: PATH=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Т.к. как я понимаю,
PATH перезаписывается внутри "$CHROOTEXEC $SUTOUSER",
которые в моём случае раскладываются в:
chroot /var/cache/pbuilder/build/cow.11433 cow-shell env LOGNAME=pbuilder su -p pbuilder
теперь man su
/-p
Preserve the current environment, except for:
$PATH
reset according to the /etc/login.defs options
ENV_PATH or ENV_SUPATH (see below);
Note that the default behavior for the environment is
the following: The $HOME, $SHELL, $USER, $LOGNAME,
$PATH, and $IFS environment variables are reset.
Т.е. PATH полюбому будет перезаписан.
Выше в коде я увидел, что варианта SUTOUSER без su не предусмотрено,
поэтому я перед чрутом я сбросил SUTOUSER вовсе (то есть вообще без
"su")
и ... всё встало на свои места.
BERORE: PATH=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
chroot /var/cache/pbuilder/build/cow.20977 cow-shell
Invoking /bin/bash
IN: PATH=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
AFTER: PATH=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Я в тупике. Не могу поверить что никто ccache не использует с pbuilder-ом,
однако в то что "su -p" не перезапишет PATH=/usr/lib/ccache тоже трудно поверить.
P.S. для теста подойдёт любой пакет в котором Makefile состоит из
%
echo $(PATH)
Reply to: