これは ディストリビューション/パッケージマネージャ Advent Calender 8日目の記事です.
最近OSSというとLinuxがフィーチャーされがちで、BSDは古臭いイメージを持たれている方が多いかとおもいます.
ports? make install? めんどくせー、バイナリパッケージないのかよ.
えっバイナリパッケージあるけどインストールと削除とインストール済みリスト表示が全部別々のコマンドだって?
しかも削除するときはバージョン番号まで指定?
やってらんねー.
そんなあなたでも大丈夫、次期リリースのFreeBSD 10からはpkg(8)がパッケージ管理の標準になります.
現行の最新版リリースであるFreeBSD 9.2でも、このパッケージマネージャは試すことができるので、試してみてください
これで記事を終えるのは流石にひどいのでざっと使い方など説明
なにができるのか
pkgにはコマンドというものがあって、upgrade, install, remove, infoなどがそうです.
たとえば、
指定パッケージのアンインストールが可能です.
こうして見るとわかる通り、DebianやUbuntuのaptライクなコマンドで、現代的にパッケージ管理をすることができます.なので、Debian系Linuxユーザーが移行しても苦もなく使えるのではないでしょうか.
パッケージ追加でpkg_add -r パッケージ名、 インストール済みリスト表示にpkg_info、
パッケージ削除でpkg_delete パッケージ名なんて別々のコマンドを使う必要はもうありません
また、既存のバイナリパッケージシステムを使ってた人でも、
(注: ただしこれは非可逆な操作なので気をつけてください )
FreeBSD 10.x以前のものなら/etc/make.confに
古いFreeBSDでpkgコマンドが入っていない場合でも、
すでにこの管理システムのためのバイナリのミラーは国内に存在しています
http://ftp.jaist.ac.jp/pub/FreeBSD-pkgng/ [JAIST]
これを/usr/local/etc/pkg.confに書いてあげることで、より高速に使用することができるでしょう.
FreeBSD 10の追加される機能
ついでにFreeBSD 10自体の紹介も
今回のアップデートはかなり大規模で、さまざまな追加/変更が存在します.
そのなかで個人的におもしろそうなものをピックアップ
・ デフォルトコンパイラをGCCからClangに変更
・ DNSサーバーソフトをBINDからLDNSとUnboundに置き換え
・ Raspberry Piのサポート(!!)
・ BHyVe(ハイパーバイザ)
・ Hyper-V
・ AMD(Radeon)のGPUのKMSドライバ追加
・ SMP(マルチコア)フレンドリィなファイアウォール(pf)
・ 802.11nスタックの改善、AtherosのPCI/PCIeインターフェースな無線LANカードのサポート追加
などなどといった無線LAN関係の改善
・ ZFSでTRIMやLZ4圧縮のサポート
・ FUSEのサポートをBaseシステムに追加
・ USBオーディオ2.0のサポート追加
などなどおもしろい機能が目白押しです.
Radeonと無線LANサポートの向上はデスクトップユースに嬉しいですね
(このマシン(ThinkPad x121e AMD)がグラフィックも無線もダメで悲しい思いをしていました)
おわりに
今回紹介した内容は、公式のwikiを参考にするともっとよく理解できるとおもいます
https://wiki.freebsd.org/pkgng
https://wiki.freebsd.org/WhatsNew/FreeBSD10
LinuxでwikiといえばArchかGentooだったりしますが、実はFreeBSDも公式のwikiやハンドブックが
充実しているので是非参考にしましょう.
正直、pkg(8)は既存のバイナリパッケージのコマンドの単なる置き換えなのですが、
aptライクになっていてユーザーフレンドリィでしかもいくつか機能が便利になってるように思われます.
また、FreeBSD10自体色々な機能の進化が見られるので、もう古臭いとか言わせません.
wikiなどが充実しているということは初心者にも安心です.
ということで、Linuxも良いですがFreeBSDも使ってみませんか?という話でした.
PC-BSDというディストリビューション(もし余裕があれば別記事で紹介します)なら
最初からXが入っておりpkg(8)を採用しててローリングリリースなので、
WindowsユーザーがUNIXライクOSの手習いにUbuntuだけじゃなくてこっちも候補に挙がるようになると、それはとってもうれしいなって.
最近OSSというとLinuxがフィーチャーされがちで、BSDは古臭いイメージを持たれている方が多いかとおもいます.
ports? make install? めんどくせー、バイナリパッケージないのかよ.
えっバイナリパッケージあるけどインストールと削除とインストール済みリスト表示が全部別々のコマンドだって?
しかも削除するときはバージョン番号まで指定?
やってらんねー.
そんなあなたでも大丈夫、次期リリースのFreeBSD 10からはpkg(8)がパッケージ管理の標準になります.
現行の最新版リリースであるFreeBSD 9.2でも、このパッケージマネージャは試すことができるので、試してみてください
これで記事を終えるのは流石にひどいのでざっと使い方など説明
なにができるのか
# pkg以上がpkgコマンドのusageです.
usage: pkg [-v] [-d] [-l] [-N] [-j <jail name or id>|-c <chroot path>] [-C <configuration file>] <command> [<args>]
Global options supported:
-d Increment debug level
-j Execute pkg(1) inside a jail(8)
-c Execute pkg(1) inside a chroot(8)
-C Use the specified configuration file
-l List available command and exit
-v Display pkg(1) version
-N Test if pkg(1) is activated and avoid auto-activation
Commands supported:
add Registers a package and installs it on the system
annotate Add, modify or delete tag-value style annotations on packages
audit Reports vulnerable packages
autoremove Removes orphan packages
backup Backs-up and restores the local package database
check Checks for missing dependencies and database consistency
clean Cleans old packages from the cache
convert Convert database from/to pkgng
create Creates software package distributions
delete Deletes packages from the database and the system
fetch Fetches packages from a remote repository
help Displays help information
info Displays information about installed packages
install Installs packages from remote package repositories
lock Locks package against modifications or deletion
plugins Manages plugins and displays information about plugins
query Queries information about installed packages
register Registers a package into the local database
remove Deletes packages from the database and the system
repo Creates a package repository catalogue
rquery Queries information in repository catalogues
search Performs a search of package repository catalogues
set Modifies information about packages in the local database
ssh ssh packages to be used via ssh
shell Opens a debug shell
shlib Displays which packages link against a specific shared library
stats Displays package database statistics
unlock Unlocks a package, allowing modification or deletion
update Updates package repository catalogues
updating Displays UPDATING information for a package
upgrade Performs upgrades of packaged software distributions
version Displays the versions of installed packages
which Displays which package installed a specific file
Commands provided by plugins:
For more information on the different commands see 'pkg help <command>'.
pkgにはコマンドというものがあって、upgrade, install, remove, infoなどがそうです.
たとえば、
# pkg install パッケージ名
# pkg info
# pkg remove パッケージ名でそれぞれ、指定パッケージのインストール、インストール済みパッケージのリスト表示、
指定パッケージのアンインストールが可能です.
# pkg autoremoveとすることで、pkg removeで消したパッケージの依存関係にあって要らなくなったパッケージを自動削除することができます.
# pkg search 検索文字列で指定した文字列を使ってレポジトリからパッケージを検索することも可能です.
こうして見るとわかる通り、DebianやUbuntuのaptライクなコマンドで、現代的にパッケージ管理をすることができます.なので、Debian系Linuxユーザーが移行しても苦もなく使えるのではないでしょうか.
パッケージ追加でpkg_add -r パッケージ名、 インストール済みリスト表示にpkg_info、
パッケージ削除でpkg_delete パッケージ名なんて別々のコマンドを使う必要はもうありません
また、既存のバイナリパッケージシステムを使ってた人でも、
# pkg2ngとするだけでpkg(8)での管理に移行できます! このコマンドを実行するとpkg(8)を管理するためのsqliteなデータベースが生成されます.
(注: ただしこれは非可逆な操作なので気をつけてください )
FreeBSD 10.x以前のものなら/etc/make.confに
WITH_PKGNG=yesと書き加える必要もあります
古いFreeBSDでpkgコマンドが入っていない場合でも、
# pkg_add -r pkgないしは
# cd /usr/ports/ports-mgmt/pkg && make && make installでpkgコマンドを入手し、pkg2ngをつかうことでpkg(8)を使えます.
すでにこの管理システムのためのバイナリのミラーは国内に存在しています
http://ftp.jaist.ac.jp/pub/FreeBSD-pkgng/ [JAIST]
これを/usr/local/etc/pkg.confに書いてあげることで、より高速に使用することができるでしょう.
FreeBSD 10の追加される機能
ついでにFreeBSD 10自体の紹介も
今回のアップデートはかなり大規模で、さまざまな追加/変更が存在します.
そのなかで個人的におもしろそうなものをピックアップ
・ デフォルトコンパイラをGCCからClangに変更
・ DNSサーバーソフトをBINDからLDNSとUnboundに置き換え
・ Raspberry Piのサポート(!!)
・ BHyVe(ハイパーバイザ)
・ Hyper-V
・ AMD(Radeon)のGPUのKMSドライバ追加
・ SMP(マルチコア)フレンドリィなファイアウォール(pf)
・ 802.11nスタックの改善、AtherosのPCI/PCIeインターフェースな無線LANカードのサポート追加
などなどといった無線LAN関係の改善
・ ZFSでTRIMやLZ4圧縮のサポート
・ FUSEのサポートをBaseシステムに追加
・ USBオーディオ2.0のサポート追加
などなどおもしろい機能が目白押しです.
Radeonと無線LANサポートの向上はデスクトップユースに嬉しいですね
(このマシン(ThinkPad x121e AMD)がグラフィックも無線もダメで悲しい思いをしていました)
おわりに
今回紹介した内容は、公式のwikiを参考にするともっとよく理解できるとおもいます
https://wiki.freebsd.org/pkgng
https://wiki.freebsd.org/WhatsNew/FreeBSD10
LinuxでwikiといえばArchかGentooだったりしますが、実はFreeBSDも公式のwikiやハンドブックが
充実しているので是非参考にしましょう.
正直、pkg(8)は既存のバイナリパッケージのコマンドの単なる置き換えなのですが、
aptライクになっていてユーザーフレンドリィでしかもいくつか機能が便利になってるように思われます.
また、FreeBSD10自体色々な機能の進化が見られるので、もう古臭いとか言わせません.
wikiなどが充実しているということは初心者にも安心です.
ということで、Linuxも良いですがFreeBSDも使ってみませんか?という話でした.
PC-BSDというディストリビューション(もし余裕があれば別記事で紹介します)なら
最初からXが入っておりpkg(8)を採用しててローリングリリースなので、
WindowsユーザーがUNIXライクOSの手習いにUbuntuだけじゃなくてこっちも候補に挙がるようになると、それはとってもうれしいなって.