Solaris 9 での pkgsrc の利用

先に言っておきますが。
以下は、去年の8月位*1に書いたメモそのまんま*2ですので、古くなってても関知しません。
単に、この度、新規にSolarisにpkgsrcを導入するに当たって「そういやこんなメモもあったなぁ。webで見たいから上げとくか。」と思ったから上げてみるだけで、基本的に自分のためでしかありませんので余り信用しないように。
「$」と「#」と「$ sudo hoge」の書き分けも多分いい加減(汗



まずは事前準備。


gccのインストール
sunfreeware.comより、gccのpackageを取得。
(sunsite.sut.ac.jpより早そうだったので)
取得したのは、gcc-3.3-sol9-sparc-local.gz

$ gunzip -d gcc-3.3-sol9-sparc-local.gz
$ su
# pkgadd -d ./gcc-3.3-sol9-sparc-local.gz

■make (gmake)のインストール
sunfreeware.comより、makeのpackageを取得。
取得したのは make-3.80-sol9-sparc-local.gz

$ gunzip -d make-3.80-sol9-sparc-local.gz
$ su
# pkgadd -d ./make-3.80-sol9-sparc-local

■sudoの導入
基本的にsudoは必要無いのだが、慣れてしまってるので入れる。
sunfreeware.comより、sudoのpackageを取得。
取得したのは sudo-1.6.7p5-sol9-sparc-local.gz

$ gunzip -d sudo-1.6.7p5-sol9-sparc-local.gz
$ su
# pkgadd -d ./sudo-1.6.7p5-sol9-sparc-local.gz

cvsの導入
同様。
2004.05.12の追記:実はこの「cvsの導入」の前に、pkg-getの導入とかしてて。
なのでホントはpkg-getでcvsを入れたりしてるんだけど、後でpkgsrcを使うから結局pkg-getは要らなくなったので、pkg-getの導入とpkg-getでのcvsの導入は省きました。_o_

■PATHを通す
もちろんホントは、.profileなり.cshrcなりに書く

# export PATH=/usr/local/bin:/usr/local/sbin:$PATH

■sudo の設定
とりあえずごく単純に。

# which visudo
/usr/local/sbin/visudo
# visudo

以下を記述

foo   ALL=(ALL) ALL

fooはパスワード認証を経て、sudoで全権実行可能になる。

○sudo が正常に働いているかチェック

$ cat /etc/shadow
cat: cannot open /etc/shadow
$ sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:

        #1) Respect the privacy of others.
        #2) Think before you type.

Password:
<以下略>

/etc/shadowが閲覧できればOK

■pkgsrcの利用
○bootstrapのインストール
pkgsrc: The NetBSD Packages Collection からbootstrapのbinarykitをダウンロードした後、

# cd /
# gzip -dc /hogehoge/bootstrap-pkgsrc-SunOS-5.9-sparc-20030701.tar.gz | tar -xpf -

○pkgsrcをanoncvsから入手

$ export CVSROOT=:pserver:anoncvs@anoncvs.netbsd.org:/cvsroot; export CVSROOT
$ cd /usr
$ cvs login
Logging in to :pserver:anoncvs@anoncvs.netbsd.org:2401/cvsroot
CVS password: anoncvs

$ sudo mkdir pkgsrc
$ chmod 777 pkgsrc
$ cvs checkout -P pkgsrc

○PATHの変更
2004.05.12の追記:ってやべぇ、過去のオレが何を追加したか書いてない...orz
多分、/usr/pkg/bin と /usr/pkg/sbin だと思うが...。

$ echo $PATH
/usr/pkg/bin:/usr/pkg/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/pkg/bsd/bin:/usr/ccs/bin:/opt/sfw/bin:/usr/sbin:/sbin:/usr/sfw/bin:/usr/games:/usr/xpg4/bin:/usr/local/ssl/bin:/usr/openwin/bin:/usr/ucb

○LD_LIBRARY_PATHの設定
直接LD_LIBRARY_PATHを指定するのではなく、crleコマンドを使い、/var/ld/ld.configに記述する。
なお、後ほどpkgsrcから入れるgcc 3.3で、
ld.so.1: /usr/pkg/bin/gmake: fatal: libucb.so.1: open failed: No such file or directory
と怒られるので、libucb.so.1のある、/usr/ucblib も追加する。

・現状確認

# crle

Default configuration file (/var/ld/ld.config) not found
  Default Library Path (ELF):   /usr/lib  (system default)
  Trusted Directories (ELF):    /usr/lib/secure  (system default)

・LD_LIBRARY_PATHの追加

# crle -c /var/ld/ld.config -l /usr/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib 

・追加後の確認

# crle

Configuration file [3]: /var/ld/ld.config  
  Default Library Path (ELF):   /usr/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib
  Trusted Directories (ELF):    /usr/lib/secure  (system default)

Command line:
  crle -c /var/ld/ld.config -l /usr/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib

・参考情報
だめだめ日記『crleコマンド』
http://damedame.monyo.com/?date=20030829#p01
Solaris Tips
http://www.tokyo-nagasaki.net/dayan/tips/unix/solaris.html

gccの入れ替え(のためのgccインストール)
Chapter?2.?Using pkgsrc on systems other than NetBSD
http://www.netbsd.org/Documentation/pkgsrc/platforms.html#id2883908
によれば、bootstrapの構築にはsunfreeware.comなどなどで入れたgccを使っても良いが、pkgsrcを使うならば、まず lang/gcc の構築をするか(NetBSD側で用意されている)binary packageのgccを使い、予め入れてあるgccは破棄する様に勧められている。
なので、まず lang/gcc3 をインストールし、sunfreeware.com のパッケージで入れたgcc 3.3は破棄することとする。

$ cd /usr/pkgsrc/lang/gcc3
$ cat distinfo 
$NetBSD: distinfo,v 1.12 2003/07/26 17:37:04 martin Exp $

SHA1 (gcc-3.3.tar.bz2) = 18e23822c6dc9cb462e0ff88bc1b8a20c53da60a
Size (gcc-3.3.tar.bz2) = 23447616 bytes
<略>

$ bmake

※依存関係により、以下もインストールされる。
pkg_install-info-4.5nb2
make-3.80.tar.gz
gettext-0.11.5.tar.gz
libiconv-1.9.1.tar.gz
libtool-ml-20010614.tar.gz

$ bmake install

○再度PATHの変更
ここで入れたgcc 3.3が、/usr/pkg/gcc-3.3/bin に入るので、それをPATHに追加する。

$ echo $PATH
/usr/pkg/gcc-3.3/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/pkg/bsd/bin:/usr/ccs/bin:/opt/sfw/bin:/usr/sbin:/sbin:/usr/sfw/bin:/usr/games:/usr/xpg4/bin:/usr/local/ssl/bin:/usr/openwin/bin:/usr/ucb

○再度LD_LIBRARY_PATHの設定
依存関係でインストールされた libiconv などを有効にするため、再度LD_LIBRARY_PATHの設定をする。

$ sudo crle -c /var/ld/ld.config -l /usr/lib:/usr/pkg/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib
Password:

$ crle

Configuration file [3]: /var/ld/ld.config  
  Default Library Path (ELF):   /usr/lib:/usr/pkg/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib
  Trusted Directories (ELF):    /usr/lib/secure  (system default)

Command line:
  crle -c /var/ld/ld.config -l /usr/lib:/usr/pkg/lib:/usr/ucblib:/usr/local/lib:/opt/sfw/lib

gcc, make(gmake)の入れ替え
これらは、sunfreeware.comのパッケージから入れているので、pkgrmする。

$ pkginfo -i |grep gcc
$ sudo pkgrm SMCgcc
$ pkginfo -i |grep make
$ sudo pkgrm SMCmake

○ついでに、sunfreeware.comのパッケージで入れたcvsとsudoも抜き、pkgsrcで入れ直す。
・sunfreeware.comのパッケージを抜く

$ pkginfo -i |grep cvs
$ sudo pkgrm SMCcvs
$ pkginfo -i|grep sudo
$ sudo pkgrm SMCsudo 

・pkgsrcからcvsを入れる

$ cd /usr/pkgsrc/devel/cvs
$ bmake

※依存関係により、以下もインストールされる
zlib-1.1.4nb1
gtexinfo-4.6nb1

$ bmake install

$ which cvs
/usr/pkg/bin/cvs
$ bmake clean CLEANDEPENDS=YES

・pkgsrcからsudoを入れる

$ cd /usr/pkgsrc
$ bmake
$ bmake install
$ bmake clean

$ which sudo
/usr/pkg/bin/sudo
$ which visudo
/usr/pkg/sbin/visudo

・sudoの設定を施す

$ su
# export PATH=/usr/pkg/sbin:$PATH
# visudo

foo   ALL=(ALL) ALL

○インストール済パッケージの脆弱性チェック
http://www.jp.netbsd.org/ja/Documentation/software/packages.html#vulnerabilities
を参照のこと。

$ cd /usr/pkgsrc/security/audit-packages
$ bmake
$ bmake install
$ bmake clean

$ download-vulnerability-list
$ audit-packages

※/usr/pkgsrc/security/audit-packages/MESSAGE に、cronを利用して脆弱性チェックを行う方法が書かれているので読むように。

○pkgsrcをアップデート

$ cd /usr/pkgsrc
$ cvs checkout -dP

○インストール済パッケージのより新しいバージョンが pkgsrc にあるかどうか調べる
http://www.jp.netbsd.org/ja/Documentation/software/packages.html#pkg_versions
を参照のこと。

$ cd /usr/pkgsrc/pkgtools/pkglint
$ bmake

※依存関係により、以下もインストールされる
perl-5.6.1nb9

$ bmake install
$ bmake clean CLEANDEPENDS=YES

$ lintpkgsrc -i
Scanning pkgsrc Makefiles: 4030 packages                         
Unknown package: 'gcc3' version 3.3nb5
<以下略>



なんてトコでメモは終わってるんだが。
なーんて、実は終わってなくて、この後そのまま Apache 2.0.47 のインストール...WebDAVの設定に突入して....で、他人にお見せできないこと(社内事情的なのとか)が沢山書かれてるので。

*1:つまりマカーである私が初めてSolarisに触れて1〜2ヶ月位でまだワケワカメだった頃(汗 ってゆーか Apache 2.0.47 とか入れてた頃だしなぁ。

*2:ホントにまんまかって言われると、まぁHTMLのタグ付けたり、ユーザ名のトコをfooに変えたり位はしてますけど。