GNU/Linux >> Linux の 問題 >  >> Linux

Linux上のAPTパッケージマネージャーの説明

システム管理者として、インストールの方法を知っている 、更新 またはLinuxパッケージを削除 Linuxのホストとサーバーを維持するために重要です。

更新が必要になる場合があります サーバーの最新のセキュリティパッチを取得するための現在のパッケージ。

一方、アプリケーションチームが開発した新しいWebサイトを展開するには、HTTPWebサーバー全体をセットアップする必要がある場合があります。

場合によっては、新しいソフトウェアをテストして、ニーズに合っているかどうかを確認し、後でパッケージをアンインストールすることもできます。

結果として、Linuxパッケージの管理方法を知ることは非常に重要です

このチュートリアルでは、APTパッケージマネージャーを使用したLinuxパッケージ管理に焦点を当てます。

まず、オープンソースソフトウェアの起源について少し歴史を振り返ります。 Linuxパッケージの基本を理解するために。

後で、 APTにもう少し焦点を当てます。 ( Advanced Package Tool )そして、カスタムインストールを行うために独自のプログラムをコンパイルする方法を確認します。

準備はいいですか?

何を学ぶか

このチュートリアルを読むことで、次のテーマについて学ぶことができます。

  • GNU / Linux プロジェクトと自由ソフトウェアの起源;
  • どのようにプログラムインストール Linux上で設計されており、Windowsホストとの違い。
  • どのソフトウェアリポジトリ 発生する可能性のあるさまざまなリポジトリタイプは何ですか。
  • APTキャッシュ 完全ガイド:キャッシュを更新する方法とシステム上のプログラムを探す方法;
  • APTは詳細なコマンドを取得します :Linuxパッケージを適切にインストールおよび削除する方法;

これは長いプログラムなので、これ以上面倒なことはせずに、すぐに始めましょう。

GNU/Linuxの起源の説明

Linuxでパッケージをインストールおよびアンインストールする方法を詳しく説明する前に、GNUとLinuxとは何かについていくつかの基本を理解することが非常に重要です。

Linuxについて議論するとき、Linuxをオペレーティングシステムと呼ぶことは非常に一般的ですが、完全に真実ではありません

Linuxオペレーティングシステムを指すときは、実際にはGNU/Linuxオペレーティングシステムを指します。

GNUとは何ですか?

GNU (「 GNU NotUnix」の略 「)はオペレーティングシステムです 自分で簡単に入手、配布、変更できる無料のソフトウェアを提供するように設計されています。

今日、Unix(または少なくともGNU)を無料のオペレーティングシステムと考えることは非常に人気がありますが、常にそうであるとは限りません。

たとえば、「 uname」を実行する場合 システムで「-o」オプション(オペレーティングシステムの場合)を指定して「」コマンドを実行すると、おそらくGNU /LinuxOSを実行していることがわかります。

$ uname -o

おもしろい

Unixの初期の頃、Unixオペレーティングシステムは無料のオープンソースソフトウェアではありませんでした。IBM、HP、AT&Tなどの企業がビジネスニーズのために開発したものです。

しかし、著作権で保護されたソフトウェアとライセンスされたディストリビューションの台頭を考慮して、MITの研究者であるRichard Stallmanは、UNIXの代替手段であるGNUを開発することを決定しました。

GNUは、Unixオペレーティングシステムとの下位互換性のあるオープンソースオペレーティングシステムとして設計されました。

GNUオペレーティングシステムでは、コマンド(「ls」、「cat」、「gcc」など)は完全にオープンソースです。

さらに、GNUは「自由ソフトウェア」と定義されていますが、私たちはお金について話しているのです。 ?

自由ソフトウェアの説明

前に説明したように、GNUは自由ソフトウェアであると自称しています。 。

しかし、「自由」ソフトウェアは文字通りお金を指すのではなく、基本的な自由を指します。 それはGNUの中核です:

  • 必要に応じてプログラムを実行する自由 、達成しようとしている目的が何であれ、
  • プログラムを変更する自由 、プログラムのソースコードへの完全なアクセスを事前調整します。
  • コピーを再配布する自由 あなたの隣人を助けるために;
  • 変更を世界に共有する :この方法では、自分の変更に限定されることはありませんが、世界中の何千もの開発者を支援できます。

これらの基本的な自由は、コピーレフトの概念と結びついています。 。

コアルール自体に干渉しない限り、この基本ルールのセットに特定のルールを追加できます。

たとえば、オープンソースコードを取得して変更し、エンドユーザーにソースコードを提供せずに販売することは違法です。

これは、コード自体を販売することが禁止されていないことを意味するため、重要なステートメントです。エンドユーザーが基本的な権利を侵害することを防ぐことは違法です。

結果として、GNUはこれらの基本的な自由のルールを定義するだけでなく、それらの権利がソフトウェアの後続のすべてのバージョンに広がることも保証します。

この文脈で、著作権で保護されたコンテンツを処理するために、 GPLライセンス(GNU General Public License) 作成されました。

GPLライセンスは、自由ソフトウェア専用のさまざまな固有のルールを集約し、ライセンス違反を定義するのに役立ちます。完全なGPLFAQはこのページにあります。

GNUパッケージへのアクセス

おそらくすでにご存知のように、GNUパッケージは共有されるように設計されたパッケージです。 、変更 および実行 どこでも、どんな目的でも。

このコンテキストでは、GNUパッケージはGNUWebサイトから直接アクセスできます。

GNU公式ウェブサイトのソフトウェアページにアクセスすると、利用可能なGNUパッケージの全リストを見ることができます。

ご覧のとおり、これは非常に長いパッケージのリストです。

最も人気のあるパッケージの1つはcore-utilsパッケージで、「 ls」などの最も人気のあるLinuxコマンドを提供します。 「、「 」または「検索 「。

そして、それらのコマンドは自由に変更して実行できます!

これらのパッケージはすべて、GNU / Linuxオペレーティングシステムをインストールするたびに提供されますが、サードパーティのソフトウェアをインストールする場合はどうでしょうか。

そのために、Linuxは私たちがソフトウェアリポジトリと呼ぶものと通信するように設計されています。

Linuxソフトウェアリポジトリとは何ですか?

Linuxソフトウェアリポジトリについて説明する前に、Linuxパッケージングシステムがどのように設計されているかについてある程度の背景を知ることが非常に重要です。

Window環境を使用している場合は、インターネットから実行可能ファイル(.exe)をダウンロードし、インストールウィザードを開いて、[次へ]を数回クリックしてプログラムをインストールします。

Linuxでは、これは当てはまりません。

Linuxでは、パッケージはパッケージマネージャーによってオンラインリポジトリからダウンロードおよびインストールされます。

Linux上のAPTパッケージマネージャー

Debianベースのディストリビューションでは、パッケージはAPTパッケージマネージャーを介してダウンロードされます。

パッケージを参照するときは、基本的に、dpkgユーティリティがプログラムをインストールするために使用する複数のdebファイルを含むアーカイブファイルを扱います。

では、なぜAPTが必要なのですか?

Advanced Package Manageの略であるAPTは、システムからのパッケージのダウンロード、インストール、更新、および削除を担当します。

しかし、なぜそのためのパッケージマネージャーが必要なのですか?

自分でプログラムをインストールできませんでしたか?

パッケージはパッケージの依存関係によって結び付けられているため、難しいでしょう。

パッケージの依存関係の概念

Linux上のVIMエディターを例にとってみましょう。

Debianディストリビューションを使用している場合は、DebianリポジトリのVIMページがここにあります。

ここで、この特定のパッケージに関する情報を見つけることができます。提供する機能、作成者、最も重要なのは、パッケージが依存するパッケージです。

Linuxでは、ほとんどのパッケージは「純粋な」パッケージとして提供されません。実際のプログラムにサードパーティの機能を提供するために、さまざまなパッケージに依存しています。

ページをスクロールするとわかるように、VIMパッケージは他の多くのパッケージに依存しています。

ここでわかるように、依存関係は4つの異なるカテゴリに分けられます:

  • 依存 :名前が示すように、この依存関係はプログラムを実行するために必要です。これがないと、プログラムをまったく開始できません。
  • 推奨 :この依存関係がなければ、プログラムは実行できますが、このツールが提供するように設計されているすべての機能を提供することはできません。
  • 提案 :この依存関係がなければ、プログラムは実行してコア機能を提供できますが、ツールの最終バージョンにはなりません。
  • 強化 :この依存関係は、パフォーマンスや表示を改善することで実際のツールを強化できますが、まったく必要ありません。

これで、APTツールを使用する理由がわかりました。インストール時にパッケージの依存関係が解決されます。

パッケージについて詳しく知ったところで、ソフトウェアリポジトリとはを見てみましょう。 。

Linuxソフトウェアディストリビューションアーキテクチャ

Linuxでは、ソフトウェアはソフトウェアリポジトリを通じて配布されます。

ソフトウェアリポジトリは、コミュニティが提供する自由ソフトウェアを集約するために使用されます。

リポジトリは特定のディストリビューションに関連付けられている場合があります。

Ubuntu、Debian、CentOS、またはRHELには、毎日更新される独自のリポジトリがあります。

結果として、新しいプログラムをインストールする場合は、それらのベースリポジトリにクエリを実行して、それらからパッケージを取得します。

配布ベースのリポジトリにないパッケージをインストールする場合は、新しいパッケージをインストールするために、独自の信頼できるリポジトリをシステムに追加します。

これが、新しいプログラムのインストールに関してLinuxがWindowsよりも安全であると言われている理由です。

日陰のパッケージをインストールする場合を除いて、ほとんどの場合、信頼できるリポジトリと通信します。 何百人もの開発者があなたのマシンで実行しているコードをレビューします。

ウイルスやマルウェアの拡散を防ぐことはできませんが、複数の独立したレビュー担当者がパッケージコードを検査しているため、その可能性は低くなります。

リポジトリはさまざまなカテゴリに分割されており、安全なバージョンを実行していることを保証するために、正しいリポジトリを使用する必要がある場合があることに注意してください。

このようなバージョンには、「安定」が含まれます 」リポジトリ、「テスト 」リポジトリと「不安定 リポジトリ」。

:他のディストリビューションでは、これらのリポジトリの名前が異なる場合があります(Ubuntuにはマルチバース、ユニバース、メインなどがあります)

デフォルトでは、ディストリビューションは、sources.list構成ファイルを介して安定した(「メイン」とも呼ばれる)リポジトリにリンクされている可能性があります。

$ cat /etc/apt/sources.list

ソフトウェアリポジトリと、パッケージマネージャーがリポジトリとどのように相互作用するかについて理解したところで、パッケージマネージャーのキャッシュを見てみましょう。

APTキャッシュの説明

前に説明したように、APTパッケージマネージャーは、インターネット(またはローカルパッケージリポジトリ)からパッケージをダウンロードしてインストールする責任があります。

ただし、APTパッケージマネージャーによって実行される操作は、常にオンラインで実行されるわけではありません。

APTは、キャッシュと呼ばれる内部データベースを管理します。

APTキャッシュは、システムにインストールされている現在のパッケージに関するオフライン情報を提供するために使用されます。基本的に、インターネットに接続しなくてもパッケージ情報にアクセスできることが保証されます。

キャッシュ内のパッケージの検索

たとえば、APTキャッシュに保存されている可能性のあるすべてのPython関連パッケージを検索できます。

そのためには、「検索」を指定して「apt-cache」コマンドを実行する必要があります。 」オプション。

$ apt-cache search <search string>

$ apt-cache search python

ヒント:提供されたすべての結果を表示するために、「less」を使用してキャッシュ検索をパイプすることができます。

apt-cache search python |少ない

APTキャッシュは、特定のパッケージを検索するだけでなく、パッケージに関する完全な詳細を表示することもできます。

パッケージ情報の表示

パッケージ情報を表示するには、「 show」を指定して「apt-cache」コマンドを実行する必要があります。 」オプション。

$ apt-cache show <package_name>

たとえば、gccパッケージ(GNUコンパイラ)に関する詳細情報を取得するには、次のように入力します

$ apt-cache show gcc

したがって、詳細を表示するためにインターネット接続が必要ない場合は、インスタンスのどこかに保存されていることを意味します。

たとえば、nanoコマンドのキャッシュドキュメントページを探したいとしましょう。

デフォルトでは、パッケージ情報は「 / var / lib / apt / lists」に保存されます 「

$ ls /var/lib/apt/lists

このディレクトリでは、システムに保存されているパッケージに関する情報を保存しているさまざまなファイルにアクセスできます。

それを証明するために、nanoコマンドの情報を提供するファイルを探しましょう。

$ sudo grep -r -A 3 -B 3 -E "Package: nano$" . | less

ご覧のとおり、多くのファイルにはnanoパッケージへの参照が含まれていますが、私が興味を持っているファイルは間違いなく「mainamd64」ファイルに含まれています(「 main 」は安定の略です および「amd64 」から私のプロセッサアーキテクチャ

CPUアーキテクチャについて疑問がある場合は、「lscpu」コマンドを実行します。

$ lscpu

APTキャッシュの更新

すでにご存知のとおり、APTキャッシュはオフラインで機能します。

結果として、APTキャッシュは、次のことを確認するために定期的に更新する必要があります:

  • 正しいリポジトリを指している;
  • コンピュータにインストールされているソフトウェアの最新のアップデートを取得しています 。

キャッシュの更新をフェッチするには、「apt-getupdate」コマンドを実行する必要があります。

$ sudo apt-get update

注:システムキャッシュを更新するには、sudoである必要があります。

ご覧のとおり、このコマンドは、新しい情報を取得するために、離れたリポジトリに対していくつかのGET呼び出しを実行します。

リポジトリを更新するときは、コンピュータのソフトウェアが更新されていないことに注意することが重要です。

apt-getupdate」を実行する 」コマンドは、ソフトウェアに関する最新情報を取得するためにキャッシュを更新するだけで、プログラムを直接更新することはありません。

プログラムを更新するには、「アップグレード」を実行する必要があります 」コマンド。

ローカルパッケージの更新(アップグレード)

ローカルプログラムを更新するには、「アップグレード」を指定して「apt-get」を実行する必要があります。 」オプション。

$ sudo apt-get upgrade

コマンド中のある時点で、更新をインストールするかどうかを尋ねられます。

Y」を押します 」と入力してEnterキーを押します。

確認すると、プログラムは最新の安定バージョンにアップグレードされます。

良い!

upgradeコマンドを使用してパッケージを正常にアップグレードしました。

キャッシュを更新して現在のパッケージをアップグレードするのは本当に素晴らしいことですが、システムに新しいパッケージをインストールしたい場合はどうでしょうか?

次のセクションでは、APTを使用してシステムに新しいプログラムをインストールする方法を説明します。

APTを使用した新しいパッケージのインストール

APTを使用して新しいパッケージをインストールする場合、基本的に2つのオプションがあります:

  • パッケージはリンク先のリポジトリの1つにすでにあります;
  • パッケージは離れたリポジトリにあるため、追加する必要があります。

パッケージがすでにAPTキャッシュに配置されているかどうかを確認するには、キャッシュを検索する必要があります。

この例では、「gcc」パッケージをインストールするふりをします。

まず、GCCがすでにAPTキャッシュに配置されているかどうかを確認しましょう。

$ apt-cache search --names-only ^gcc$

ご覧のとおり、GCCパッケージは、デフォルトのローカルリポジトリで直接利用できます。

キャッシュにあるソフトウェアのインストール

パッケージがデフォルトのリポジトリで直接利用できる場合は、「 install」を指定して「apt-get」コマンドを実行することでインストールできます。 」オプション。

注:システムに新しいパッケージをインストールするには、sudo権限が必要です。

$ sudo apt-get install gcc

このパッケージをシステムにインストールすることに同意するかどうかを尋ねられる場合もあります。

この質問が表示されたら、「Y」を押してください。

その後すぐに、プログラムがインストールされて使用できるようになります。

コマンドが正しくインストールされたことを確認するために、「whereis」コマンドを実行できます。

$ whereis gcc

すばらしいです。システムにGCCコンパイラが正しくインストールされています。

キャッシュにソフトウェアをインストールできません

場合によっては、APTキャッシュに直接保存されていないソフトウェアをインストールすることをお勧めします。

このセクションでは、デフォルトのパッケージでは直接利用できないオープンソースのダッシュボードであるGrafanaをインストールします。

注:これはGrafana専用のチュートリアルではありません。このパートでは、APTに関連するコマンドのみを取り上げます。

まず、パッケージがAPTキャッシュにまだ含まれていないことを確認する必要があります。

$ apt-cache search --names-only ^grafana$
<empty>

この場合、Grafanaのデフォルトのパッケージはインストールされていないため、自分で追加する必要があります。

カスタムAPTリポジトリの追加

カスタムAPTリポジトリを追加するには、APTソースのディレクトリ構造を理解する必要があります。

デフォルトでは、リポジトリは「/ etc/apt」フォルダに保存されます。

$ ls -l /etc/apt

このディレクトリには、複数のエントリがあります:

  • apt.conf.d :プロキシを構成するための構成ファイルを含むAPT構成フォルダー。
  • auth.conf.d :プロキシに関連する認証の詳細を保存するために使用できます;
  • Preferences.d :特定のリポジトリまたはパッケージに優先順位を設定するために使用できます。
  • ソース。リスト :ディストリビューションのデフォルトのリポジトリセットが含まれています;
  • sources.list.d :カスタムAPTリポジトリを含む可能性のあるディレクトリ;
  • trusted.gpg.d :ダウンロードの信頼性を証明するために信頼できるGPGキーのセット。

「sources.list」はすでにデフォルトのリポジトリで埋められているため、このファイルを変更したくない場合があります。

代わりに、sources.list.dディレクトリにカスタムリポジトリを追加します。

$ sudo touch /etc/apt/sources.list.d/custom.list

この新しく作成されたファイルに、インストールするカスタムリポジトリのエントリを1つ追加します。

$ sudo nano /etc/apt/sources.list.d/custom.list

deb https://packages.grafana.com/oss/deb stable main

パッケージを安全にインストールするには、GPGキーをインポートする必要がある場合があります。

$ sudo wget -q -O https://packages.grafana.com/gpg.key | sudo apt-key add -
OK

:すべてのパッケージにGPGキーを追加する必要はないかもしれませんが、パッケージが安全にインストールされることが保証されます。

リポジトリが正しく追加されたので、変更を適用するためにAPTキャッシュを更新します。

$ sudo apt-get update

これで、パッケージを検索すると、それを見つけることができるはずです。

$ sudo apt-cache show grafana

結果として、これでパッケージをインストールする準備が整いました。

パッケージをインストールするには、「 apt-get」を実行するだけです。 」コマンドと「インストール」 」オプション。

$ sudo apt-get install grafana

素晴らしい

これで、パッケージが正常にインストールされました。

ご覧のとおり、カスタムソフトウェアのインストールは、キャッシュで利用可能なソフトウェアのインストールとはまったく異なります。カスタムリポジトリを追加し、最終的にGPGキーを追加する必要があります。

パッケージのインストール方法がわかったので、パッケージをアンインストールする方法を見てみましょう。

APTを使用したパッケージのアンインストール

APTパッケージマネージャーを使用してパッケージをアンインストールする場合、基本的に2つのオプションがあります。削除 またはパージ

apt-getremoveを使用したパッケージの削除

パッケージをアンインストールする最初の方法は、 apt-get removeを使用することです。 コマンド。

$ sudo apt-get remove <package>

以前にインストールしたgrafanaパッケージを使用すると、次のようになります

$ sudo apt-get remove grafana

では、なぜパージ機能が必要なのですか?

apt-get removeを使用する場合 、パッケージは削除されますが、パッケージに関連付けられているファイルはそのまま残ります。

確認するには、dpkgコマンドを使用してシステム上のパッケージに関連付けられているファイルを一覧表示してみてください。

$ dpkg -L <package>

ご覧のとおり、構成ファイルはまだ存在しているため、パージを使用する必要があります。 コマンド。

apt-getpurgeを使用したパッケージのパージ

パージコマンドを使用するには、「 apt-get」を実行するだけです。 」と「パージ 」オプション。

$ sudo apt-get purge <package>

これで、パッケージに関連付けられているファイルを表示しようとしても、それらを見つけることができなくなります。

$ dpkg -L <package>
<empty>

自動削除による依存関係の削除

ご存知かもしれませんが、APTを使用するポイントは、パッケージの依存関係を取得して正しくインストールすることです。

結果として、新しいパッケージをインストールするときはいつでも、システムにぶら下がっている依存関係を残すリスクがあります。

ぶら下がっている依存関係(つまり、依存関係が使用されなくなった)を削除するには、自動削除オプションを使用する必要があります。

アンインストール中に行うこともできます パッケージ

$ sudo apt-get autoremove <package>

または、自動削除を実行して後で行うこともできます 引数のないオプション。

$ sudo apt-get autoremove

結論

この長いチュートリアルでは、インストールの方法を学びました およびアンインストール APTパッケージマネージャーを使用したパッケージ。

また、オープンソースソフトウェアの起源についても学びました。 、それがどこから来たのか、そしてどのように GNU / Linux オペレーティングシステムは、標準のUnixオペレーティングシステムから生まれました。

Linuxシステム管理に関心がある場合 、ウェブサイトに専用のセクションがありますので、ぜひチェックしてください。


Linux
  1. VoidLinuxでXBPSパッケージマネージャーを使用する方法

  2. LinuxでYarnPackageManagerをインストールして使用する方法

  3. aptパッケージマネージャーを使用してUbuntu20.04にJavaをインストールします

  1. aptによるLinuxパッケージ管理

  2. お気に入りのLinuxパッケージマネージャーは何ですか?

  3. Linux 用の Git ベースのパッケージ マネージャー/インストーラー

  1. Linuxパッケージマネージャー:dnf vs apt

  2. AlmaLinux8にSnapPackageManagerをインストールして使用する方法

  3. LinuxでのHomebrewPackageManagerのインストールと使用