パッケージ管理の基本:apt、yum、dnf、pkg

前書き

最新のUnixライクなオペレーティングシステムは、ソフトウェアを見つけてインストールするための集中メカニズムを提供します。 ソフトウェアは通常、packagesの形式で配布され、repositoriesに保持されます。 パッケージの操作はpackage managementとして知られています。 パッケージは、共有ライブラリ、アプリケーション、サービス、およびドキュメントとともに、オペレーティングシステムの基本コンポーネントを提供します。

パッケージ管理システムは、ソフトウェアの1回限りのインストール以上のことを行います。 また、インストール済みのパッケージをアップグレードするためのツールも提供します。 パッケージリポジトリは、システムで使用するためにコードが吟味されていること、およびソフトウェアのインストールされたバージョンが開発者とパッケージメンテナーによって承認されていることを確認するのに役立ちます。

サーバーまたは開発環境を構成する場合、多くの場合、公式リポジトリを超えて見る必要があります。 ディストリビューションの安定版リリースのパッケージは、特に新しいソフトウェアまたは急速に変化するソフトウェアが懸念される場合、古くなっている可能性があります。 それにもかかわらず、パッケージ管理はシステム管理者および開発者にとって不可欠なスキルであり、主要なディストリビューション用のパッケージ化されたソフトウェアの豊富さは膨大なリソースです。

このガイドは、さまざまなディストリビューションでパッケージを検索、インストール、およびアップグレードするための基本事項のクイックリファレンスとして意図されており、システム間でその知識を翻訳するのに役立ちます。

パッケージ管理システム:簡単な概要

ほとんどのパッケージシステムは、パッケージファイルのコレクションを中心に構築されています。 通常、パッケージファイルは、インストールスクリプトとともに、コンパイルされたバイナリおよびソフトウェアを構成する他のリソースを含むアーカイブです。 パッケージには、dependencies、インストールと実行に必要な他のパッケージのリストなど、貴重なメタデータも含まれています。

機能と利点はほぼ同じですが、パッケージ形式とツールはプラットフォームによって異なります。

オペレーティング・システム フォーマット ツール

Debian

.deb

aptapt-cacheapt-getdpkg

ウブンツ

.deb

aptapt-cacheapt-getdpkg

CentOS

.rpm

yum

フェドラ

.rpm

dnf

FreeBSD

ポート、.txz

makepkg

Debianと、Ubuntu、Linux Mint、Raspbianなどのそれに基づくシステムでは、パッケージ形式は.debファイルです。 APT(Advanced Packaging Tool)は、リポジトリの検索、パッケージのコレクションとその依存関係のインストール、アップグレードの管理など、最も一般的な操作に使用されるコマンドを提供します。 APTコマンドは、ローカルシステムへの個々の.debファイルのインストールを処理する、下位レベルのdpkgユーティリティのフロントエンドとして機能し、直接呼び出されることもあります。

ほとんどのDebian派生ディストリビューションの最近のリリースには、aptコマンドが含まれています。このコマンドは、より具体的なapt-getおよびapt-cacheによって従来処理されてきた一般的な操作への簡潔で統一されたインターフェイスを提供します。 その使用はオプションですが、一部のタスクを簡素化できます。

CentOS、Fedora、およびRed Hatファミリーの他のメンバーはRPMファイルを使用します。 CentOSでは、yumは、個々のパッケージファイルとリポジトリの両方と対話するために使用されます。

Fedoraの最近のバージョンでは、yumdnfに取って代わられました。これは、yumのインターフェースのほとんどを保持する最新のフォークです。

FreeBSDのバイナリパッケージシステムは、pkgコマンドで管理されます。 FreeBSDは、ユーザーがMakefileを使用してソースから直接パッケージを取得、コンパイル、およびインストールできるようにするローカルディレクトリ構造とツールであるPorts Collectionも提供します。 通常はpkgを使用する方がはるかに便利ですが、プリコンパイルされたパッケージが利用できない場合や、コンパイル時のオプションを変更する必要がある場合があります。

パッケージリストの更新

ほとんどのシステムは、リモートリポジトリから利用可能なパッケージのローカルデータベースを保持しています。 パッケージをインストールまたはアップグレードする前に、このデータベースを更新することをお勧めします。 このパターンの部分的な例外として、yumdnfは一部の操作を実行する前に更新を確認しますが、更新が利用可能かどうかはいつでも確認できます。

システム コマンド

Debian / Ubuntu

sudo apt-get update

sudo apt update

CentOS

yum check-update

フェドラ

dnf check-update

FreeBSDパッケージ

sudo pkg update

FreeBSDポート

sudo portsnap fetch update

インストール済みパッケージのアップグレード

マシンにインストールされているすべてのソフトウェアを最新の状態に保つことは、パッケージシステムを使用せずに膨大な作業を行うことです。 数百の異なるパッケージのアップストリームの変更とセキュリティアラートを追跡する必要があります。 パッケージマネージャーは、ソフトウェアのアップグレード時に発生するすべての問題を解決するわけではありませんが、ほとんどのシステムコンポーネントをいくつかのコマンドで保守できます。

FreeBSDでは、インストールされたポートをアップグレードすると、重大な変更が導入されたり、手動の構成手順が必要になる場合があります。 portmasterでアップグレードする前に、/usr/ports/UPDATINGを読むことをお勧めします。

システム コマンド ノート

Debian / Ubuntu

sudo apt-get upgrade

可能な場合は、インストールされたパッケージのみをアップグレードします。

sudo apt-get dist-upgrade

新しい依存関係を満たすためにパッケージを追加または削除できます。

sudo apt upgrade

apt-get upgradeのように。

sudo apt full-upgrade

apt-get dist-upgradeのように。

CentOS

sudo yum update

フェドラ

sudo dnf upgrade

FreeBSDパッケージ

sudo pkg upgrade

FreeBSDポート

less /usr/ports/UPDATING

lessを使用して、ポートの更新メモを表示します(矢印キーを使用してスクロールし、qを押して終了します)。

cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

portmasterをインストールし、それを使用してインストールされたポートを更新します。

パッケージを探す

ほとんどのディストリビューションは、パッケージコレクションにグラフィカルまたはメニュー方式のフロントエンドを提供します。 これらは、カテゴリ別に閲覧し、新しいソフトウェアを発見するための良い方法です。 ただし、多くの場合、パッケージを見つける最も迅速で効果的な方法は、コマンドラインツールで検索することです。

システム コマンド ノート

Debian / Ubuntu

apt-cache search search_string

apt search search_string

CentOS

yum search search_string

yum search all search_string

説明を含むすべてのフィールドを検索します。

フェドラ

dnf search search_string

dnf search all search_string

説明を含むすべてのフィールドを検索します。

FreeBSDパッケージ

pkg search search_string

名前で検索します。

pkg search -f search_string

名前で検索し、完全な説明を返します。

pkg search -D search_string

説明を検索します。

FreeBSDポート

cd /usr/ports && make search name=package

名前で検索します。

cd /usr/ports && make search key=search_string

コメント、説明、および依存関係を検索します。

特定のパッケージに関する情報を表示する

何をインストールするかを決定するとき、パッケージの詳細な説明を読むと役立つことがよくあります。 人間が読めるテキストに加えて、これらには多くの場合、バージョン番号やパッケージの依存関係のリストなどのメタデータが含まれます。

システム コマンド ノート

Debian / Ubuntu

apt-cache show package

パッケージに関するローカルにキャッシュされた情報を表示します。

apt show package

dpkg -s package

パッケージの現在のインストールステータスを表示します。

CentOS

yum info package

yum deplist package

パッケージの依存関係を一覧表示します。

フェドラ

dnf info package

dnf repoquery --requires package

パッケージの依存関係を一覧表示します。

FreeBSDパッケージ

pkg info package

インストールされているパッケージの情報を表示します。

FreeBSDポート

cd /usr/ports/category/port && cat pkg-descr

リポジトリからパッケージをインストールする

パッケージの名前がわかれば、通常は単一のコマンドでパッケージとその依存関係をインストールできます。 一般に、すべてのパッケージをリストするだけで、インストールする複数のパッケージを提供できます。

システム コマンド ノート

Debian / Ubuntu

sudo apt-get install package

sudo apt-get install package1 package2 ...

リストされているすべてのパッケージをインストールします。

sudo apt-get install -y package

aptが通常続行を求めるプロンプトが表示される「はい」を想定します。

sudo apt install package

色付きのプログレスバーを表示します。

CentOS

sudo yum install package

sudo yum install package1 package2 ...

リストされているすべてのパッケージをインストールします。

sudo yum install -y package

yumが通常続行を求めるプロンプトが表示される「はい」を想定します。

フェドラ

sudo dnf install package

sudo dnf install package1 package2 ...

リストされているすべてのパッケージをインストールします。

sudo dnf install -y package

dnfが通常続行を求めるプロンプトが表示される「はい」を想定します。

FreeBSDパッケージ

sudo pkg install package

sudo pkg install package1 package2 ...

リストされているすべてのパッケージをインストールします。

FreeBSDポート

cd /usr/ports/category/port && sudo make install

ソースからポートを構築してインストールします。

ローカルファイルシステムからパッケージをインストールする

ソフトウェアが特定のオペレーティングシステム用に正式にパッケージ化されていない場合でも、開発者またはベンダーがダウンロード用のパッケージファイルを提供することがあります。 これらは通常、Webブラウザーを使用するか、コマンドラインのcurlを介して取得できます。 パッケージがターゲットシステムに配置されると、多くの場合、1つのコマンドでインストールできます。

Debianから派生したシステムでは、dpkgは個々のパッケージファイルを処理します。 パッケージに満たされていない依存関係がある場合、gdebiを使用して公式リポジトリからそれらを取得できます。

CentOSおよびFedoraシステムでは、yumおよびdnfを使用して個々のファイルをインストールし、必要な依存関係も処理します。

システム コマンド ノート

Debian / Ubuntu

sudo dpkg -i package.deb

sudo apt-get install -y gdebi && sudo gdebi package.deb

gdebiをインストールして使用し、package.debをインストールして、欠落している依存関係を取得します。

CentOS

sudo yum install package.rpm

フェドラ

sudo dnf install package.rpm

FreeBSDパッケージ

sudo pkg add package.txz

sudo pkg add -f package.txz

すでにインストールされている場合でも、パッケージをインストールします。

1つ以上のインストール済みパッケージを削除する

パッケージマネージャーは、特定のパッケージによって提供されるファイルを知っているため、ソフトウェアが不要になった場合、通常はシステムからそれらをきれいに削除できます。

システム コマンド ノート

Debian / Ubuntu

sudo apt-get remove package

sudo apt remove package

sudo apt-get autoremove

不要なパッケージを削除します。

CentOS

sudo yum remove package

フェドラ

sudo dnf erase package

FreeBSDパッケージ

sudo pkg delete package

sudo pkg autoremove

不要なパッケージを削除します。

FreeBSDポート

sudo pkg delete package

cd /usr/ports/path_to_port && make deinstall

インストールされているポートを削除します。

aptコマンド

Debianファミリのディストリビューションの管理者は、一般的にapt-getapt-cacheに精通しています。 あまり広く知られていないのは、インタラクティブな使用のために特別に設計された、簡略化されたaptインターフェースです。

従来のコマンド apt相当

apt-get update

apt update

apt-get dist-upgrade

apt full-upgrade

apt-cache search string

apt search string

apt-get install package

apt install package

apt-get remove package

apt remove package

apt-get purge package

apt purge package

aptは多くの場合、特定の操作の省略形ですが、従来のツールを完全に置き換えることを目的としたものではなく、使いやすさを向上させるためにバージョン間でインターフェースが変更される場合があります。 スクリプトまたはシェルパイプライン内でパッケージ管理コマンドを使用している場合は、apt-getapt-cacheを使用することをお勧めします。

助けを得ます

Webベースのドキュメントに加えて、Unixマニュアルページ(通常はman pagesと呼ばれます)がシェルからのほとんどのコマンドで利用できることに注意してください。 ページを読むには、manを使用します。

man page

manでは、矢印キーを使用してナビゲートできます。 /を押してページ内のテキストを検索し、qを押して終了します。

システム コマンド ノート

Debian / Ubuntu

man apt-get

ローカルパッケージデータベースの更新とパッケージの操作。

man apt-cache

ローカルパッケージデータベースのクエリ。

man dpkg

個々のパッケージファイルを操作し、インストールされているパッケージを照会します。

man apt

ほとんどの基本的な操作に対して、より簡潔でユーザーフレンドリーなインターフェースを使用します。

CentOS

man yum

フェドラ

man dnf

FreeBSDパッケージ

man pkg

コンパイル済みのバイナリパッケージの操作。

FreeBSDポート

man ports

PortsCollectionの操作。

結論とさらに読む

このガイドでは、システム間で相互参照できる基本的な操作の概要を説明しますが、複雑なトピックの表面のみをスクラッチします。 特定のシステムの詳細については、次のリソースを参照してください。

Related