Sambaでシンボリックリンク先が見えない件
先日、サーバで emerge world した際、 samba のアップデートがかかったのだが、それ以来共有にアクセスしてもシンボリック先が見えなくなってしまっていた。Windows 上から共有開いてのぞいて見ると、ファイルそのものは見えてるんだけど、中身が空っぽ。不便。
インストール履歴見ると、バージョン 3.0 系から 3.4 系に上がったんだけど
$ genlop -t samba * net-fs/samba Thu Nov 12 04:53:36 2009 >>> net-fs/samba-3.0.37 merge time: 19 minutes and 20 seconds. Mon May 24 18:01:03 2010 >>> net-fs/samba-3.4.6 merge time: 22 minutes and 25 seconds.
Samba でシンボリックリンクを辿るオプションがあった気がするのでググッてみると、こんなのがある。
wide links = yes
どうやらセキュリティの問題でデフォルトで no に変更されたっぽい。うちの場合そこまで意識しなくて良いと思うので、 yes と明示的にいれてやる。が、アクセスできない。
そのときの /var/log/samba/ 以下のログ見たらこんな感じ。
Share 'xxxxx' has wide links and unix extensions enabled. These parameters are incompatible.
Wide links will be disabled for this share.
さらに検索。設定ファイルの global セクションに2行追加するといいらしい。
$ sudo vi /etc/samba/smb.conf [global] wide links = yes unix extensions = no
あとは /etc/init.d/samba restart してアクセスしてみたら解決した。
参考
x86なサーバのGCCのバージョンアップ
x86 環境のサーバにも gcc-4.4.3-r2 が来ていたので迷った挙句にバージョンを上げることにしました。 amd64 なデスクトップ環境では導入していたんだけどね。
てことで emerge …2時間半かかりました。(´・ω・`)
$ genlop -t gcc * sys-devel/gcc Tue Jun 8 19:53:52 2010 >>> sys-devel/gcc-4.4.3-r2 merge time: 2 hours, 28 minutes and 33 seconds.
これだけではインストールされただけで基本的には使われません。がんがん使ってやりたいので、人柱覚悟で gcc-4.4.3 をデフォルトのコンパイラに指定してやります。
$ sudo su - # gcc-config i686-pc-linux-gnu-4.4.3 * Switching native-compiler to i686-pc-linux-gnu-4.4.3 ... >>> Regenerating /etc/ld.so.cache... [ ok ] * If you intend to use the gcc from the new profile in an already * running shell, please remember to do: * # source /etc/profile # source /etc/profile # env-update # gcc-config -l [1] i686-pc-linux-gnu-4.3.4 [2] i686-pc-linux-gnu-4.4.3 *
これでデフォルトのコンパイラになりました。せっかく gcc のバージョンが上がったので全部コンパイルしなおすかなーとも思ったのですが、さすがに不毛なのでやめておきましたw
分散コンパイル用 gcc のビルド
うちでは distcc と crossdev を用いた分散コンパイルを行っており、分散した先のコンパイラのバージョンも合わせなくてはならないので、この作業を忘れずにやっておきます。
一応、分散元の環境の各ツールのバージョンをとっておきます。
$ eix -c -I binutils $ eix -c -I linux-headers $ eix -c -I gcc $ eix -c -I glibc
ちなみに、こんな感じでした。
package | version |
---|---|
binutils | 2.18-r3 |
linux-headers | 2.6.30-r1 |
gcc | 4.3.4 / 4.4.3-r2 |
glibc | 2.10.1-r1 |
gcc についてはスロットで 2 つ入っていますね。
次に、分散させる先のマシンにログオン。同じくバージョンを調べます。こちらは crossdev で作ったツールのバージョンを調べなきゃいけないことに注意。前回の crossdev を用いたツールの作成で、 cross-i686-pc-linux-gnu カテゴリに全部インストールされているので、コレをリストすれば OK 。
$ eix -I -C cross-i686-pc-linux-gnu [I] cross-i686-pc-linux-gnu/binutils [1] (2.18-r3(i686-pc-linux-gnu)@2010年03月18日) : Tools necessary to build programs [I] cross-i686-pc-linux-gnu/gcc [1] (4.3.4(i686-pc-linux-gnu-4.3)@2010年03月18日) : The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking [I] cross-i686-pc-linux-gnu/glibc [1] (2.10.1-r1(i686-pc-linux-gnu-2.2)@2010年03月18日) : GNU libc6 (also called glibc2) C library [I] cross-i686-pc-linux-gnu/linux-headers [1] (2.6.30-r1(i686-pc-linux-gnu)@2010年03月18日) : Linux system headers [1] "local-original" /usr/local/portage/original Found 4 matches.
gcc だけ新しいバージョンを作ればいいようです。コレを crossdev を使って作成してやるのですが、自分の環境では package.mask ファイルでマスクされてたのであらかじめコレを外してやります。
その後、 crossdev で作成します。わかんないけど emerge で叩いても作れるのかな…?
$ sudo crossdev -t i686 --b 2.18-r3 --g 4.4.3-r2 --k 2.6.30-r1 --l 2.10.1-r1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
最後に、 crossdev で使われる gcc のバージョンを指定しておきます。分散元のコンパイラのバージョンとあわせましょう。作業についてはココを参考にしました。
http://www.gentoo.org/proj/en/base/embedded/cross-development.xml
(ただし記事が結構古いです。最新のはコッチらしい)
$ gcc-config -l [1] i686-pc-linux-gnu-4.3.4 * [2] i686-pc-linux-gnu-4.4.3 [3] x86_64-pc-linux-gnu-4.3.4 [4] x86_64-pc-linux-gnu-4.4.3 *
わかりにくいですが、緑色のアスタリスクがシステムデフォルト、水色のアスタリスクがクロスコンパイラのデフォルトなんだそーです。システムデフォルトは amd64 環境なので 64bit コンパイラがデフォルトになっています。
これも、分散元でやったように gcc-config を使って指定してやります。
$ sudo su - # gcc-config i686-pc-linux-gnu-4.4.3 * Switching native-compiler to i686-pc-linux-gnu-4.4.3 ... >>> Regenerating /etc/ld.so.cache... [ ok ] * If you intend to use the gcc from the new profile in an already * running shell, please remember to do: * # source /etc/profile # source /etc/profile # env-update # gcc-config -l [1] i686-pc-linux-gnu-4.3.4 [2] i686-pc-linux-gnu-4.4.3 * [3] x86_64-pc-linux-gnu-4.3.4 [4] x86_64-pc-linux-gnu-4.4.3 *
以上で以降は (多分) 完了です。あとはエラーとかがでないのを祈るのみ…w