Debian/Ubuntu ベースの Linux ディストリビューションに初めて参加する多くの人々 にとって、パッケージの管理は複雑に見えるかもしれません。あるチュートリアルは “apt” を使えと言い、他のチュートリアルは “apt-get” と言い、本当に古いものや特殊なものは “aptitude” を使う。Linux の世界のこの小さな一角にある、奇妙でやや分裂した世界の「なぜ、 どこで、何を、どのように」を絶対的な瑣末なことにまで踏み込んで説明する時 が来たのです。

もしあなたがLinux初心者なら、ターミナルに向かう前に、以下の便利なBashコマンドをチェックしておくとよいでしょう。

Apt-Get、Apt、Aptitude、およびDPKGの定義

それらを区別するすべての小さな細部に関係なく、aptapt-getaptitude はすべて、オンラインリ ポジトリとやり取りする Debian パッケージ管理システムの異なる呼び出しカードにすぎません。Debian や Ubuntu ベースのシステムには、ディスク上のインストールを扱うパッケージ管理ツールがもう一つあります。それは dpkg です。

DPKG は、.deb パッケージをインストールするたびにバックグラウンドで動作するツー ルです。Apt, Apt-get, Aptitude` はすべてパッケージをインストールする際に dpkg を使用します。

Aptitude って何?

Aptitude はパッケージ管理の中枢であり、お使いのディストロがレポジトリで提供し ているすべてのパッケージや、あなたが追加したパッケージを詳細に見たい場合にフロン トエンドとして動作します。また、ターミナル内で直接動作する、数少ない旧式のクリック式 GUI の一つでもあります。

APT とは?

Advanced Packaging Tool として知られている APT は、オペレーティングシステム にインストールする様々なアプリケーションの削除、インストール、検索、管理の プロセスを主流にするための Debian のソリューションです。これをベースにしたすべてのディストロは APT を使っていますが、APT の実装がすべて同じというわけではありません。これについては少し触れたいと思います。

今のところ、パッケージマネージャとしての APT は apt コマンドではな いということに注意してください。代わりに apt-get, apt-mark, apt-cache のような APT 関連の様々なコマンドを包含しています。

Aptitude はパッケージ管理のための対話的なコマンドセンターであり、APT はパッケ ージやリポジトリのインストール・削除・更新に関連する簡単な作業を素早く行うためのス イス軍のナイフのようなものだと考えてください。

どのディストリビューションが APT を使っていますか?

もしあなたのディストロが「Debian ベース」と説明されるなら、それは何らかの形で APT ツールを使っています。これには以下のものが含まれますが、これらに限定されるものではありません。

  • Debian
  • Ubuntu
  • Linux Mint
  • MX Linux
  • Grml
  • Kali Linux
  • テイルス
  • PureOS
  • Raspberry Pi OS
  • エレメンタリー OS

Debian をベースにしたディストリビューションはもっともっとたくさんあります。 ここにリストアップされていないものを使っている場合は、ターミナルで apt-get コマンドをタイプして動作するかどうかチェックしてみてください。もしターミナルがコマンドが存在しないという混乱したメッセージを返したなら、あなたは間違いなく Debian や Ubuntu の開発者が触ったものを動かしていないのです。

Apt-get vs. Apt

パッケージのインストールを含む多くのオンラインチュートリアルでは、Debian ベースのシステムでは apt-getapt がコマンドとして同じように使われているのを見かけます。ものをインストールしたり削除したりすることに関しては、どちらのコマンドを使っても違いはありません。ただ、この 2 つを他のコマンドのバージョンと混同しないようにしてください。

私が apt-get は Advanced Packaging Tool に含まれるいくつかのコマンドのうちのひとつに過ぎないと言ったのを覚えていますか? APT を初めて使う人にとっては、apt-get, apt-mark, apt-cache のどのコマンドが有効かを覚えておかなければならないので、少し戸惑うかもしれません。例えば、パッケージを検索するコマンドは apt-cache search であることはご存知でしょうか?

もし、この3つのコマンドの日常生活で最も役に立つ機能がすべて統一されていたらどうでしょうか。

これは apt コマンドがそれ自体で行っていることと 正確に 一致しています。この 3 文字をターミナルに入力すると、APT エコシステムの「ラッパー」として機能し、 ターミナルで走り書きすることに多くの時間を費やしている人たちのために、 プロセスを簡素化してくれます。

パッケージを検索する場合、apt searchapt-cache searchほとんど 同じ結果を返すはずです。

ターミナルで apt-cache search, apt-mark hold, apt-get remove とタイプする代わりに、 apt search, apt hold, apt remove を使用することができます。

APT はエコシステムであり、apt-get installapt install はどちらも有効なオプションですが、挙動が少し異なります。シンプルな apt は、旧来の APT コマンドをラップして、パッケージマネージャで異なるタスクを実行するために異なるコマンドの束を暗記したくないユーザにとって、より直感的でシンプルな構造を提供するためのアプリケーションです。

Ubuntu のようないくつかのディストロでは、apt コマンドは独立したアプリケーションで、特定のオプション(インストール時のプログレスバーなど)を有効にして古いコマンドの一つを実行するだけで、パッケージマネージャでいくつかの不明瞭なフラグで複雑にしたくない新しいユーザにはより機能豊富に見えるようになっています。

Linux Mint のような他のディストロは単純な Python ラッパーを作ることで同じことを実現し ています。エンドユーザには、どちらも同じように見えるでしょう。

APT フラグについての一言

両方の検索コマンドの出力を示す画像に注意深く目を向けると、aptコマンドは apt-cache search が出力するものに加えて、システム内のアプリケーションの状態に関する情報を取得するため、若干異なる情報を示すことがわかります。

ここで、apt search の出力でパッケージ名の横にある “i” が何を意味しているのかを説明する良い機会でしょう。これは、Debian のパッケージツールのフロントエンドである aptitude によって設定されたフラグです。

以下は、ターミナルに表示されるフラグの一覧とその意味です。

  • A` - 自動的にインストールされます。おそらく、より大きなメタパッケージの一部と して、あるいはオペレーティングシステム自体のインストールとしてインストールされ ます。
  • A` - 自動的にインストールされます。おそらく大きなメタパッケージか、オペ レーティングシステム自体のインストールでしょう。
  • H` - 半分インストールされています。パッケージはインストールを終える必要があります。
  • c - パッケージは削除されましたが、その「幽霊」が設定ファイルの形で残っています。この場合、apt-get purgeapt purge` を使い、その後にこのフラグをつけたパッケージ名を指定することで、解決することができます。
  • p - パッケージがパージされたか、インストールされていない。
  • v - パッケージはインストールされており、機能を提供するために他のパッケージによって一般的に使用されています。例えば、Firefox は他のアプリケーションから利用できるブラウジング機能を提供し、仮想パッケージとなります。
  • i - このパッケージはあなたのシステムにインストールされています。
  • h` - このパッケージはホールドされており、新しいバージョンに更新されるのを防いでいます。

APT の実装はどれも同じというわけではありません!

パッケージ管理の話題にこれ以上踏み込む前に、aptコマンドはあるディストロと別のディストロとで利用可能な引数が異なるかもしれないことに注意することが非常に重要です。例えば、Ubuntu には “hold” がありませんが、Mint にはあります。

ここで言っていることを完全に理解するためには、Ubuntu と Mint の apt に渡すことのできる引数のリストを見て、両者の間に大きな隔たりがあることを確認する必要があり ます。

下の画像は私が新しく作ったチュートリアルのためのテストベッドに載せた Ubuntu です。

次の画像はLinux Mintです。

今まで見たDebianベースのディストリビューションの中で、Mintは最も肉付けされたラッパーを持っています。これは、Mint を維持するコミュニティによって、短いコマンドでアプリケーショ ンをインストールしたい初心者と、ミリ単位の精度で全てを思い通りに調整したいターボギ アの両方に対応するように作られていることを考えると、驚くことではありません。

APTコマンドの究極のガイド

APT パッケージシステムのパワーを理解するには、いくつかの重要なコマンドを理解すること以上に良い方法はありません。このリストは APT コマンドの後に、apt の簡略化が適用できる場合は括弧でくくったものです。もしこの簡略化があなたのディストロで動作しない場合、何らかの理由で含まれていないか、 Mint の巨大なラッパーが動作していないかのどちらかでしょう。そのような場合は、バニラコマンドを使うのが安全で、あまり損はしません。

リポジトリの追加

  • add-apt-repository - パッケージメンテナからソフトウェアソースのリストに新しいレポジト リを追加します。

例えば、Lutris の Mint 20 用の現在のリポジトリを追加したい場合、sudo add-apt-repositorysudo apt add-repository を入力し、その後に ppa:lutris-team/lutris を入力してください。各リポジトリはユニークで、ほとんどのアプリケーション開発者は、あなたのディストロの公式リポジトリにないパッケージを、自分たちのリポジトリに誘導する手順を含んでいます。

クリーンアップと自動削除

  • apt clean & apt autoremove - よく一緒に使われるこの2つのコマンドは、不要になったインストールスクリプトやインストールメディアをシステムから一掃し (clean) 、誰も使わない、依存しないパッケージを自動的にストレージから解放します (autoremove)。

例: sudo apt autoremove && sudo apt clean は、ターミナル上の一行でメインドライブから不要なアプリケーションとキャッシュファイルをすべて削除します。

単にファイルを削除したい場合は、rm コマンドを、ディスクの使用領域を解放したい場合は、dd コマンドを代わりに使用することができます。

変更履歴

  • apt changelog - パッケージの最新の変更点をスポットします。

例: apt changelog brave-browser は Brave ブラウザの最新バージョンが、前回のリビジョンと比較して何を含んでいるかを教えてくれます。

含まれるもの

  • Linux Mint と Ubuntu 由来のディストロにのみ存在するこのコマンドは、プログラムで “file not found” のようなエラーに遭遇したときに使用するものです。運が良ければ、apt contains がインストールしたアプリケーションから遠く離れたフォ ルダにあるファイルを見つけてくれるかもしれません!

例: apt contains gettext.shgettext 用のシェルスクリプトを含むアプリケーションを探します。Mint ディストリビューションに gettext-base がインストールされていれば、そのアプリケーショ ンをすぐに見つけることができます!

インストールと再インストール

  • apt install - その名の通り、パッケージをインストールします。reinstall` フラグを渡すと、すぐにパッケージが再インストールされます。

インストールの例: sudo apt install firefox. Firefoxの再インストールの例: sudo apt reinstall firefox. aptラッパーを使ったよりシンプルな方法はsudo apt reinstall firefox` です。

もし、アプリケーションのインストールにグラフィカルなアプリケーションを使いたければ、 Synaptic Package Manger をチェックすることができます。

削除 (アンインストール)

  • apt remove - ターミナルの洞窟探検家の武器庫でよく使われるもう一つのツールです。このコマンドは APT エコシステムや DPKG パッケージマネージャでインス トールされたものをすべてアンインストールします。

例: sudo apt remove grub-customizer.

アップデート、アップグレード、ホールド

  • apt update - このコマンドはシステムのアプリケーションを更新することは ありません 。単に APT キャッシュをリフレッシュし、レポジトリで利用可能なバージョンと、現在システムにイン ストールされているものとを比較できるようにします。アップデートを チェック していますが、実行はしていません。

  • apt upgrade - システムが見つけたパッケージのアップデートがある場合、それをダウン ロードします。* apt upgrade - システムが見つけたパッケージのアップデートをダウンロードします。

  • apt hold/unhold/showhold - この一連のコマンドは、保持しているアプリケーションを管理します。パッケージのホールドは、オペレーティングシステムに今後アップデートしないよう指示します。holdunholdを使うと、アプリケーションのアップデートホールドを開始したり、キャンセルしたりすることができます。引数showholdは、現在ホールドしているものをリストアップします。もし、インストールしたシステムでこれが使えない場合は、代わりにapt-mark showhold` を試してみてください!

例: sudo apt hold pulseaudio. 注意: 他の人が依存しているパッケージのアップデートをホールドすると、長期的には システムを破損する可能性があります。

検索と表示

  • apt search/show - この素敵なコマンドの組み合わせはよく結合します。最初のコマンドでパッケージを検索し、 show とそのパッケージのフルネームを入力すると、そのパッケージの詳細が表示されます。

例: sudo apt search gimp.

ここで説明されていないような、あなたのディストロの APT の複雑な仕組みについてもっと知りたい場合は、それらのマニュアルが端末にあります。コマンドの前に引数なしで man と入力し、Enter を押すだけです。

Tip: ターミナルから Web を検索することもできます。

APT の恐ろしい「コマンドが見つからない」問題

APT がパッと消えてしまったために、端末に何もインストールできないとしても、 これは世界の終わりではありません。ちょっとした工夫で、お気に入りのパッケージマネージャを起動できるようになります。

まず、新しいシステムであれば、パッケージマネージャとして APT を使うことが 前提 であることを再確認してください。Fedora は DNF/yum を、Arch は Pacman を、Solus は EOPKG を、openSUSE は zypper を、そして Mandriva は urpmi を使っています。もしあなたのディストロがどこにも載っていなかったら、そのディストロのパッケージ管理に関するドキュメントを調べなければなりません、たいてい、最初にディストロを入手したサイトにあります。

Debian ベースのシステムで、APT が本当にないことが確認できたら、次のステップに 進みましょう。

この問題に対して少し余計な利害関係があるため、私は自分のUbuntuシステムを不自由にし、OSの再インストールという簡単な逃げ道を許さないことにします!

その結果、「コマンドが見つかりません」というエラーになるか、コマンドを処理できなくなるかのどちらかになってしまいました。

システムに適した APT パッケージを見つけ、それをインストールする時が来ました。APT がないので、依存関係を自動的にダウンロードすることもできません。

幸運なことに、Debian のディスク上のパッケージマネージャ (dpkg) がこの場を救ってくれます! 私は Ubuntu の main repo から私の CPU アーキテクチャに対応する apt パッケージの最新版をダウンロードし、dpkg -I を実行してインストールする必要のある依存関係をリストアップしました。リンク先のリポジトリを見てもよくわからない場合は、“apt_x.xx”(“x “は最新のバージョン番号)を探してみてください。64ビットシステムなら、“amd64” バージョンをダウンロードしてください。32ビットでは、「i386」バージョンをダウンロードしてください。

私の場合、APTの最新版をインストールしようとしたところ、依存関係はすべてありましたが、十分に新しいものではありませんでした。

dpkg -i /path/to/your/apt/deb/file` と入力すると、このようなことが判明します。明らかに、私が入力した偽のパスを、ウェブサイトからダウンロードした .deb ファイルに対応するパスと置き換える必要があります。

バージョン 2.3.11 の代わりにバージョン 2.0.6 を選択しました。このバージョン はこの記事を書いている時点で Mint に通常インストールされているものです。

あちこちのバージョンをいじくりまわしているうちに、最終的に現在のセットアップで動作するものに行き着くことになります。これは、私に起こったことです。sudo dpkg -i` と入力し、その後にこの古いパッケージを入力すると、スムーズにインストールされました。

一般的に、APT の最も切実な依存関係は、あなたのシステムが欠落しているわけではありません。しかし、APT がないのですから、何でもありでしょう。いずれにせよ、先ほど説明したように dpkg -I で探した結果、リストにある依存関係が欠けていることがわかったら、リンク先のリポジトリにある親フォルダを調べてみてください。それらはアルファベット順に並べられた対応するフォルダの中にあるはずです。

Frequently Asked Questions (よくある質問)

安全でない APT コマンドはありますか?

一般的に、APT 関連の何かをターミナルに入力する場合、そのコマンドが何をし ようとしているのかを知っておく必要があります。メジャーアップデート、特に新しいカーネルをインストールするようなアップデートの前には、念のためシステムの完全なバックアップをとってください。

それはさておき、本当に注意しなければならないコマンドは apt holdapt full-upgrade/dist-upgrade です。hold はホールドを解除するまでシステムを壊すかもしれません。特に、他のアプリケーションの依存関係に対して行う場合はそうです。特に他のアプリケーションの依存関係に対して行っている場合、ホールドが解除されるまでシステムが壊れてしまうかもしれません。

full-upgradedist-upgradeは、お使いのディストロが新しい長期バージョンをリリースし、そちらに移行したい場合にのみ有効ですが、使い慣れたパッケージが削除されてしまう可能性もあります。一般的には、通常のapt upgrade を実行し、apt autoremove` を実行して、本当に埃をかぶっているパッケージ を一掃すれば、より安全な領域に入ることができます。

Apt は Apt-get よりも優れているのでしょうか?

これは言い古されたことですが、あなたが何をしているかによります。たくさんのコマンドを打ち込んで指がやけどしていませんか? もし apt-get の方が適しているような特定のものが必要でなければ、 apt をショートカットとして使いたいかもしれません。多くの場合、apt はパッケージ管理プロセスを合理化するだけでなく、先ほど apt-get searchapt search を比較したときに見たように、余分な情報も提供します。

しかし、Mint で apt の巨大な引数リストを使用していない場合、 apt-get は不要になり、よりニッチなタスクを行うために apt-get を使用しなければならないかもしれません。

リポジトリとアプリストアの違いは何ですか?

日々のユーザーにとっては、その違いは些細なものです。この2つの違いが出てくるのは、ソフトウェアの “ファンジビリティ “です。Linuxは非常に流動的なソフトウェア市場であり、ユーザーは時に圧倒的な量の選択肢を提示されます。スマートフォンのアプリストアはかなり決まっていて、ユーザーが代替品を求めることは考えにくい。

同時に、理論的には、人々がUbuntuで楽しんで使っているパーソナルパッケージアーカイブ(PPA)が侵害され、悪質な業者による悪意のあるソフトウェアの拡散につながる可能性があります。

ここから得られるものが1つあるとすれば、分散化にはユーザー側の責任が伴うということです。あなたがディストロに追加するリポジトリは、あなたが信頼できるソースと、長い間存続しているプロジェクトからのものであることを確認してください。

画像クレジット:すべての画像は著者によるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。