FreeBSD Ports Collectionでインストール超便利機能!

FreeBSDでPortsCollectionを使用したインストール方法をメモします。
FreeBSDってわからないことが多いですが、このPortsCollectionは初期のインストール時にかなり役に立つと思います。

最新のパッケージはPorts Collectionで

基本的には、パッケージ利用が望ましいが、セキュリティ上の観点から最新のバージョンを利用する必要もあります。
その場合は、Ports Collectionを利用します。

パッケージの検索

パッケージ名がわかっている場合には、次のコマンドでportsの場所を見つける事ができます。

whereis  \*パッケージ名 \*

or

find /usr/ports -type d -name \*パッケージ名\*

見つけられない場合には、ワイルドカードをパッケージ名の前後に入れる事で見つけやすくなります。

find /usr/ports -type d -name \*パッケージ名\*

また、コマンド等のファイル名がわかる場合には、次の様にすると発見する手掛かりとなります。

find /usr/ports/ -name pkg-plist -exec grep -H /<コマンド名>$ {}\;

パッケージが見つかった場合には、該当ディレクトリに移動し、ビルドを行なうのだが、この時、同時に依存するパッケージもビルドされてしまいます。
特に、PREFIXを変更する場合には、依存するパッケージのPREFIXも変わってしまう為、先に依存するパッケージをインストールしておく必要があります

依存するパッケージ

依存するパッケージの一覧は次の様にして見つける事ができます。

make all-depends-list | cut -d/ -f5

これらを先にpkg_addした後に、ビルドを行ないます。

パッケージのビルドおよびインストール

パッケージをビルドするには、そのパッケージのディレクトリにおいてmakeを行ないます。
また、インストール先の変更がある場合は、同時に指定する。その際、CUIにて設定を聞かれる事があるので必要に応じて設定を行ないます。

portsを利用する際の基本的なコマンド列は次の通り

make config
make all-depends-list | cut -d/ -f5
pkg_add -r ......
make PREFIX=/usr
(make test)
make install
make clean

ビルド失敗時

ビルドが失敗した場合は大きく2種類の原因が考えられます。

  1. 依存関係にあるパッケージの設定がなされずにインストールされた場合。

    依存関係にあるパッケージがビルドされインストールされてしまった場合には、一旦、同時にインストールされたパッケージをアンインストールしてやり直す必要があります。

    ログを見ながら、該当パッケージのディレクトリにてアンインストール作業を行ないます。
    この際、PREFIXも指定しているなら同じように指定してアンインストールを行ないます。

    make PREFIX=/usr deinstall

    その後、依存関係にあるパッケージをpkg_addでインストールを行なうか、CUI設定を行なった後、再度ビルドしてインストールを行ないます。また、PREFIXを指定していない状態での再ビルドには次のコマンドで関係するパッケージの設定を同時にできるようにする事も可能です。

    make config-recursive

    逆に依存関係にあるパッケージのCUI設定を全て削除するには、次のコマンドを使用します。

    make rmconfig-recursive
  2. CUIによる設定ミスがある場合。
    再度CUIによる設定を行なうには、次のコマンドを使用した後にビルドします。

    make config

    CUIによる設定を削除するには次のコマンドを使用します。

    make rmconfig

まとめ

FreeBSDのPorts Collectionは凄く便利ですが、インストールを間違ってしまうと凄く大変でした。
一つ一つコマンドと出力結果を確認して行きながら確実に実行していってください。

以上です。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!