作成 2014.02.11
更新 2014.02.11
FreeBSD パッケージ管理メモ - 10
FreeBSD 10.0-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/ 配下に展開される。
  • パッケージ管理系でデフォルト インストールされているコマンドは以下の通り。10.0 以降は sysinstall が廃止され、pkg_* コマンド類は pkgng へ移行された。なお、pkgng は以前のリリースから使用可能だが Makefile と不整合になることが多いため 10.0 未満のリリースではお勧めしない。
    freebsd-update
    portsnap
    pkg
    
ports のアップデート
extract は基本的に初回のみ実施する。
# portsnap fetch
# portsnap extract
# portsnap update
# pkg audit -F
# pkg update
パッケージの検索
http://www.freebsd.org/ports/index.html からも検索できる。
$ find /usr/ports -maxdepth 2 | grep パッケージ名
公式パッケージをダウンロードしてインストールする場合
ports からインストールすると、コンパイルに非常に時間がかかったり、コンパイル オプションの選択ミスで数時間の苦労が台無しになったりすることがあるので、比較的早く構築したい場合におすすめ。
# pkg install パッケージ名
ports からパッケージを作成してインストールする場合
まずは portmaster をインストールする。
利用中のシェルが /bin/sh の場合は、インストール後ログオフ/ログオンするか、rehash または hash -r しないとパスが通らない。
シェルが bash の場合は、hash -r しなくてよい。
/usr/ports 配下の該当のパッケージに移動
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 -IvL '='
パッケージのアップデート
前述の方法でアップデート対象を探して、アップグレードする。
新規インストールはオプション無しで。また、オプション無しで実行し、既存のパッケージがある場合は再インストールになる。
とりあえず、man portmaster に無いオプションがある模様。
# portmaster --update-if-newer パッケージ名
まとめてアップグレードする場合は以下の通り。
# portmaster -a
インストール済みのパッケージ リストを取得
# pkg info
パッケージ名を指定することで、詳細情報も取得できる
# pkg info パッケージ名
インストール済みのパッケージを削除する
# 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 配下に展開されている。
カーネルのアップデート
カーネルの再構築をしていない場合に有効
# 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 が出たら
pkg で脆弱性データベースを更新する。
# pkg audit -F
普段のアップデート作業まとめ
カーネルのアップデート
# freebsd-update fetch
アップデート対象があったら
# freebsd-update install
ports のアップデート
# portsnap fetch
# portsnap update
# pkg audit -F
# pkg version -IvL '='
ports よりもバージョンが古かったら
# portmaster (パッケージ名)
タグ: FreeBSD

©2004-2017 UPKEN IPv4