pkgngを1.2にアップデートしたら、設定ファイルの扱いが変わって、ちょっとした修正が必要になった。
それをまとめる。
まとめ。
- pkgngを更新したらpkg upgradeを忘れずに
- すべてコメントの設定ファイルは受け付けてくれない。
- 設定ファイルでのキー指定は、"(クオート)で囲わないこと。
pkg のアップデートあり
pkg updateをしたら、やたら文句を言われる。
$ sudo pkg update
pkg: Invalid configuration format, ignoring the configuration file
Updating repository catalogue
digests.txz 100% 1045KB 261.2KB/s 434.7KB/s 00:04
packagesite.txz 100% 5537KB 276.9KB/s 177.0KB/s 00:20
pkg: Skipping malformed dependency docbook-xml
pkg: Skipping malformed dependency docbook
pkg: Skipping malformed dependency docbook-xml
そしてupgradeすると、pkgに更新があるとな。
1.2.1である。
pkgに更新がある場合には、まずpkgを更新し、そのあとpkg upgradeをせよ、とのお達し。
$ sudo pkg upgrade
pkg: Invalid configuration format, ignoring the configuration file
Updating repository catalogue
digests.txz 100% 1045KB 261.2KB/s 504.7KB/s 00:04
New version of pkg detected; it needs to be installed first.
After this upgrade it is recommended that you do a full upgrade using: 'pkg upgrade'
Upgrades have been requested for the following 1 packages:
Upgrading pkg: 1.1.4_10 -> 1.2.1
The upgrade will require 580 KB more space
2 MB to be downloaded
Proceed with upgrading packages [y/N]: y
pkg-1.2.1.txz 100% 1942KB 323.7KB/s 282.3KB/s 00:06
Checking integrity... done
[1/1] Upgrading pkg from 1.1.4_10 to 1.2.1... done
$
pkg 1.2でアップデートができない。
pkgの更新は問題なく完了。
念のためもう一回pkg updateを試みるが、設定ファイルを読めないと怒られる。
$ sudo pkg update
pkg: Cannot parse configuration file!
$
どうも設定ファイルがおかしいようだ。
しかし現状、/etc/pkgの下や、/usr/local/etc/reposの下にも設定ファイルがあって訳の分からない状態だ。
調べた結果は以下のようなものだ。
pkgはREPOS_PATHで指定される全てのディレクトリから設定ファイルを探す。
デフォルトでは、/etc/pkgと/usr/local/etc/pkg/reposである。
詳しくは以下を参照。
http://lists.freebsd.org/pipermail/freebsd-questions/2013-November/254682.html
注意すべきは、すべてコメント文で出来ている設定ファイルがあると、“pkg: Cannot parse configuration file!“と言い出してそれ以上の処理をしてくれなくなることだ。
どうもバグのようだが。
1.2より前では文句だけだった。
私の場合、以下の通り/usr/local/etc/pkg.confがコメント文だけだったので、rmした。(RCSに保存しているので消したって平気)
$ grep -v "^#" /usr/local/etc/pkg.conf
$
$ sudo rm /usr/local/etc/pkg.conf
$
設定ファイルでのkey指定方法の変更
改めてpkg update。今度は問題なしか?
$ sudo pkg update
pkg: Warning: expecting a boolean for the 'enabled' key of the 'us-west' repo, the value has been correctly converted, please consider fixing
Updating repository catalogue
digests.txz 100% 1045KB 261.2KB/s 404.7KB/s 00:04
packagesite.txz 100% 5537KB 276.9KB/s 187.0KB/s 00:20
Incremental update completed, 22233 packages processed:
0 packages updated, 0 removed and 22233 added.
今度は設定ファイルの内容に文句が付いた。
booleanを期待してたのに違うぞ、と。
文句だけなので進めはするが、気持ち悪いので修正する。
設定ファイルの中でenabledなどのキー指定からクオートを外せばよい。
before
us-west: {
url: "http://pkg0.isc.freebsd.org/${ABI}/latest",
enabled: "yes",
mirror_type: "none",
}
after
us-west: {
url: "http://pkg0.isc.freebsd.org/${ABI}/latest",
enabled: yes,
mirror_type: none,
}
pkg upgrade
そうしたら指定通りpkg upgradeを実行。
今度は問題なし。
通常のアップグレードのほかに、依存が変わったとかで再インストールの必要なものが結構あった。
$ sudo pkg upgrade
Updating repository catalogue
digests.txz 100% 1045KB 149.2KB/s 54.7KB/s 00:07
Upgrades have been requested for the following 37 packages:
Upgrading apr: 1.4.8.1.5.2 -> 1.4.8.1.5.3
(略)
Reinstalling orca-2.32.1_2 (direct dependency changed)
Reinstalling gnome2-2.32.1_5 (direct dependency changed)
The upgrade will require 2 MB more space
102 MB to be downloaded
Proceed with upgrading packages [y/N]: y
そしてまた、autoremoveで掃除をしておこう。
$ sudo pkg autoremove
Deinstallation has been requested for the following 6 packages:
autoconf-2.69
autoconf-wrapper-20130530
gmake-3.82_1
help2man-1.43.3_1
m4-1.4.17,1
p5-Locale-gettext-1.05_3
The deinstallation will free 5 MB
Proceed with deinstalling packages [y/N]:
余談
以下のようにpy27-distributeが邪魔だというので、pkg delete -f py27-distributeしてpkg upgradeした。
Checking integrity...pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/bin/easy_install with:
- py27-setuptools-1.1.7_1
pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/bin/easy_install-2.7 with:
- py27-setuptools-1.1.7_1
pkg: WARNING: locally installed py27-distribute-0.6.35 conflicts on /usr/local/lib/python2.7/site-packages/easy-install.pth.dist with:
- py27-setuptools-1.1.7_1