Login
Immutable PageDiscussionInfoAttachments
ytoku/daily-record/2011-01-20

MMA

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 <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
]], [[
     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

   1 #include <EXTERN.h>
   2 #include <perl.h>
   3 #include <XSUB.h>
   4 
   5 int main(void)
   6 {
   7         PerlInterpreter *perl = perl_alloc ();
   8 }

$ 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 である。 

検証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/

ああー

ytoku/daily-record/2011-01-20 (last edited 2011-01-20 23:19:50 by ytoku)