CUIなワークステーションを作る へ

ソフトウェアのインストール……パッケージとports

 既にコンパイル済のプログラムを入れるだけの場合と,当該機械でコンパイルする場合があります。前者がいわゆるパッケージの利用で,後者がportsの利用です。

pkgコマンド

 FreeBSD10以降では,従来のpkg_*系のコマンドに代わり,pkgコマンドが導入されています。
 基本的には「pkg 命令 パッケージ名」の形式で,「pkg install パッケージ名」とするとそのパッケージが導入されることとなります。
 パッケージ名はhttp://www.FreeBSD.org/ja/ports/を参考にしてください。基本的にカテゴリー名と末尾の「-バージョン」表記の部分は不要です。
 なお,時に,サイズがあわないなどという謎のメッセージを出して,数回試した後に「もう無理」と言ってくることがあります。
 これの1つの原因としてpkg自体がバージョンアップしているのに,それが反映されていないというエラーがあるようです。
 この場合の解決策としては,
 pkg update -f
 として,pkgに関する情報を強制的に変更した後
 pkg upgrade
 として,pkgコマンド自体をアップデートするというのがあるようです。
(1回これで解決したことあり。)

sysinstallからのパッケージの導入

 「sysinstall」でsysinstall Main Menuが出ます。
 「Configure」でFreeBSD Configuration Menuが出ますので,Packagesを選びます。
 Choose Installation Mediaでは「FTP」を選択。
 サイトは例によって距離が短くて転送時間がかからない……となると日本のサイトかな……を選択。
 ……ただし,最新版のを確認したいのであれば本家本元まで。
 次の質問にも「Yes」
 そうすると接続と転送にやたら時間かかりますが,Package Selectionが出ます。
 選択は「return」もしくは「space」,選択の取消はもう1回「return」もしくは「space」,
 そして「cancel」で戻った後,「Install」でPackage Targetsとして表示されますので,確認の上「OK」です。
 再びファイルのあるサイトの指定を求められるので,指定しましょう。もう1回再確認を求められるので「Yes」。
 完了するとFreeBSD Configuration Menuに戻るので,終わっていれば「Exit」で終了。
 sysinstall Main Menuが出たので「Exit Install」
 Configurationでも「Exit」
 そうすると当初のコンソール画面に戻ってきます。同じか別か別として。
 検索かける時は「ESC」ですが,http://www.FreeBSD.org/ja/ports/で探す方が今は楽でしょう。
 インストールしたのをアンインストールするには,Package Selectionまで進んで,マークを外せばいいです。ただし外せない場合には,内部の削除されていないファイルが大量にあると思います。それを消します。
 削除できない時は,「pkg_delete -f」の使用を検討してください。

pkg_コマンドの使用

 FreeBSD9までは,pkg_*コマンドを使用していました。
 パッケージ名がわかっている時は,「pkg_add -r パッケージ名」コマンドの方が話が早いです。パッケージ名はhttp://www.FreeBSD.org/ja/ports/を参考にしてください。基本的にカテゴリー名と末尾の「-バージョン」表記の部分は不要です。
 インストールされているパッケージの名称等を確認したい時は「pkg_info」コマンドです。
 ただし予想以上に表示されるので,「pkg_info > neko.txt」とでもして,その後neko.txtをページャとかで開く方が落ち着いて作業できます。
 パッケージを削除する時は「pkg_delete パッケージ名」です。このパッケージ名にはpkg_addと異なり,末尾の「-バージョン」表記の部分が必要となります。
 このコマンドでは依存関係がある場合には削除をしません。何らかの理由で強制的に削除したい時は「pkg_delete -f パッケージ名」とします。
 パッケージを全部消す時は「pkg_delete -a」です。

portsからの導入

まず初回に
「portsnap fetch」
「portsnap extract」
の2つの命令を順次実行させておく必要があります。
※1回やっておけばそれでよい。
インストールしたいプログラムを探す時は,
「cd /usr/ports」として移動しておいてから
「make search name="something"」でsomethingという名のプログラムを探します。
もし大量に出てくるようであれば,
「make search name="something" > neko.txt」
とでもして,あとはneko.txtを適宜エディタで開いて探せばよいでしょう。
目的のプログラムのあるディレクトリsomewhere1/somewhere2が見つかったら
「cd somewhere1/somewhere2」としてそのディレクトリに移動した後,
「make」
「make install」
でインストールされます。
ちなみにソースなど不要のファイルでディスク領域を使いますので
「make clean」を実行して不要なファイルは適宜のタイミングで削っておきましょう。
(再コンパイルがすぐに予想されるのであれば残しておくとか。)
「make install」と「make clean」は「make install clean」としてもかまいません。
この手順だとコンパイルのオプションが選べる時に,
いちいち聞いてきてその度作業が止まります。
Xorgだとか大量に時間がかかる場合には,
選択肢を予め選ぶことで時間の有効利用をはかることができます。
「make config」なのですが
時間の有効利用ってことなら依存関係のある分も一緒にやった方がいいに決まっています。
この場合は,
「make config-recursive」です。 ちなみにこれを設定することで,新たな選択肢が増えることがあり,
その場合には1回だけではやはり選択画面が出てきてしまいます。
そうすると,「make config-recursive」については,
選択画面が出てこなくなるまで繰り返さないと,
時間の有効利用に全くならないということになってしまいます。
それで設定が終了すれば
「make && make install」
で,インストールまで自動化されます。
選択肢を間違えてしまった場合,次にmakeする時も律儀に覚えているのが仇となってしまいますので,
「make rmconfig」で以前の選択肢を消しておきます。
依存関係の分も一緒に消す場合は
「make rmconfig-recursive」です。
単純にプログラムを削除するのは,
「make deinstall」です。
設定済の選択肢を全部削除するには,
「cd /var/db/ports」→「rm -R *」
とする手もあります。

なお,最新のプログラムを入れる場合
「portsnap fetch」 「portsnap update」
の2つの命令を実行することでportsの内容を最新のものに更新するのですが……。
プログラムの改良の速度の違いで
依存関係が狂ってしまい,それでもmakeしちゃうことで,泥沼にはまることがあります。
実は最新のものに更新することがよいかどうか,よく考える必要があります。

余談

 インストール後,シェルがコマンドとして認識していない場合,「rehash」を実行すること。
 ……いちいちログインしなおさなくとも可。
 設定ファイルを読み込み直す時,例えば.cshrcなら「source .cshrc」を実行。
 ……いちいちログインとかrebootしなおさなくとも可。
   ……ずいぶん遠回りしていたんだなあ。あたし。
(2013.2.11.初版)
(2017.5.3.最終改訂)

CUIなワークステーションを作る へ