Freebsdのpkgで複数のリポジトリを参照する方法
pkgを利用するときに、quarterlyリポジトリよりも新しいpkgが欲しい時があります。
その場合、まずlatestのリポジトリを探して、無かったらportsで自力インストールするような運用手順にして
できるだけpkgでシステムを構成できるようにすると、余計なビルド作業を極力減らせて便利なので
pkgが複数のリポジトリを参照できるように設定を行います。
使用環境とデフォルトのpkg設定
quarterlyが標準のリポジトリに設定されている。
$ freebsd-version 10.2-RELEASE-p14 $ cat /etc/pkg/FreeBSD.conf # $FreeBSD: releng/10.2/etc/pkg/FreeBSD.conf 285830 2015-07-23 23:31:40Z gjb $ # # To disable this repository, instead of modifying or removing this file, # create a /usr/local/etc/pkg/repos/FreeBSD.conf file: # # mkdir -p /usr/local/etc/pkg/repos # echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf # FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes }
ここに
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
と書いてありますので、/usr/localの下にディレクトリを掘ります。
$ mkdir -p /usr/local/etc/pkg/repos $ echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
標準の設定を無効化する設定ができました。
/usr/localの下にquarterlyを参照する設定、latestを参照する設定をそれぞれ追加します。
すると、/usr/local/etc/pkg/repos以下には下記の3つの設定ファイルが設置されます。
$ cat /usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD: { enabled: no } $ cat /usr/local/etc/pkg/repos/latest.conf latest: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes, priority: 10 } $ cat /usr/local/etc/pkg/repos/quarterly.conf quarterly: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes, priority: 0 }
これでpkg updateすれば複数のリポジトリがアップデートするのが確認できると思います。
pkg install時は-rで明示的にリポジトリを指定しないと
リポジトリのpriorityと無関係に新しいバージョンが優先的にインストールされてしまうという微妙な仕様なので、この辺りは今後改善してほしいですね。