cd: ..: Permission denied by newvers.sh ― 2017年09月13日 11時10分32秒
少し実験をする。make buildkernel から問題のあるコマンドだけを抜き取っった。newvers.sh が原因のようだ。
sh に -x を渡して、実行されているコマンドを見る。
% MAKE=/usr/obj/usr/src/make.i386/bmake sh /usr/src/sys/conf/newvers.sh GENERIC
cd: ..: Permission denied
cd: ..: Permission denied
findvcs で無限ループに陥っているようだ。どうも /usr からは / へ .. で移動できていない様だ。取り合えず、該当する部分を見てみる。
env MAKE=/usr/obj/usr/src/make.i386/bmake sh -x /usr/src/sys/conf/newvers.sh GENERIC
+ [ -z '' ]
+ dirname /usr/src/sys/conf/newvers.sh
+ SYSDIR=/usr/src/sys/conf/..
...
+ findvcs .git
+ local savedir
+ pwd
+ savedir=/usr/src
+ cd /usr/src/sys/conf/../..
+ pwd
+ [ /usr/src '!=' / ]
+ [ -e ./.git ]
+ cd ..
+ pwd
+ [ /usr '!=' / ]
+ [ -e ./.git ]
+ cd ..
cd: ..: Permission denied
while ループの pwd が成功しないため、while ループが無限ループに陥っている。
findvcs()
{
local savedir
savedir=$(pwd)
cd ${SYSDIR}/..
while [ $(pwd) != "/" ]; do
if [ -e "./$1" ]; then
今まで目撃したことの無かった現象なので、気になったのでテスト。
/usr/src から、/usr へは問題なく cd .. が出来ているが、/usr から / へは出来ていないようだ。ディレクトリへのアクセス権限も問題ない。
% cd /usr/src
% df .
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/da2s2f 5061628 2584592 2072108 56% /usr/src
% cd ..
% cd ..
..: Permission denied.
% df -k .
Filesystem 1024-blocks Used Avail Capacity Mounted on
/dev/ada0s3d 7103150 1625446 4909452 25% /usr
% pwd -P
/usr
% pwd
/usr
% cd ..
..: Permission denied.
% ls -ld /usr
drwxr-xr-x 19 root wheel 512 Jun 18 13:42 /usr
% ls -ld /
drwxr-xr-x 23 root wheel 1024 Sep 26 21:39 /
原因は分からないが、該当箇所を /usr と比較することで、一時的な回避は出来る。buildkernel は /usr/src から行うので、/usr までみれば十分だ。
while [ $(pwd) != "/usr" ]; do
最近のコメント