作成 2010.01.06
更新 2014.02.11
FreeBSD パッケージ管理メモ - 8
10.0 以降は FreeBSD パッケージ管理メモ - 10 に記載しています。
FreeBSD 8.2-RELEASE で動作確認しました。
目次
パッケージ管理の基礎
ports のアップデート
パッケージの検索
公式パッケージをダウンロードしてインストールする場合
ports からパッケージを作成してインストールする場合
ports のコンパイルオプションを変更して再インストールする場合
インストール済みのパッケージを ports ツリーと比較する
パッケージのアップデート
インストール済みのパッケージ リストを取得
インストール済みのパッケージを削除する
カーネスソースのダウンロード
カーネルのアップデート
リリースのアップグレード
パッケージの再インストール
WARNING: Vulnerability database out of date, checking anyway が出たら
普段のアップデート作業まとめ
パッケージ管理の基礎
  • package または ports で管理する。
  • package はバイナリ配布のため比較的素早くインストールが可能だが、保守的な設定になっておりパフォーマンスが低い場合がある。対して ports はソース配布のため、インストール時にコンパイルが実行され非常に時間がかかることがあるものの、ハードウェア環境に特化したコンパイルが可能。また、package は依存するパッケージが見つからなければインストールに失敗するが ports は依存するパッケージもコンパイルするためインストールに失敗しにくい。
  • インストールされたパッケージに関する全情報は /var/db/pkg/ に保存されている。パッケージのファイル一覧は各パッケージ フォルダ内の +CONTENTS ファイルに記述されている。
  • インストールされたパッケージ ファイルは /usr/local/ 配下に展開される。
  • パッケージ管理系でデフォルト インストールされているコマンドは以下の通り。
    freebsd-update
    sysinstall
    portsnap
    pkg_* 類
    
ports のアップデート
extract は基本的に初回のみ実施する。
# portsnap fetch
# portsnap extract
# portsnap update
パッケージの検索
http://www.freebsd.org/ports/index.html からも検索できる。
$ find /usr/ports -maxdepth 2 | grep パッケージ名
公式パッケージをダウンロードしてインストールする場合
ports からインストールすると、コンパイルに非常に時間がかかったり、コンパイル オプションの選択ミスで数時間の苦労が台無しになったりすることがあるので、比較的早く構築したい場合におすすめ。
# sysinstall
 Configure - Packages - 取得元を選択 - パッケージを選択 - Install
または
# pkg_add -r パッケージ名
ports からパッケージを作成してインストールする場合
まずは portaudit, portmaster をインストールする。
利用中のシェルが /bin/sh の場合は、インストール後ログオフ/ログオンするか、rehash または hash -r しないとパスが通らない。
シェルが bash の場合は、hash -r しなくてよい。
/usr/ports 配下の該当のパッケージに移動
portaudit の場合
# cd /usr/ports/ports-mgmt/portaudit
# make install clean
# rehash
同様に portmaster の場合
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
# rehash
ports のコンパイルオプションを変更して再インストールする場合
/usr/ports 配下の該当のパッケージに移動
deinstall で依存関係を無視して強制アンインストールできるが、依存関係が失われる。
python26 パッケージの場合
# cd /usr/ports/lang/python26
# make config
# make
# make deinstall install clean
なので以下のように実行したほうが綺麗にインストールできる。
# portmaster --force-config python26
インストール済みのパッケージを ports ツリーと比較する
"=" は同じ、"<" はパッケージが ports より古い、">" はパッケージが ports より新しい。
# pkg_version
= を省く場合は、
# pkg_version | grep -v " ="
パッケージのアップデート
前述の方法でアップデート対象を探して、アップグレードする。
新規インストールはオプション無しで。また、オプション無しで実行し、既存のパッケージがある場合は再インストールになる。
とりあえず、man portmaster に無いオプションがある模様。
# portmaster --update-if-newer パッケージ名
まとめてアップグレードする場合は以下の通り。
# portmaster -a
インストール済みのパッケージ リストを取得
# pkg_info
パッケージ名を指定することで、詳細情報も取得できる
# pkg_info パッケージ名
インストール済みのパッケージを削除する
# pkg_delete (パッケージ名)-(バージョン指定)
# pkg_delete (パッケージ名)\*
カーネスソースのダウンロード
Subversion を使用する。
Subversion 以外の方法でダウンロード済みの場合は、事前に削除する。
Subversion コンパイルの際は SERF WebDAV/Delta-V (HTTP/HTTPS) repo access module が必須となるので必ずオンにする。
初回のみ
# rm -rf /usr/src
# portmaster devel/subversion
# svn checkout https://svn0.us-west.freebsd.org/base/head /usr/src
フィンガープリントの承認画面が表示された際は A.6. Subversion ミラーサイト に記載されているフィンガープリントと照合する。
次回以降
# svn update /usr/src
実行後、/usr/src 配下に展開されている。
以下は以前のやり方。
cvsup を使用する。Stable のみ説明。
詳細は18.2 FreeBSD-CURRENT vs. FreeBSD-STABLE を参照。
# portmaster net/cvsup-without-gui
# cp /usr/share/examples/cvsup/stable-supfile ~/
/root/stable-supfile の *default host=CHANGE_THIS.FreeBSD.org の行を書き換える。
ホストの一覧は A.6.7 CVSup サイト に記載されている。
# *default host=CHANGE_THIS.FreeBSD.org
*default host=cvsup.jp.FreeBSD.org
全体としてはこれだけ。
9.0からはtagの表記が変更されていることに注意。従来は 8-stable, 7-stable の様な表記だった。
*default host=cvsup.jp.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_9
*default delete use-rel-suffix
*default compress
src-all
書き換え後、実行。
# cvsup ~/stable-supfile
カーネルのアップデート
カーネルの再構築をしていない場合に有効
# freebsd-update fetch
# freebsd-update install
リリースのアップグレード
カーネルの再構築をしていない場合に有効
# freebsd-update upgrade -r 9.0-RELEASE
# freebsd-update install
# shutdown -r now
# freebsd-update install
... ports パッケージの再インストール ...
# freebsd-update install
# shutdown -r now
実行後に、SOファイルがちゃんとリンクされているか確認する。
パッケージの再インストール
portmaster の man に記載されている。
なお、root のログインシェルをデフォルトから変更していた場合、ログインできなくなってしまうので事前に /bin/sh へ戻す。
... /usr/local 配下の設定ファイルなどをバックアップ ...
# chsh -s /bin/sh
# portmaster --list-origins > ~/installed-port-list
... installed-port-list はパッケージ名でソートされて記録されるため、
インストール バージョンを指定したいパッケージを上へ移動させる
そうしないと、意図しないバージョンがインストールされることがある ...
# portmaster -ty --clean-distfiles
# portmaster --check-port-dbdir
# portmaster -Faf
# pkg_delete -a
# rm -rf /usr/local/lib/compat/pkg
... /usr/local と /var/db/pkg 配下に実行ファイルが残っていないことを確認 ...
# reboot
# freebsd-update install
# portsnap fetch
# portsnap update
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
# rehash
# portmaster `cat ~/installed-port-list`
WARNING: Vulnerability database out of date, checking anyway が出たら
portaudit で脆弱性データベースを更新する。
# portaudit -Fda
普段のアップデート作業まとめ
カーネルのアップデート
# freebsd-update fetch
アップデート対象があったら
# freebsd-update install
ports のアップデート
# portsnap fetch
# portsnap update
# portaudit -Fda
# pkg_version | grep -v " ="
ports よりもバージョンが古かったら
# portmaster (パッケージ名)
タグ: FreeBSD

©2004-2017 UPKEN IPv4