pkg によるパッケージ管理

FreeBSD 9.2-RELEASE や 10.0-RELEASE から使える pkg は pkg_add などを置き換える新しいパッケージ管理システムです。しかし、標準提供されているパッケージはデフォルトの設定でビルドされているため、カスタム構成でビルドしたい場合は相変わらず ports からビルドしたり、独自のパッケージサーバーを立てる必要があります。

pkg で参照するサーバーは 9.2-RELEASE で利用する場合は追加で導入するものであることから /usr/local/etc/pkg/repos/FreeBSD.conf で、10.0-RELEASE の場合は標準であることから /etc/pkg/FreeBSD.conf となります。

通常は以下のコマンド辺りを覚えておけば大体困らないかと思います。

pkg install <パッケージ名>パッケージの導入
pkg delete <パッケージ名>パッケージの削除
pkg upgradeパッケージの更新
pkg audit脆弱性のあるパッケージのレポートを表示
pkg info導入済みパッケージの一覧
pkg info <パッケージ名>特定の導入済みパッケージの詳細情報を表示
pkg info -afすべての導入済みパッケージの詳細情報を表示

さらに独自パッケージサーバーを立てる場合、以下を追加で使う位でしょうか。

pkg repo <リポジトリー作成ディレクトリー>リポジトリー情報を作成
pkg create <パッケージ名>パッケージの作成

portmaster を利用する場合 portmaster -g でパッケージの作成を行ってくれるので、この場合は pkg create する必要はありません。

また、独自パッケージサーバーを立てる場合に配下サーバー群がリリースやアーキテクチャーが共通である場合、ABI に合わせたディレクトリーなどを作成せず、単純に Web サーバーでパッケージとカタログをべたに並べて公開するだけでも構いません。この場合、FreeBSD.conf は以下のような形となります。

FreeBSD: {
	url: "http://pkg.example.local/",
	mirror_type: "NONE",
	enabled: yes
}

独自パッケージサーバーは、面倒であれば /usr/ports/packages/All を Web サーバーのルートとして公開するようにし、portmaster -g の後で pkg repo /usr/ports/packages/All する程度です。(# cd /usr/ports/packages/All && pkg repo . でも構いません)

ただし、pkg upgrade した際に新しいものを見つけてくれなかったりするので、この場合は同じソフトの古いバージョンを削除した後、pkg repo を実行してカタログをリフレッシュすることで反映できます。

py27-setuptools と py27-setuptools27 ってどういうことw

FreeBSD 公式パッケージリポジトリーの話ではありません

なんか py27-setuptools に依存しているパッケージと py27-setuptools27 に依存しているパッケージがあるなーということで、軽く確認。(正解は後者)

# pkg rquery '%n: %dn' | grep py27-setuptools | grep -v py27-setuptools27
py27-Babel: py27-setuptools
py27-Genshi: py27-setuptools
py27-docutils: py27-setuptools
py27-hgsubversion: py27-setuptools
py27-psycopg2: py27-setuptools
py27-pygments: py27-setuptools
py27-setuptools: python27
py27-sqlite3: py27-setuptools
scons: py27-setuptools
silvercity: py27-setuptools
trac: py27-setuptools
trac-mercurial: py27-setuptools

きみらは何がどうしてそんなことになってしまったんや……。(多分 py-setuptools 辺りに変わった時の問題だろう)

ということで、この辺作り直して pkg repo . して対応終了。

www/mod_php5 や www/mod_php55 が増えてた

ついでに UPDATING 見てたら www/mod_php5 や www/mod_php55 とか生えてた。おぉ。(笑)

20140327:
  AFFECTS: users of lang/php5 and lang/php55 with Apache module
  AUTHOR: ale@FreeBSD.org

  The Apache PHP module has been separated from the main PHP port.
  If it is needed, install either www/mod_php5 or www/mod_php55.

ちょー大事。

元々 mod_php.so は lang/php5 や lang/php55 のオプションとしてビルドされるもので、かつデフォルトが off だから pkg install php5 とかやっても入らないっていう話がこれで解消されることに。

これだと CLI 要らないなら pkg install mod_php55 とかでもいいのかなー?

Apache httpd 2.4.17 + mod_autoindex + mod_passenger でアプリケーションが見つけられなくなる

Apache httpd 2.4.17 + mod_autoindex + mod_passenger (Phusion Passenger) で、Passenger からアプリケーションが見つけられなくなる問題

対策はこんな感じで。

  • Apache httpd 2.4.16_1 に戻す (2.4.16_1 を入れていれて消していなければ /var/cache/pkg/apache24-2.4.16_1.txz にキャッシュがあるはず)
  • httpd.conf から mod_autoindex を消す (Include etc/apache24/extra/httpd-autoindex.conf もコメントアウト)