現在繼續使用 FreeBSD 的 ports 安裝東西的話,就會不斷的看到訊息,提醒你改用 pkg (pkgng):
If you want to switch to the new pkg(8) format, and have not already done so, there are some extra 1-time steps to take: Enable PKGNG as your package format: # echo 'WITH_PKGNG=yes' >> /etc/make.conf Then convert your /var/db/pkg database to the new pkg format: # pkg2ng
所以你要換到 pkg,就依照上面的步驟做一次就好。
結果我碰到底下這個錯誤,Google 了一下,似乎蠻多人遇到過的,但是網路上面的解決方法,有些人有用,有些人一樣會遇到,我是屬於後者,還是一樣遇到的那一群。
http://pkg.FreeBSD.org/freebsd:9:x86:64/latest/digests.txz: No address record
最後當然還是解決了,所以來記錄一下。
首先,先把 FreeBSD 升級到 production 的版本,可以看這裡, 目前是 8.4、9.2 或者 10.0,這和 pkg 沒有絕對的關係,不過換到一個合理的版本是應該的。
換好之後,確定一下系統有沒有 pkg 了:
root@proxy1:~ # whereis pkg pkg: /usr/sbin/pkg /usr/local/man/man8/pkg.8.gz /usr/ports/ports-mgmt/pkg
有的話,確定一下 pkg 的版本:
root@proxy1:~ # pkg -v 1.2.7_2
不要使用比這個還要舊的版本,接著,如果你以前自己從 ports 裡面安裝過 pkgng 來使用,那麼就會遇到我碰到的問題,請刪除 /usr/local/etc/pkg.conf,或者將內容清空:
root@proxy1:~ # ls -al /usr/local/etc/pkg* -r--r--r-- 1 root wheel 0 May 16 05:13 /usr/local/etc/pkg.conf -r--r--r-- 1 root wheel 1026 May 16 05:00 /usr/local/etc/pkg.conf.sample -r--r--r-- 1 root wheel 1026 Apr 30 23:37 /usr/local/etc/pkg.conf~
根據常識,pkg 是在 /usr/sbin 底下,所以它的設定一定是在 /etc 底下會有:
root@proxy1:~ # ls -al /etc/pkg total 10 drwxr-xr-x 2 root wheel 512 May 16 05:11 . drwxr-xr-x 21 root wheel 2560 May 16 05:42 .. -rw-r--r-- 1 root wheel 436 May 16 05:11 FreeBSD.conf -rw-r--r-- 1 root wheel 444 May 16 05:10 FreeBSD.conf~
檢查到這邊,都沒問題的話,就可以用 pkg 了,基本上,看一下 handbook 就會用了,或者執行 pkg,看一下說明也會用。
最後,你一定會想用 pkg upgrade 享受一下升級,因為現在是 binary 的,所以升級就快很多了。
不過,可能還會遇到一個 Perl 版本衝突的錯誤,訊息很長一串,大概像這個樣子:
pkg: WARNING: locally installed perl-5.12.4_4 conflicts on /usr/local/man/man1/ptardiff.1.gz with: - perl-5.14.2_2 pkg: WARNING: locally installed perl-5.12.4_4 conflicts on /usr/local/man/man1/s2p.1.gz with: - perl-5.14.2_2 pkg: WARNING: locally installed perl-5.12.4_4 conflicts on /usr/local/man/man1/shasum.1.gz with: - perl-5.14.2_2 pkg: WARNING: locally installed perl-5.12.4_4 conflicts on /usr/local/man/man1/splain.1.gz with: - perl-5.14.2_2 pkg: WARNING: locally installed perl-5.12.4_4 conflicts on /usr/local/man/man1/xsubpp.1.gz with: - perl-5.14.2_2
你的訊息和我的不一定一樣,反正就是版本衝突的錯誤,這時候,移除你本來安裝的那一個 Perl:
pkg remove -f perl-5.12.4_4
記得要用 -f 強制移除,接著再重新 pkg upgrade,pkg 會自己安裝它想要的那一個 Perl。
然後,應該就不會有問題了。