開発者ドキュメント

Pkgを使用してFreeBSD10.1でパッケージを管理する方法

序章

FreeBSDのバイナリパッケージマネージャーであるpkgを使用すると、コンパイル済みのアプリケーション、FreeBSDと同等のDebianおよびRPMパッケージのインストールを簡単に管理できます。 FreeBSDでのソフトウェアインストールの他の一般的な方法と比較すると、 portsをPortsCollectionでコンパイルし、パッケージを使用すると、多くの状況で機能する、より簡単で高速な代替手段が提供されます。 ただし、パッケージのインストールはカスタマイズできないため、パッケージはポートほど柔軟ではありません。ソフトウェアインストールのコンパイルオプションをカスタマイズする必要がある場合は、パッケージの代わりにポートを使用してください。

このチュートリアルでは、FreeBSD10.1でパッケージを管理する方法を紹介します。 これには、他の関連タスクの中でも、パッケージのインストールと削除が含まれます。

前提条件

このチュートリアルのコマンドを使用するには、FreeBSDサーバーへのrootアクセス権が必要です。 つまり、sudoコマンドを使用して、rootまたはスーパーユーザー権限を持つ別のユーザーとしてサーバーにログインできる必要があります。 rootの使用を計画している場合は、サンプルコマンドのsudoの部分を省略できます。

Pkgで新しいパッケージをインストールする方法

インストールするパッケージの名前がわかっている場合は、次のようにpkgコマンドを使用してインストールできます。

sudo pkg install package_name

次のように、インストールする複数のパッケージをスペースで区切って指定することもできます。

sudo pkg install package1 package2 ...

例として、人気のあるWebサーバーであるNginxをpkgでインストールしてみましょう。

sudo pkg install nginx

このコマンドを実行すると、指定したパッケージのインストールが開始されます。 まず、システムはパッケージリポジトリカタログの更新をチェックします。 すでに完全に更新されている場合は、指定されたパッケージを検索します。 パッケージが見つかった場合は、パッケージとそれが依存するパッケージが一覧表示されます。 確認プロンプトが表示されます。

この場合、nginxパッケージのみがインストールされます。 yでプロンプトに応答して、以下を確認します。

New packages to be INSTALLED:
	nginx: 1.6.2_1,2

The process will require 654 KB more space.
244 KB to be downloaded.

Proceed with this action? [y/N]: y

パッケージのインストールを確認した後、リストされたパッケージがダウンロードされ、システムにインストールされます。 一部のパッケージには、インストール後の重要なインストール後の情報またはアプリケーションの使用に関する指示が表示されます。インストール後の注意事項に必ず従ってください。

デフォルトのシェル、tcsh、またはcshを使用している場合は、次のコマンドを使用してPATHのバイナリのリストを再構築する必要があります。

rehash

サービスであるアプリケーションは、インストール後に自動的に起動したり、サービスとして有効になったりしないことに注意することも重要です。 ここでサービスを実行する方法を見てみましょう。

サービスの実行方法

FreeBSDでは、パッケージとともにインストールされるサービスは、/usr/local/etc/rc.dでサービス初期化スクリプトを提供します。 サービスとして実行されるNginxの例では、起動スクリプトはnginxと呼ばれます。 コマンドを実行するときは、強調表示された「nginx」ではなく、適切なサービススクリプト名に置き換える必要があることに注意してください。

有効になっていないサービスを開始しようとするとどうなるかを示すために、serviceコマンドを使用して、ソフトウェアをインストールした直後にソフトウェアを開始してみてください。

sudo service nginx start

サービスは開始されず、次のようなメッセージが表示されます。

Cannot 'start' nginx. Set nginx_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.

サービスを有効にするには、メッセージの指示に従い、/etc/rc.confに次の行を追加します。

nginx_enable="YES"

エディタで/etc/rc.confを開いて行を追加するか、sysrcユーティリティを使用して次のようにファイルを更新できます。

sudo sysrc nginx_enable=yes

これでサービスが有効になります。 システムが起動すると起動します。以前に試行されたstartサブコマンドを使用できます。

sudo service nginx start

サービスを有効にせずに一度実行する場合は、onestartサブコマンドを使用できます。 この方法でサービスを開始すると、スタートアップスクリプトがすぐに実行されますが、システムの起動時に開始されません。 やってみよう:

sudo service nginx onestart

onestartサブコマンドを使用すると、サービスを有効にする前にサービスの構成をテストする場合に役立ちます。

パッケージ情報をパッケージで表示する方法

インストール済みパッケージに関する情報を表示するには、次のようにpkg infoコマンドを使用できます。

pkg info package_name

これにより、ソフトウェアの説明、コンパイル時に使用したオプション、依存するライブラリのリストなど、指定したパッケージに関するさまざまな情報が出力されます。

インストールされたパッケージをパッケージでアップグレードする方法

次のコマンドを使用して、システムにインストールされているパッケージの最新バージョンをインストールできます。

sudo pkg upgrade

このコマンドを実行すると、インストールされているパッケージがリポジトリカタログ内のバージョンと比較され、新しいバージョンに更新できるパッケージのリストが出力されます。

Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Checking for upgrades (2 candidates): 100%
Processing candidates (2 candidates): 100%
The following 2 packages will be affected (of 0 checked):

Installed packages to be UPGRADED:
	python27: 2.7.8_6 -> 2.7.9
	perl5: 5.18.4_10 -> 5.18.4_11

The process will require 2 MB more space.
23 MB to be downloaded.

Proceed with this action? [y/N]: y

リストされたパッケージのアップグレードに進むためのプロンプトにyで応答します。

Pkgでパッケージを削除する方法

削除するパッケージの名前がわかっている場合は、次のようにpkgコマンドを使用してパッケージを削除できます。

sudo pkg delete package_name

次のように、削除する複数のパッケージをスペースで区切って指定することもできます。

sudo pkg delete package1 package2 ...

以前にインストールしたNginxパッケージを削除しましょう:

sudo pkg delete nginx

次のようなメッセージが表示され、確認のプロンプトが表示されます。

Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	nginx-1.6.2_1,2

The operation will free 654 KB.

Proceed with deinstalling packages? [y/N]: y

yでプロンプトに応答して、パッケージの削除アクションを確認します。

未使用の依存関係を削除する方法

依存関係をインストールしたパッケージを削除しても、依存関係は引き続きインストールされます。 インストールされているパッケージで不要になったパッケージを削除するには、次のコマンドを実行します。

sudo pkg autoremove

削除されるパッケージのリストが印刷され、その後にプロンプトが表示されます。 リストされたパッケージを削除する場合は、確認プロンプトにyと応答します。

Pkgでパッケージを見つける方法

リポジトリで使用可能なバイナリパッケージを見つけるには、pkg searchコマンドを使用します。

パッケージ名別

最も基本的な検索方法は、パッケージ名です。 パッケージ名を検索する場合は、次のようなコマンドを使用します。

pkg search package_name

たとえば、名前に「nginx」が含まれるパッケージを検索するには、次のコマンドを使用します。

pkg search nginx

これにより、名前に「nginx」が含まれる、バージョン番号を含むパッケージのリストが出力されます。

nginx-1.6.2_1,2
nginx-devel-1.7.8
p5-Nginx-ReadBody-0.07_1
p5-Nginx-Simple-0.07_1
p5-Test-Nginx-0.24

リストされたパッケージに関する詳細なパッケージ情報を読みたい場合は、次のような-fオプションを使用してください。

pkg search -f package_name

これにより、指定したパッケージ名と一致する各パッケージに関するパッケージ情報が出力されます。

説明による

インストールするパッケージの名前がわからない場合は、-Dオプションを指定して、リポジトリで使用可能なパッケージの説明を検索することもできます。 デフォルトでは、パターン一致では大文字と小文字が区別されません。

pkg search -D pattern

たとえば、説明に「java」が含まれるすべてのパッケージを検索するには、次のようなコマンドを使用します。

pkg search -D java

これにより、説明フィールドに指定されたパターンで使用可能なすべてのパッケージの名前が説明とともに出力されます。

Pkgの使用についてさらに学ぶ方法

Pkgは非常に柔軟なユーティリティであり、このチュートリアルでは説明されていないさまざまな方法で使用できます。 幸いなことに、使用可能なオプションとサブコマンド、およびそれらの機能を簡単に調べることができます。

使用可能なオプションとサブコマンドを出力するには、次のコマンドを使用します。

pkg help

さまざまなサブコマンドのマニュアルページを読むには、pkg helpを使用して、次のように学習するコマンドを指定します。

pkg help subcommand

たとえば、pkg searchの使用方法について詳しく知りたい場合は、次のコマンドを入力します。

pkg help search

これにより、pkg searchの使用方法を詳しく説明したマニュアルページが表示されます。

結論

これで、FreeBSDサーバーでバイナリパッケージを管理するためのpkgの使用について十分に理解しているはずです。

FreeBSDサーバーでのソフトウェアの管理についてもっと知りたい場合は、このチュートリアルでポートを読んでください: FreeBSD10.1にポートをインストールして管理する方法。

モバイルバージョンを終了