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にポートをインストールして管理する方法。