パッケージ管理の基本:apt、yum、dnf、pkg
序章
最新のUnixライクなオペレーティングシステムのほとんどは、ソフトウェアを検索してインストールするための一元化されたメカニズムを提供します。 ソフトウェアは通常、パッケージの形式で配布され、リポジトリに保管されます。 パッケージの操作は、パッケージ管理として知られています。 パッケージは、共有ライブラリ、アプリケーション、サービス、およびドキュメントとともに、オペレーティングシステムのコアコンポーネントを提供します。
パッケージ管理システムは、ソフトウェアの1回限りのインストール以上のことを行います。 また、すでにインストールされているパッケージをアップグレードするためのツールも提供します。 パッケージリポジトリは、コードがシステムで使用するために精査されていること、およびインストールされているソフトウェアのバージョンが開発者とパッケージメンテナによって承認されていることを確認するのに役立ちます。
サーバーや開発環境を構成するときは、多くの場合、公式リポジトリを超えて検討する必要があります。 ディストリビューションの安定リリースのパッケージは、特に新しいソフトウェアや急速に変化するソフトウェアが関係している場合は、古くなっている可能性があります。 それにもかかわらず、パッケージ管理はシステム管理者と開発者にとって不可欠なスキルであり、主要なディストリビューション向けの豊富なパッケージソフトウェアは膨大なリソースです。
このガイドは、さまざまなディストリビューションでパッケージを検索、インストール、およびアップグレードするための基本事項のクイックリファレンスとして意図されており、システム間でその知識を翻訳するのに役立ちます。
パッケージ管理システム:簡単な概要
ほとんどのパッケージシステムは、パッケージファイルのコレクションを中心に構築されています。 パッケージファイルは通常、ソフトウェアで使用されるコンパイル済みアプリケーションやその他のリソース、およびインストールスクリプトを含むアーカイブです。 パッケージには、依存関係、それらをインストールして実行するために必要な他のパッケージのリストなど、貴重なメタデータも含まれています。
それらの機能と利点はおおむね類似していますが、パッケージ形式とツールはプラットフォームによって異なります。
- Debian / Ubuntu の場合:
apt
およびdpkg
によってインストールされた.deb
パッケージ - Rocky / Fedora / RHEL の場合:
yum
によってインストールされた.rpm
パッケージ - FreeBSD の場合:
pkg
によってインストールされた.txz
パッケージ
Debianとそれに基づくシステム(Ubuntu、Linux Mint、Raspbianなど)では、パッケージ形式は.deb
ファイルです。 Advanced PackagingToolであるapt
は、リポジトリの検索、パッケージとその依存関係のコレクションのインストール、アップグレードの管理など、最も一般的な操作に使用されるコマンドを提供します。 apt
コマンドは、ローカルシステムへの個々の.deb
ファイルのインストールを処理する、下位レベルのdpkg
ユーティリティのフロントエンドとして機能し、直接呼び出されることもあります。
ほとんどのDebian派生ディストリビューションの最近のリリースには、単一のapt
コマンドが含まれています。このコマンドは、より具体的なapt-get
および[ X231X]。
Rocky Linux、Fedora、およびRedHatファミリーの他のメンバーはRPMファイルを使用します。 これらは、yum
と呼ばれるパッケージマネージャーを使用するために使用されていました。 Fedoraとその派生物の最近のバージョンでは、yum
は、yum
のインターフェースのほとんどを保持する最新のフォークであるdnf
に取って代わられました。
FreeBSDのバイナリパッケージシステムは、pkg
コマンドで管理されます。 FreeBSDは、Ports Collectionも提供しています。これは、ユーザーがMakefileを使用してソースから直接パッケージをフェッチ、コンパイル、およびインストールできるようにするローカルディレクトリ構造とツールです。 通常はpkg
を使用する方がはるかに便利ですが、コンパイル済みのパッケージが利用できない場合や、コンパイル時のオプションを変更する必要がある場合があります。
パッケージリストの更新
ほとんどのシステムは、リモートリポジトリから利用可能なパッケージのローカルデータベースを保持しています。 パッケージをインストールまたはアップグレードする前に、このデータベースを更新することをお勧めします。 このパターンの部分的な例外として、dnf
は一部の操作を実行する前に更新をチェックしますが、更新が利用可能かどうかはいつでも確認できます。
- Debian / Ubuntu の場合:
sudo apt update
- Rocky / Fedora / RHEL の場合:
dnf check-update
- FreeBSDパッケージの場合:
sudo pkg update
- FreeBSDポートの場合:
sudo portsnap fetch update
インストールされたパッケージをアップグレードする
マシンにインストールされているすべてのソフトウェアを最新の状態に保つことは、パッケージシステムがなければ大変な作業になります。 何百もの異なるパッケージのアップストリームの変更とセキュリティアラートを追跡する必要があります。 パッケージマネージャーは、ソフトウェアをアップグレードするときに発生するすべての問題を解決するわけではありませんが、いくつかのコマンドでほとんどのシステムコンポーネントを維持することができます。
FreeBSDでは、インストールされているポートをアップグレードすると、重大な変更が発生したり、手動の設定手順が必要になる場合があります。 portmaster
でアップグレードする前に、/usr/ports/UPDATING
を読むことをお勧めします。
- Debian / Ubuntu の場合:
sudo apt upgrade
- Rocky / Fedora / RHEL の場合:
sudo dnf upgrade
- FreeBSDパッケージの場合:
sudo pkg upgrade
パッケージを探す
ほとんどのディストリビューションは、パッケージコレクションにグラフィカルまたはメニュー方式のフロントエンドを提供します。 これらは、カテゴリ別に参照して新しいソフトウェアを見つけるための良い方法です。 ただし、多くの場合、パッケージを見つけるための最も迅速で効果的な方法は、コマンドラインツールを使用して検索することです。
- Debian / Ubuntu の場合:
apt search search_string
- Rocky / Fedora / RHEL の場合:
dnf search search_string
- FreeBSDパッケージの場合:
pkg search search_string
注: Rocky、Fedora、またはRHELでは、dnf search all
を使用してパッケージのタイトルと説明を一緒に検索できます。 FreeBSDでは、pkg search -D
を使用して説明を検索できます。
特定のパッケージに関する情報を表示
インストールするものを決定するときは、パッケージの詳細な説明を読むと役立つことがよくあります。 人間が読めるテキストに加えて、これらには多くの場合、バージョン番号やパッケージの依存関係のリストなどのメタデータが含まれています。
- Debian / Ubuntu の場合:
apt show package
- Rocky / Fedora / RHEL の場合:
dnf info package
- FreeBSDパッケージの場合:
pkg info package
- FreeBSDポートの場合:
cd /usr/ports/category/port && cat pkg-descr
リポジトリからパッケージをインストールする
パッケージの名前がわかれば、通常は1つのコマンドでパッケージとその依存関係をインストールできます。 一般に、すべてをリストすることにより、一度にインストールする複数のパッケージを提供できます。
- Debian / Ubuntu の場合:
sudo apt install package
- Rocky / Fedora / RHEL の場合:
sudo dnf install package
- FreeBSDパッケージの場合:
sudo pkg install package
ローカルファイルシステムからパッケージをインストールする
ソフトウェアが特定のオペレーティングシステム用に正式にパッケージ化されていない場合でも、開発者またはベンダーがダウンロード用のパッケージファイルを提供する場合があります。 これらは通常、Webブラウザーを使用するか、コマンドラインのcurl
を介して取得できます。 パッケージがターゲットシステムに配置されると、多くの場合、1つのコマンドでインストールできます。
Debianから派生したシステムでは、dpkg
は個々のパッケージファイルを処理します。 パッケージに満たされていない依存関係がある場合、gdebi
を使用して、公式リポジトリからそれらを取得できます。
Rocky Linux、Fedora、またはRHELでは、dnf
を使用して個々のファイルをインストールし、必要な依存関係も処理します。
- Debian / Ubuntu の場合:
sudo dpkg -i package.deb
- Rocky / Fedora / RHEL の場合:
sudo dnf install package.rpm
- FreeBSDパッケージの場合:
sudo pkg add package.txz
インストールされている1つ以上のパッケージを削除する
パッケージマネージャーは、特定のパッケージによって提供されるファイルを認識しているため、ソフトウェアが不要になった場合は、通常、システムからそれらをクリーンに削除できます。
- Debian / Ubuntu の場合:
sudo apt remove package
- Rocky / Fedora / RHEL の場合:
sudo dnf erase package
- FreeBSDパッケージの場合:
sudo pkg delete package
助けを得ます
Webベースのドキュメントに加えて、Unixのマニュアルページ(通常は manページと呼ばれます)がシェルからのほとんどのコマンドで利用できることに注意してください。 ページを読むには、man
を使用します。
man page
man
では、矢印キーを使用してナビゲートできます。 / を押してページ内のテキストを検索し、qを押して終了します。
- Debian / Ubuntu の場合:
man apt
- Rocky / Fedora / RHEL の場合:
man dnf
- FreeBSDパッケージの場合:
man pkg
- FreeBSDポートの場合:
man ports
結論と参考文献
このガイドでは、システム間で相互参照できる操作の概要を説明しますが、複雑なトピックのほんの一部にすぎません。 特定のシステムの詳細については、次のリソースを参照してください。