[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: