HOME / コンピュータTips / Solaris / OpenSolarisOS / IPS(pkgコマンド)の利用方法
OpenSolarisのIPS、pkgコマンドの利用方法 †
逆引き辞典的な記述をしておきます。
参考 †
目次 †
レポジトリ情報を最新の状態にする †
pkg refresh --full
これでレポジトリを最新の状態にする。
パッケージの一覧 †
インストールされているパッケージの一覧(ローカルのみ)
pkg list
全パッケージの一覧(リモートも含む)
pkg list -a
パッケージの検索 †
ローカルのパッケージを探す。
pkg search 何かの名前
リモートにあるパッケージを探す(普通はこちらを使う)
pkg search -r 何かの名前
基本、
pkg search -r 欲しいソフトの名前
出てきた一覧をみて、正しい名称をしり、
pkg install 正しい名前
でインストールを行う。
そのプログラムが、どのパッケージ含まれているか検索 †
これも、searchコマンドを利用する。(従来のpkgchk -lp)
pkg search /usr/sbin/pkgadd
そのプログラムがリモートだった場合、-rをつける。
pkg search -r /usr/sbin/pkgadd
パッケージの内容を知る †
自分のホスト内にあるとき
pkg info SUNWsmbskr
リモートにあるとき
pkg info -r SUNWsmbskr
パッケージに含まれているファイル一覧 †
自分のホストにあるとき、
pkg contents SUNWzlib
リモートにあるとき
pkg contents -r SUNWzlib
アップデート出来るパッケージがあるか否かを知る †
pkg list -u
cronなどの設定Tips †
cronなどでは、こんなスクリプトを作っておき、
#!/bin/sh pkg refresh --full pkg list -u 2>&1 | grep -v 'no installed packages have available updates'
こんな風にcrontab -eで登録するとよい
0 4 * * * [ -x /opt/JPC/sbin/check_update_pkg ] && /opt/JPC/sbin/check_update_pkg
※ディレクトリは勝手に変えましょう。
アップデート(該当ファイルのみ) †
インストールと同じく、pkg installを利用する。
アップデート(環境全体) †
yum upgradeなどのように、環境全体のアップデートする場合は、 下記のように行う。ただし、この方法よりもブート環境を作成した方が良い。
pkg install -v entire
インストールする内容がどれだけあるのかを調べるだけ(ドライラン)の場合は、
pkg install -nv entire
※ブート環境が作られないため、何かあっても戻ることができない。これは、一般的なLinuxのアップデートやWindowsと同じで、アップデートじに破損が起きることが多い。OpenSolarisの場合、beadmなど、zfsを利用したブート環境のスナップショットを取ることができるので、下記の方をおすすめする。
※なおZoneなどのVPS環境では、GRUBがないため、beadmを利用し、boot後に環境を制御する必要がある。
アップデート(環境全体+ブート環境作成) †
ブート環境とは、beadm listで出てくるブートセットである。
grubで名前が登録されており、いつでも登録した環境に戻ることが出来るのが特徴。なので大型のアップデートには、この方法を利用すると良い。
pkg image-update
image-updateでは、yumやaptなどのアップグレードと違い、 別のブート環境にアップデートされている。
したがって、カーネルなどのアップデートに失敗しても、 GRUBの選択をすれば、簡単に元の環境でBootができる。
作成されたboot環境は、下記のように参照可能。
/usr/sbin/beadm list
2008.05のDiscで入れてしまった環境の問題回避 †
2008.05のDiscでインストールされている環境には、 日本語環境にてアップデートにはバグがある。 このワークアラウンドは下記の通り。
- LANG,LC_MESSAGES,LC_CTYPEがいずれもCであることを確認してから、pkg image-updateを実行すること。
- 終わった後で、手動でboot_archiveを作る。
pfexec mount -F zfs rpool/ROOT/opensolaris-1 /mnt pfexec /mnt/boot/solaris/bin/update_grub -R /mnt
すでに、やってしまったあとなら、起動せずに再起動を繰り返しているはず。 GRUBで古い方を選択し、/mntに該当のrootボリュームをマウントしてから、上記のようにboot_archiveを作ればよい。
レポジトリサーバが重く繋がらないとき †
pkg.opensolaris.orgが重く、download install繋がらない、あるいは タイムアウトが起きてしまって処理が終わらないならば、タイムアウトの時間を延ばします。
PKG_CLIENT_TIMEOUTにタイムアウト値を設定できるので(デフォルトは30)、 適当に増やして忘れると、何となく成功します
env PKG_CLIENT_TIMEOUT=120 pkg image-update
等。
レポジトリの変更(リリースレポジトリ、開発レポジトリ) †
2008.11以降、リリースレポジトリと、開発レポジトリが割れている。
| リリース | http://pkg.opensolaris.org:80/release |
| 開発 | http://pkg.opensolaris.org:80/dev |
| ?今までのもの? | http://pkg.opensolaris.org:80/ |
古い環境からのアップデートではreleaseレポジトリを参照しないので、次のようにしてリリースレポジトリに変更しておくと良い。
pkg set-authority -O http://pkg.opensolaris.org:80/release opensolaris.org
念のため・・・
pkg refresh --full pkg rebuild-index
その他のレポジトリの追加 †
Sunfreewareのレポジトリを追加
pkg set-authority -O http://pkg.sunfreeware.com:9000 sunfreeware.com
blastwaveのレポジトリを追加
pkg set-authority -O http://blastwave.network.com:10000 blastwave.com
必ずこれを行っておく
pkg refresh --full
Blastwaveを追加する場合 †
- blastwaveはpkg-getの方が速かった・・・と素直に思う貴方は私と同じです・・・どうやら、blastwaveのサーバが日本からは遠いか、遅いか、どちらかか・・・。
- BlastwaveのIPSは、Dclarke曰く「作ったものの、IPSの情報が少なすぎて、急いで作った状態」とのこと。ちなみに彼らはpkg-getからpkgutilの方にシフト中です。
- そして、blastwaveを追加すると、pkg searchが遅くなる・・・ような気がしますが、それは自分で体験してください。
- 個人的にはBlastwaveを利用する場合は、pkgutilを作った方がいい気がしますね。
IPSのミラー †
そのうち作るかも・・・
メモ・・・
- http://mail.opensolaris.org/pipermail/pkg-discuss/2008-August/005744.html
- http://blogs.sun.com/levon/entry/building_opensolaris_isos
ただし、単なるコピーではないので、タイムスタンプがあわないのが問題。



