序章

パッケージ管理は、Linuxシステムの基本的な機能の1つです。 パッケージ形式とパッケージ管理ツールは配布ごとに異なりますが、ほとんどの配布では2つのコアツールセットのいずれかを使用します。

Red Hat Enterprise Linuxベースのディストリビューション(RHEL自体やRocky Linuxなど)の場合、RPMパッケージ形式と次のようなパッケージツール rpmyum 共通しています。 Debian、Ubuntu、および関連するディストリビューションで使用される他の主要なファミリは、 .deb パッケージ形式と次のようなツール aptdpkg.

近年、コアと並行して実行するように設計された補助パッケージマネージャーが増えています aptdpkg ツール:たとえば、 snap はより多くの移植性とサンドボックスを提供し、macOSから移植された Homebrew は、システムパッケージとの競合を回避するために個々のユーザーがインストールできるコマンドラインツールを提供します。

このガイドでは、システム管理者がDebianおよびUbuntuシステムで使用する最も一般的なパッケージ管理ツールのいくつかを学習します。 これは、これらのシステム内でパッケージ管理タスクを実行する方法を知る必要がある場合のクイックリファレンスとして使用できます。

前提条件

ステップ1-Debianパッケージ管理ツールの概要

Debian / Ubuntuエコシステムは、システム上のソフトウェアを管理するために、かなりの数の異なるパッケージ管理ツールを採用しています。

これらのツールのほとんどは相互に関連しており、同じパッケージデータベースで機能します。 これらのツールの中には、パッケージングシステムに高レベルのインターフェイスを提供しようとするものもありますが、他のユーティリティは低レベルの機能を提供することに集中しています。

apt

The apt コマンドはおそらく最も頻繁に使用されるメンバーです apt パッケージングツールのスイート。 その主な目的は、ディストリビューションのパッケージングチームによって維持されているリモートリポジトリとのインターフェースを取り、利用可能なパッケージに対してアクションを実行することです。

The apt スイートは、リモートリポジトリからローカルシステムで維持されているキャッシュに情報をプルすることにより、一般的に機能します。 The apt コマンドは、ローカルキャッシュを更新するために使用されます。 また、パッケージの状態を変更するためにも使用されます。つまり、システムにパッケージをインストールまたは削除するために使用されます。

一般に、 apt ローカルキャッシュを更新し、ライブシステムに変更を加えるために使用されます。

注:以前のバージョンのUbuntuでは、コア apt コマンドはとして知られていました apt-get. 合理化されていますが、それでも呼び出すことができます apt-get 習慣から、または下位互換性のため。

apt-cache

の別の重要なメンバー apt スイートは apt-cache. このユーティリティは、ローカルキャッシュを使用して、使用可能なパッケージとそのプロパティに関する情報を照会します。

たとえば、特定のパッケージまたは特定の機能を実行するツールを検索する場合はいつでも、 apt-cache 始めるのに良い場所です。 また、手順の対象となる正確なパッケージバージョンについても情報を提供できます。 依存関係と逆依存関係の情報は、別の領域です。 apt-cache 便利です。

dpkg

以前のツールはリポジトリに保持されているパッケージの管理に重点を置いていましたが、 dpkg コマンドを使用して、個人を操作することもできます .deb パッケージ。 The dpkg ツールは、実際には、上記のコマンドの舞台裏での作業のほとんどを担当します。 apt 追加のハウスキーピングを提供します dpkg パッケージ自体と相互作用します。

とは異なり apt コマンド、 dpkg 依存関係を自動的に解決する機能はありません。 主な機能は、 .deb パッケージを直接、およびパッケージを分析してその構造について詳しく知る機能。 システムにインストールされているパッケージに関する情報を収集できますが、プライマリパッケージマネージャーとして使用しないでください。 次のステップでは、パッケージアップグレードのベストプラクティスについて学習します。

ステップ2–パッケージキャッシュとシステムの更新

DebianおよびUbuntuパッケージ管理ツールは、システムの利用可能なパッケージのリストを最新の状態に保つのに役立ちます。 また、サーバーに現在インストールしているパッケージを更新するさまざまな方法も提供します。

ローカルパッケージキャッシュの更新

パッケージングツールがパッケージ情報のために依存しているリモートリポジトリは、常に更新されます。 ただし、ほとんどのLinuxパッケージ管理ツールは、歴史的な理由から、この情報のローカルキャッシュを直接操作するように設計されています。 そのキャッシュは定期的に更新する必要があります。

通常、他のパッケージコマンドを実行する前に、セッションごとにローカルパッケージキャッシュを更新することをお勧めします。 これにより、利用可能なソフトウェアに関する最新情報を確実に操作できるようになります。 古いパッケージ情報で操作している場合、一部のインストールコマンドは失敗します。

ローカルキャッシュを更新するには、 apt とのコマンド update サブコマンド:

  1. sudo apt update

これにより、追跡しているリポジトリで利用可能なパッケージの更新されたリストが取得されます。

パッケージの更新

The apt コマンドは、2つの異なる更新手順を区別します。 最初の更新手順(このセクションで説明)を使用して、コンポーネントの削除を必要としないコンポーネントをアップグレードできます。 更新して許可する方法を学ぶ apt 必要に応じてコンポーネントを削除および交換するには、以下のセクションを参照してください。

これは、どのような状況でもインストールされているパッケージを削除したくない場合に非常に重要になる可能性があります。 ただし、一部の更新には、システムコンポーネントの交換、または競合するファイルの削除が含まれます。 この手順では、パッケージの削除が必要な更新はすべて無視されます。

  1. sudo apt upgrade

2番目の手順では、パッケージの削除が必要なパッケージも含め、すべてのパッケージが更新されます。 これは、パッケージの依存関係が変更されるときに必要になることがよくあります。

通常、削除されるパッケージは、アップグレード手順中に同等の機能に置き換えられるため、これは一般的に安全です。 ただし、一部の重要なコンポーネントに削除のマークが付けられている場合に備えて、削除するパッケージを監視することをお勧めします。 このアクションを実行するには、次のように入力します。

  1. sudo apt full-upgrade

これにより、システム上のすべてのパッケージが更新されます。 次のステップでは、新しいパッケージのダウンロードとインストールについて学習します。

ステップ3–パッケージのダウンロードとインストール

パッケージを検索する

パッケージをダウンロードしてインストールするときの最初のステップは、多くの場合、ディストリビューションのリポジトリで探しているパッケージを検索することです。

パッケージの検索は、情報のパッケージキャッシュを対象とする1つの操作です。 これを行うには、 apt-cache search. ローカルキャッシュが最新のものであることを確認する必要があることに注意してください。 sudo apt update パッケージを検索する前に:

  1. apt-cache search package

この手順は情報を照会するだけなので、必要ありません。 sudo 特権。 実行される検索では、パッケージ名とパッケージの完全な説明が表示されます。

たとえば、 htop、次のような結果が表示されます。

  1. apt-cache search htop
Output
aha - ANSI color to HTML converter htop - interactive processes viewer libauthen-oath-perl - Perl module for OATH One Time Passwords

ご覧のとおり、次の名前のパッケージがあります htop、しかし、あなたはまた、それぞれが言及している他の2つのプログラムを見ることができます htop パッケージの完全な説明フィールド(出力の横の説明は短い要約にすぎません)。

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

リポジトリからパッケージをインストールするには、および必要なすべての依存関係を使用して、 apt とのコマンド install 口論。

このコマンドの引数は、リポジトリでラベル付けされている1つまたは複数のパッケージ名である必要があります。

  1. sudo apt install package

スペースで区切って、一度に複数のパッケージをインストールできます。

  1. sudo apt install package1 package2

要求されたパッケージに追加の依存関係が必要な場合、これらは標準出力に出力され、手順を確認するように求められます。 次のようになります。

  1. sudo apt install apache2
Output
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]?

ご覧のとおり、インストールターゲットは apache2 パッケージ、 apache2-data パッケージは依存関係として必要です。 この場合、Enterキーまたは「Y」を押して続行するか、「n」を入力してキャンセルできます。

リポジトリから特定のパッケージバージョンをインストールする

パッケージの特定のバージョンをインストールする必要がある場合は、ターゲットにするバージョンを提供できます =、 このような:

sudo apt install package=version

この場合のバージョンは、リポジトリで使用可能なパッケージバージョン番号の1つと一致する必要があります。 これは、ディストリビューションで採用されているバージョン管理スキームを利用することを意味します。 を使用して利用可能なバージョンを見つけることができます apt-cache policy package:

  1. apt-cache policy nginx
Output
nginx: Installed: (none) Candidate: 1.18.0-0ubuntu1.2 Version table: 1.18.0-0ubuntu1.2 500 500 http://mirrors.digitalocean.com/ubuntu focal-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages 1.17.10-0ubuntu1 500 500 http://mirrors.digitalocean.com/ubuntu focal/main amd64 Packages

パッケージを再構成する

多くのパッケージには、インストールの完了後に自動的に実行されるインストール後の構成スクリプトが含まれています。 多くの場合、これらには、管理者が構成を選択するためのプロンプトが含まれます。

後でこれらの(および追加の)構成手順を実行する必要がある場合は、 dpkg-reconfigure 指図。 このコマンドは、渡されたパッケージを調べ、パッケージ仕様に含まれている構成後のコマンドを再実行します。

  1. sudo dpkg-reconfigure package

これにより、インストール時に実行したのと同じ(多くの場合はそれ以上の)プロンプトにアクセスできるようになります。

パッケージアクションのドライランを実行する

多くの場合、実際にコマンドの実行を確約せずに、プロシージャの副作用を確認する必要があります。 apt 追加することができます -s 手順を「シミュレート」するフラグ。

たとえば、パッケージのインストールを選択した場合に何が行われるかを確認するには、次のように入力します。

  1. apt install -s package

これにより、すべての依存関係と、削除した場合に発生するシステムへの変更を確認できます。 -s 国旗。 これの利点の1つは、通常はroot権限を必要とするプロセスの結果を、使用せずに表示できることです。 sudo.

たとえば、で何がインストールされるかを評価したい場合 apache2 パッケージ、次のように入力できます。

  1. apt install -s apache2
Output
NOTE: This is only a simulation! apt needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])

実際のプロセスを完了することなく、インストールされるパッケージとバージョンに関するすべての情報を取得できます。

これは、システムのアップグレードなど、他の手順でも機能します。

  1. apt -s dist-upgrade

デフォルトでは、 apt 多くのプロセスの確認をユーザーに求めます。 これには、追加の依存関係を必要とするインストール、およびパッケージのアップグレードが含まれます。

これらのアップグレードをバイパスし、デフォルトでこれらのプロンプトのいずれかを受け入れるために、 -y これらの操作を実行するときのフラグ:

  1. sudo apt install -y package

これにより、ユーザーからのプロンプトなしでパッケージと依存関係がインストールされます。 これは、アップグレード手順にも使用できます。

  1. sudo apt dist-upgrade -y

壊れた依存関係とパッケージを修正する

依存関係やその他の問題により、インストールが正常に終了しない場合があります。 これが発生する可能性のある一般的なシナリオの1つは、 .deb とのパッケージ dpkg、依存関係を解決しません。

The apt コマンドは、それを渡すことによってこの状況を整理しようとすることができます -f 指図。

  1. sudo apt install -f

これにより、満たされていない依存関係が検索され、それらをインストールして依存関係ツリーを修正しようとします。 インストールで依存関係の問題について不満が出た場合は、これが問題を解決するための最初のステップになります。 この方法で問題を解決できず、サードパーティのパッケージをインストールした場合は、それを削除して、より積極的に保守されている新しいバージョンを探す必要があります。

リポジトリからパッケージをダウンロード

実際にインストールせずにリポジトリからパッケージをダウンロードすると役立つ場合があります。 あなたは実行することによってこれを行うことができます apt とともに download 口論。

これはファイルをダウンロードするだけであり、実際のシステムには影響を与えないため、 sudo 特権が必要です:

  1. apt download package

これにより、指定したパッケージが現在のディレクトリにダウンロードされます。

.debパッケージをインストールする

ほとんどのディストリビューションは、維持されているリポジトリからソフトウェアをインストールすることを推奨していますが、一部のベンダーは生で提供しています .deb システムにインストールできるファイル。

これを行うには、 dpkg. dpkg 主に個々のパッケージを操作するために使用されます。 リポジトリからのインストールを実行しようとせず、代わりに検索します .deb 現在のディレクトリ内のパッケージ、または指定されたパス:

  1. sudo dpkg --install debfile.deb

に注意することが重要です dpkg ツールは依存関係の処理を実装していません。 これは、満たされていない依存関係がある場合、インストールが失敗することを意味します。 ただし、必要な依存関係をマークするため、すべての依存関係がリポジトリ内で使用可能な場合は、後で次のように入力することでそれらを満たすことができます。

  1. sudo apt install -f

これにより、によってマークされたものを含む、満たされていない依存関係がインストールされます dpkg. 次のステップでは、インストールしたパッケージの一部を削除する方法について学習します。

ステップ4–パッケージの削除とファイルの削除

このセクションでは、パッケージをアンインストールし、パッケージ操作によって残された可能性のあるファイルをクリーンアップする方法について説明します。

パッケージをアンインストールします

インストールされているパッケージを削除するには、 apt remove. これにより、1つの注目すべき例外を除いて、パッケージがシステムにインストールしたほとんどのファイルが削除されます。

このコマンドは、構成ファイルをそのまま残して、後日アプリケーションを再インストールする必要がある場合に構成を引き続き使用できるようにします。 これは、誤ってパッケージを削除した場合に、カスタマイズした構成ファイルが削除されないことを意味するため、便利です。

この操作を完了するには、アンインストールするパッケージの名前を指定する必要があります。

  1. sudo apt remove package

パッケージは、構成ファイルを除いてアンインストールされます。

パッケージと関連するすべての構成ファイルをアンインストールします

パッケージと、構成ファイルを含むすべての関連ファイルをシステムから削除する場合は、次を使用できます。 apt purge.

とは異なり remove 上記のコマンド、 purge コマンドはすべてを削除します。 これは、構成ファイルを保存したくない場合、または問題が発生していて、きれいな状態から始めたい場合に役立ちます。

構成ファイルを削除すると、元に戻すことはできなくなりますのでご注意ください。

  1. sudo apt purge package

これで、そのパッケージを再インストールする必要がある場合は、デフォルトの構成が使用されます。

不要になった自動依存関係を削除します

を使用してシステムからパッケージを削除する場合 apt remove また apt purge、パッケージターゲットが削除されます。 ただし、インストール要件を満たすために自動的にインストールされた依存関係は残ります。

パッケージで不要になった依存関係としてインストールされたパッケージを自動的に削除するには、 autoremove 指図:

  1. sudo apt autoremove

削除する依存関係から関連するすべての構成ファイルを削除する場合は、 --purge オプション autoremove 指図。 これにより、構成ファイルもクリーンアップされます。 purge コマンドはターゲットを削除するために行います:

  1. sudo apt --purge autoremove

廃止されたパッケージファイルをクリーンアップする

パッケージは、ディストリビューションのパッケージメンテナによってリポジトリに追加および削除されるため、一部のパッケージは廃止されます。

The apt ツールは、を使用して、リポジトリから使用できなくなったパッケージに関連付けられているローカルシステム上のパッケージファイルを削除できます。 autoclean 指図。

これにより、サーバーのスペースが解放され、古い可能性のあるパッケージがローカルキャッシュから削除されます。

  1. sudo apt autoclean

次のステップでは、必ずしもインストールせずにパッケージをクエリする方法について学習します。

ステップ5–パッケージに関する情報を取得する

各パッケージには、パッケージ管理ツールを使用してアクセスできる大量のメタデータが含まれています。 このセクションでは、利用可能でインストールされているパッケージに関する情報を取得するためのいくつかの一般的な方法を示します。

ディストリビューションのリポジトリ内のパッケージに関する詳細情報を表示するには、 apt-cache show. このコマンドのターゲットは、リポジトリ内のパッケージ名です。

  1. apt-cache show nginx

これにより、問題のパッケージのインストール候補に関する情報が表示されます。 各候補者は、その依存関係、バージョン、アーキテクチャ、競合、実際のパッケージファイル名、パッケージのサイズとインストール、および特に詳細な説明に関する情報を持っています。

Output
Package: nginx Architecture: all Version: 1.18.0-0ubuntu1.2 Priority: optional Section: web Origin: Ubuntu Maintainer: Ubuntu Developers <[email protected]> Original-Maintainer: Debian Nginx Maintainers <[email protected]> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 44 Depends: nginx-core (<< 1.18.0-0ubuntu1.2.1~) | nginx-full (<< 1.18.0-0ubuntu1.2.1~) | nginx-light (<< 1.18.0-0ubuntu1.2.1~) | nginx-extras (<< 1.18.0-0ubuntu1.2.1~), nginx-core (>= 1.18.0-0ubuntu1.2) | nginx-full (>= 1.18.0-0ubuntu1.2) | nginx-light (>= 1.18.0-0ubuntu1.2) | nginx-extras (>= 1.18.0-0ubuntu1.2) Filename: pool/main/n/nginx/nginx_1.18.0-0ubuntu1.2_all.deb …

逆依存関係の完全なリスト(照会されたパッケージに依存するパッケージのリスト)など、各候補に関する追加情報を表示するには、 showpkg 代わりにコマンド。 これには、このパッケージと他のパッケージとの関係に関する情報が含まれます。

  1. apt-cache showpkg package

.debパッケージに関する情報を表示する

詳細を表示するには .deb ファイル、あなたは使用することができます --info フラグ dpkg 指図。 このコマンドのターゲットは、 .deb ファイル:

  1. dpkg --info debfile.deb

これにより、問題のパッケージに関するメタデータが表示されます。 これには、パッケージ名とバージョン、それが構築されたアーキテクチャ、必要なサイズと依存関係、説明と競合が含まれます。

依存関係(このパッケージが依存するパッケージ)と逆の依存関係(このパッケージに依存するパッケージ)を具体的に一覧表示するには、 apt-cache 効用。

従来の依存関係情報については、 depends サブコマンド:

  1. apt-cache depends nginx
Output
nginx |Depends: nginx-core |Depends: nginx-full |Depends: nginx-light Depends: nginx-extras |Depends: nginx-core |Depends: nginx-full |Depends: nginx-light Depends: nginx-extras

これにより、ハード依存、提案、推奨、または競合としてリストされているすべてのパッケージに関する情報が表示されます。

どのパッケージが特定のパッケージに依存しているかを調べる必要がある場合は、そのパッケージをに渡すことができます apt-cache rdepends:

  1. apt-cache rdepends package

インストール済みおよび利用可能なパッケージバージョンを表示する

多くの場合、リポジトリ内には複数のバージョンのパッケージがあり、デフォルトのパッケージは1つです。 使用できるパッケージの利用可能なバージョンを確認するには apt-cache policy:

  1. apt-cache policy package

これにより、インストールされているバージョン(存在する場合)、インストールコマンドでバージョンを指定しない場合にデフォルトでインストールされるパッケージ、および各バージョンの優先度を示す重みが付いたパッケージバージョンのテーブルが表示されます。

これを使用して、インストールするバージョンと使用可能な代替手段を決定できます。 これには、各バージョンが配置されているリポジトリもリストされるため、これを使用して、デフォルトのリポジトリのパッケージに取って代わる追加のリポジトリがあるかどうかを判断できます。

インストールされているパッケージをdpkg-lで表示する

システムにインストールされているパッケージを表示するために、出力の形式と詳細度が異なるいくつかの個別のオプションがあります。

最初の方法では、次のいずれかを使用します。 dpkg または dpkg-query とのコマンド -l 国旗。 これらのコマンドの両方からの出力は同じです。 引数なしで、システムにインストールされている、または部分的にインストールされているすべてのパッケージのリストが表示されます。 出力は次のようになります。

  1. dpkg -l
Output
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===========================================-=======================================-============-===================================================================================================================== ii account-plugin-generic-oauth 0.10bzr13.03.26-0ubuntu1.1 amd64 GNOME Control Center account plugin for single signon - generic OAuth ii accountsservice 0.6.34-0ubuntu6 amd64 query and manipulate user account information ii acl 2.2.52-1 amd64 Access control list utilities ii acpi-support 0.142 amd64 scripts for handling many ACPI events ii acpid 1:2.0.18-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon . . .

出力は、システム上のすべてのパッケージに対して続行されます。 出力の上部に、各行の最初の3文字の意味が表示されます。 最初の文字は、パッケージの望ましい状態を示します。 かもね:

  • u :不明
  • i :インストール済み
  • r :削除されました
  • p :パージされました
  • h :保持されているバージョン

2番目の文字は、パッケージングシステムに認識されているパッケージの実際のステータスを示します。 これらは次のようになります。

  • n :インストールされていません
  • i :インストール済み
  • c :構成ファイルは存在しますが、アプリケーションはアンインストールされています。
  • u :開梱。 ファイルは解凍されますが、まだ構成されていません。
  • f :パッケージが半分インストールされています。つまり、インストールの途中で障害が発生し、操作が停止しました。
  • w :パッケージは別のパッケージからのトリガーを待機しています
  • p :パッケージは別のパッケージによってトリガーされました。

ほとんどのパッケージでは空白になる3番目の文字には、他に1つの選択肢しかありません。

  • r :これは再インストールが必要であることを示します。 これは通常、パッケージが壊れていて機能していない状態にあることを意味します。

残りの列には、パッケージ名、バージョン、アーキテクチャ、および説明が含まれています。

フィルタリングされたパッケージのインストール状態を表示する

後に検索パターンを追加した場合 -l パターン、 dpkg そのパターンを含むすべてのパッケージ(インストールされているかどうかに関係なく)が一覧表示されます。 たとえば、ここでYAML処理ライブラリを検索できます。

  1. dpkg -l libyaml*
Output
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============-============-============-=================================== ii libyaml-0-2:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li ii libyaml-dev:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li un libyaml-perl <none> (no description available) un libyaml-syck-pe <none> (no description available) ii libyaml-tiny-pe 1.51-2 all Perl module for reading and writing

最初の列からわかるように、3番目と4番目の結果はインストールされていません。 これにより、パターンに一致するすべてのパッケージと、それらの現在の状態および望ましい状態が得られます。

システムにインストールされているパッケージをレンダリングする別の方法は、 dpkg –get-selections.

これにより、インストールまたは削除されたがパージされていないすべてのパッケージのリストが表示されます。

  1. dpkg --get-selections

これらの2つの状態を区別するために、 dpkgawk 状態でフィルタリングするため。 インストールされているパッケージのみを表示するには、次のように入力します。

  1. dpkg --get-selections | awk '$2 ~ /^install/'

構成ファイルが削除されていない削除済みパッケージのリストを取得するには、代わりに次のように入力します。

  1. dpkg --get-selections | awk '$2 !~ /^install/'

また、awkを介したpipingコマンドの出力について詳しく知ることもできます。

インストールされているパッケージを検索する

インストールされているパッケージベースで特定のパッケージを検索するには、の後にパッケージフィルター文字列を追加します。 --get-selections オプション。 これは、ワイルドカードとの照合をサポートします。 繰り返しになりますが、これにより、インストールされているパッケージ、またはシステムに構成ファイルが残っているパッケージが表示されます。

  1. dpkg --get-selections libz*

もう一度、を使用してフィルタリングできます awk 前のセクションの式。

パッケージによってインストールされたファイルのリスト

パッケージが担当するファイルを見つけるには、 -L フラグ dpkg 指図:

  1. dpkg -L package

これにより、パッケージによって制御される各ファイルの絶対パスが出力されます。 これには、パッケージ内のプロセスによって生成される構成ファイルは含まれません。

ファイルシステム内の特定のファイルを担当しているパッケージを見つけるには、絶対パスを dpkg とのコマンド -S 国旗。

これにより、問題のファイルをインストールしたパッケージが印刷されます。

  1. dpkg -S /path/to/file

インストール後のスクリプトによって所定の位置に移動されたファイルは、この手法ではパッケージに結び付けられないことに注意してください。

インストールせずにファイルを提供するパッケージを見つける

使用する dpkg、を使用して、どのパッケージがファイルを所有しているかを確認できます。 -S オプション。 ただし、関連するパッケージがインストールされていない場合でも、ファイルまたはコマンドを提供するパッケージを知る必要がある場合があります。

そのためには、というユーティリティをインストールする必要があります apt-file. これにより、データベース内のパッケージによって制御されるすべてのファイルのインストールパスを含む、独自の情報データベースが維持されます。

をインストールします apt-file 通常どおりのパッケージ:

  1. sudo apt update
  2. sudo apt install apt-file

次に、ツールのデータベースを更新し、次のように入力してファイルを検索します。

  1. sudo apt-file update
  2. sudo apt-file search /path/to/file

これは、パッケージによって直接インストールされたファイルの場所でのみ機能します。 インストール後のスクリプトで作成されたファイルはクエリできません。 次のステップでは、インストールされているパッケージのリストをインポートおよびエクスポートする方法を学習します。

ステップ6–システム間でのパッケージリストの転送

多くの場合、あるシステムからインストールされたパッケージのリストをバックアップし、それを使用して別のシステムに同じパッケージのセットをインストールする必要があります。 これは、バックアップの目的にも役立ちます。 このセクションでは、パッケージリストをエクスポートおよびインポートする方法について説明します。

あるシステムにインストールされているパッケージのセットを別のシステムに複製する必要がある場合は、最初にパッケージリストをエクスポートする必要があります。

の出力をリダイレクトすることにより、インストールされているパッケージのリストをファイルにエクスポートできます。 dpkg --get-selections テキストファイルへ:

  1. dpkg --get-selections > ~/packagelist.txt

入力および出力リダイレクトについても詳しく知ることができます。

次に、このリストを2番目のマシンにコピーしてインポートできます。

また、ソースリストと信頼できるキーリストをバックアップする必要がある場合もあります。 新しいディレクトリを作成し、システム構成からそれらをコピーすることで、ソースをバックアップできます。 /etc/apt/:

  1. mkdir ~/sources
  2. cp -R /etc/apt/sources.list* ~/sources

サードパーティのリポジトリからパッケージをインストールするために追加したキーは、次を使用してエクスポートできます。 apt-key exportall:

  1. apt-key exportall > ~/trusted_keys.txt

これで、 packagelist.txt ファイル、 sources ディレクトリ、および trusted_keys.txt インポートする別のコンピュータにファイルします。

パッケージリストのインポート

を使用してパッケージリストを作成した場合 dpkg --get-selections 上に示したように、を使用して別のコンピューターにパッケージをインポートできます。 dpkg コマンドも。

まず、信頼できるキーを追加し、最初の環境からコピーしたソースリストを実装する必要があります。 バックアップしたすべてのデータが新しいコンピューターのホームディレクトリにコピーされていると仮定すると、次のように入力できます。

  1. sudo apt-key add ~/trusted_keys.txt
  2. sudo cp -R ~sources/* /etc/apt/

次に、新しいコンピューターからすべての必須ではないパッケージの状態をクリアします。 これにより、変更をきれいな状態に確実に適用できます。 これは、rootアカウントまたは sudo 特権:

  1. sudo dpkg --clear-selections

これにより、必須ではないすべてのパッケージが削除対象としてマークされます。 インストールする予定のすべてのソフトウェアのレコードがインストールに含まれるように、ローカルパッケージリストを更新する必要があります。 実際のインストールとアップグレードの手順は、と呼ばれるツールによって処理されます dselect.

次のことを確認する必要があります dselect ツールがインストールされています。 このツールは独自のデータベースを維持しているため、続行する前にデータベースを更新する必要もあります。

  1. sudo apt update
  2. sudo apt install dselect
  3. sudo dselect update

次に、現在のリストの上にパッケージリストを適用して、保持またはダウンロードするパッケージを構成できます。

  1. sudo dpkg --set-selections < packagelist.txt

これにより、正しいパッケージ状態が設定されます。 変更を適用するには、 apt dselect-upgrade:

  1. sudo apt dselect-upgrade

これにより、必要なパッケージがダウンロードおよびインストールされます。 また、選択解除のマークが付けられたパッケージもすべて削除されます。 最終的に、パッケージリストは以前のコンピューターのリストと一致する必要がありますが、構成ファイルは引き続きコピーまたは変更する必要があります。 etckeeper などのツールを使用して、から構成ファイルを移行することをお勧めします。 /etc ディレクトリ。

次の最後のステップでは、サードパーティのパッケージリポジトリの操作について学習します。

ステップ7–リポジトリとPPAの追加

ほとんどのディストリビューションで提供されるデフォルトのリポジトリセットは、一般的に最も保守しやすいものですが、追加のソースが役立つ場合があります。 このセクションでは、追加のソースを参照するようにパッケージツールを構成する方法を学習します。

Ubuntuの従来のリポジトリの代わりに、PPA、またはp個人用pパッケージaアーカイブがあります。 他のLinuxフレーバーは通常、サードパーティリポジトリの異なるが類似した概念を使用します。 通常、PPAのスコープはリポジトリよりも小さく、PPA所有者が管理する集中的なアプリケーションのセットが含まれています。

システムにPPAを追加すると、通常のパッケージ管理ツールを使用して、PPAに含まれるパッケージを管理できます。 これを使用して、ディストリビューションのリポジトリに含まれていない最新のパッケージを提供できます。 非標準のメンテナがシステムのパッケージをビルドすることを許可するため、信頼できるPPAのみを追加するように注意してください。

PPAを追加するには、 add-apt-repository 指図。 ターゲットにはラベルを含める必要があります ppa: Launchpad のPPA所有者の名前、スラッシュ、およびPPA名が続きます。

  1. sudo add-apt-repository ppa:owner_name/ppa_name

パッケージャのキーを受け入れるように求められる場合があります。 その後、PPAがシステムに追加され、通常のパッケージをインストールできるようになります apt コマンド。 パッケージを検索またはインストールする前に、新しいPPAに関する情報でローカルキャッシュを更新してください。

  1. sudo apt update

リポジトリ構成を直接編集することもできます。 あなたはどちらかを編集することができます /etc/apt/sources.list ファイルを作成するか、新しいリストを /etc/apt/sources.list.d ディレクトリ。 この後者のルートを使用する場合、作成するファイル名はで終わる必要があります .list:

  1. sudo nano /etc/apt/sources.list.d/new_repo.list

ファイル内で、次の形式を使用して新しいリポジトリの場所を追加できます。

/etc/apt/sources.list.d/new_repo.list
deb_or_deb-src url_of_repo release_code_name_or_suite component_names

リポジトリ仕様のさまざまな部分は次のとおりです。

  • debまたはdeb-src:これはリポジトリのタイプを識別します。 従来のリポジトリはでマークされています deb、ソースリポジトリはで始まります deb-src.
  • url :リポジトリのメインURL。 これは、リポジトリを見つけることができる場所である必要があります。
  • リリースコード名またはスイート:これは通常、ディストリビューションのリリースのコード名ですが、ディストリビューションのバージョン用に作成された特定のパッケージセットを識別するために使用される任意の名前にすることができます。
  • コンポーネント名:使用可能にしたいパッケージを選択するためのラベル。 これは多くの場合、リポジトリのメンテナが、そこに含まれるソフトウェアの信頼性やライセンスの制限について何かを表現するために提供する区別です。

これらの行をファイル内に追加できます。 ほとんどのリポジトリには、使用する必要のある正確な形式に関する情報が含まれています。 他の一部のLinuxディストリビューションでは、そのリポジトリの構成ファイルのみを含むパッケージを実際にインストールすることで、リポジトリソースを追加できます。これは、パッケージマネージャーが機能するように設計されている方法と一致しています。

結論

パッケージ管理は、おそらくLinuxシステムを管理する上で最も重要な側面の1つです。 実行できるパッケージ管理操作は他にもたくさんありますが、このチュートリアルでは、Ubuntuの基本のベースラインを提供しており、その多くは、マイナーな変更を加えて他のディストリビューションに一般化できます。

次に、他のプラットフォームでのパッケージ管理について詳しく知りたいと思うかもしれません。