= nest図書館閉架書庫 その1 = nestのpkg_infoコマンドが大量のエラーメッセージを吐いていた件をついに直した。 {{{ $ PKG_DBDIR=/var/.zfs/snapshot/20110120-1835/db/pkg pkg_info > /dev/null pkg_info: can't find package 'alsa-lib-1.0.23' installed or in a file! pkg_info: can't find package 'alsa-plugins-1.0.23_1' installed or in a file! pkg_info: can't find package 'compat7x-amd64-7.3.703000.201008_1' installed or in a file! pkg_info: can't find package 'gmime-24-2.4.15' installed or in a file! pkg_info: can't find package 'gsm-1.0.13' installed or in a file! pkg_info: can't find package 'ja-nkf-2.1.1,1' installed or in a file! pkg_info: can't find package 'ldapbrowser-2.8.2_3' installed or in a file! pkg_info: can't find package 'ldapsh-2.00_3,1' installed or in a file! ... }}} なぜか/var/db/pkg以下の各ディレクトリのパーミッションが0700になっていた。どうしてこうなった。 中のファイルのパーミッションも0600。どうしてこうなった。 {{{ $ cd /var/db/pkg $ sudo chmod 0755 * $ sudo chmod -R go+r * }}} なお、作業に入る前にnestの/と/varのスナップショットを取ってある。 {{{ zboot/jail/nest@20110120-1835 264K - 4.45G - zboot/jail/nest/var@20110120-1835 24.4M - 2.83G - }}} = nest図書館閉架書庫 その2 = clearさんがrxvt-unicodeをconfigureしようとしたらエラーが発生。 {{{ checking for perl5 suitability... configure: error: no, unable to link }}} configure.acを見てみると {{{ AC_MSG_CHECKING(for $PERL suitability) if $PERL -MExtUtils::Embed -e "use v5.8" >/dev/null 2>/dev/null; then save_CXXFLAGS="$CXXFLAGS" save_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS `$PERL -MExtUtils::Embed -e ccopts`" LIBS="$LIBS `$PERL -MExtUtils::Embed -e ldopts`" AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include #include ]], [[ PerlInterpreter *perl = perl_alloc (); ]])],[rxvt_perl_link=yes],[rxvt_perl_link=no]) CXXFLAGS="$save_CXXFLAGS" LIBS="$save_LIBS" if test x$rxvt_perl_link = xyes; then AC_MSG_RESULT(ok) AC_DEFINE(ENABLE_PERL, 1, Define if you can embed a perl interpreter) IF_PERL= PERL_O=rxvtperl.o PERLFLAGS="`$PERL -MExtUtils::Embed -e ccopts`" PERLLIB="`$PERL -MExtUtils::Embed -e ldopts`" PERLPRIVLIBEXP="`$PERL -MConfig -e 'print $Config{privlibexp}'`" else AC_MSG_ERROR([no, unable to link]) fi else AC_MSG_ERROR([no working perl found, or perl not version >= 5.8]) fi }}} /tmp/test.c {{{#!highlight c #include #include #include int main(void) { PerlInterpreter *perl = perl_alloc (); } }}} {{{ $ gmake CFLAGS="-Wall -Wextra $(perl -MExtUtils::Embed -e ccopts)" test 2>&1 cc -Wall -Wextra -DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/local/lib/perl5/5.10.1/mach/CORE test.c -o test In file included from test.c:2: /usr/local/lib/perl5/5.10.1/mach/CORE/perl.h:605:24: error: /usr/local/include/sys/types.h: Permission denied In file included from /usr/local/lib/perl5/5.10.1/mach/CORE/perl.h:616, from test.c:2: /usr/include/stdarg.h:34:23: error: /usr/local/include/sys/cdefs.h: Permission denied /usr/include/stdarg.h:35:24: error: /usr/local/include/sys/_types.h: Permission denied In file included from /usr/local/lib/perl5/5.10.1/mach/CORE/perl.h:616, from test.c:2: ... }}} またか {{{ $ ls -ld /usr/local/include/sys/ drwx------ 2 root wheel 3 10月 27 16:41 /usr/local/include/sys/ $ sudo ls /usr/local/include/sys/ asoundlib.h $ sudo pkg_info -W /usr/local/include/sys/asoundlib.h /usr/local/include/sys/asoundlib.h was installed by package alsa-lib-1.0.23 }}} またお前か ----- renda仮説: umask 0077でインストールされた可能性 == 検証1: sudoでumaskはリセットされないのか == {{{ $ umask 0022 $ sudo umask 0022 $ umask 0077 $ sudo umask 0077 }}} あー 参考: sudoers(5) Linux JMより引用 {{{ umask_override これをセットすると、sudo は umask を sudoers の umask オプションで指定されたとおりの値に、変更を加えることなく設定する。このことによって、ユーザ自身の umask 値よりもっと緩やかな umask 値を sudoers で指定することが可能になる。sudo の昔の動作と同じになるわけだ。 umask_override をセットしない場合、現在の sudo は umask を、ユーザの umask 値と sudoers で指定した umask 値とのビット和に設定することになっている。このフラグはデフォルトでは off である。 }}} * 追記: sudoで常に0022になるように設定されました{{{ Defaults umask=0022 Defaults umask_override }}} == 検証2: portinstallでumaskは尊重されるのか == {{{ $ sudo portinstall games/sl ... ===> Checking if games/sl already installed ===> Warning: your umask is "0077". ... $ ls -ld /var/db/pkg/sl-3.03/ /usr/local/bin/sl /usr/local/share/doc/sl/README ls: /usr/local/share/doc/sl/README: パーミッションが拒絶されました -r-xr-xr-x 1 root wheel 11440 1月 20 21:19 /usr/local/bin/sl drwx------ 2 root wheel 6 1月 20 21:19 /var/db/pkg/sl-3.03/ }}} ああー