FreeBSDのパッケージ管理をpkgngに移行

FreeBSD,NAS

FreeBSDのパッケージは、基本的にはソースからビルドします。でも、やっぱり、コンパイル済みのバイナリをダウンロードできた方が便利ですし、最新版を使いたいです。

FreeBSDには、新しいパッケージ管理ステムが開発されています。といっても、今まで通り、portsコレクションのソースをビルドする事もできます。

新しいパッケージ管理システム(pkgng)の使い方は、次のウェブサイトで解説されています。

ですが、何度やっても、次のエラーが出ていたのです。

# pkg update
Updating repository catalogue
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
digests.txz                                                                                     100% 1069KB   1.0MB/s 738.9KB/s   00:01    
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
packagesite.txz                                                                                 100% 4948KB 989.5KB/s   1.0MB/s   00:05    
Incremental update completed, 22859 packages processed:
0 packages updated, 0 removed and 22859 added.
pkg: Unable to find catalogs

“pkg: Unable to find catalogs"と言うエラーメッセージが出て、その先へ進めませんでした。

次のページの解説が、かなり良い線を行っていたのですが、ダメでした。

ダメ元で、twitterで検索したら、次の物を発見しました。ありがとうございます。あなたの一言が、あきらめかけていた背中を押してくれました。

pkgのバグ? バグ修正版のはずだし、何度もビルドしているし…。

あきらめずに、もう一度トライしてみました。やった事を、そのまま貼付けます。

# portsnap fetch extract update
# cd /usr/ports/ports-mgmt/pkg
# make deinstall
# make install clean
# cd /var/db
# mv pkg pkg.bad3
# mkdir pkg
# pkg2ng
Converting packages from /var/db/pkg
# ls -l pkg
total 81
-rw-r--r--  1 root  wheel  81920 Jan 18 12:19 local.sqlite
# pkg audit -F
vuln.xml.bz2                                                                                     100%  426KB 426.1KB/s 426.1KB/s   00:01    
0 problem(s) in the installed packages found.
# pkg -vv
Version                 : 1.2.5
PACKAGESITE             : 
PKG_DBDIR               : /var/db/pkg
PKG_CACHEDIR            : /var/cache/pkg
PORTSDIR                : /usr/ports
PUBKEY                  : 
HANDLE_RC_SCRIPTS       : no
ASSUME_ALWAYS_YES       : no
REPOS_DIR               : [
  /etc/pkg/,
  /usr/local/etc/pkg/repos/,
]
PLIST_KEYWORDS_DIR      : 
SYSLOG                  : yes
AUTODEPS                : yes
ABI                     : freebsd:9:x86:64
DEVELOPER_MODE          : no
PORTAUDIT_SITE          : http://portaudit.FreeBSD.org/auditfile.tbz
VULNXML_SITE            : http://www.vuxml.org/freebsd/vuln.xml.bz2
MIRROR_TYPE             : SRV
FETCH_RETRY             : 3
PKG_PLUGINS_DIR         : /usr/local/lib/pkg/
PKG_ENABLE_PLUGINS      : yes
PLUGINS                 : [
]
DEBUG_SCRIPTS           : no
PLUGINS_CONF_DIR        : /usr/local/etc/pkg/
PERMISSIVE              : no
REPO_AUTOUPDATE         : yes
NAMESERVER              : 
EVENT_PIPE              : 
FETCH_TIMEOUT           : 30
UNSET_TIMESTAMP         : no
SSH_RESTRICT_DIR        : 
PKG_SSH_ARGS            : 
PKG_ENV                 : {
}
DISABLE_MTREE           : no
DEBUG_LEVEL             : 0
ALIAS                   : {
}

Repositories:
  FreeBSD: { 
    url             : "http://pkg.FreeBSD.org/freebsd:9:x86:64/latest",
    enabled         : yes,
    mirror_type     : "SRV" 
  }
# cat /etc/make.conf
WITH_PKGNG=    yes
# pkg update -f
Updating repository catalogue
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
digests.txz                                                                                      100% 1067KB 533.5KB/s   1.0MB/s   00:02    
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
packagesite.txz                                                                                  100% 4946KB 706.6KB/s   1.5MB/s   00:07    
Incremental update completed, 22859 packages processed:
0 packages updated, 0 removed and 22859 added.

エラーが出なくなりました。そして、パッケージのインストールもうまく行きました。

はぁ〜、長かった。

途中、/var/db/pkgを消して、再度作り直しています。これが効いているのかもしれません。ディレクトリ名が、pkg.bad3となっている様に、数回作り直しています。

メッセージで、URLを"pkg+http://"に直せと書かれていますので、ここだけ修正しました。

# cat /usr/local/etc/pkg/repos/FreeBSD.conf 
FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: yes
}

結局、環境を奇麗にして、ビルドし直したら直ったと言う事です。

Posted by お市のかた