Apt-Get、Apt、Aptitude、およびDPKGの定義
それらを区別するすべての小さな細部に関係なく、apt
、apt-get
、aptitude
はすべて、オンラインリ ポジトリとやり取りする 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 関連の様々なコマンドを包含しています。
どのディストリビューションが 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-get
と apt
がコマンドとして同じように使われているのを見かけます。ものをインストールしたり削除したりすることに関しては、どちらのコマンドを使っても違いはありません。ただ、この 2 つを他のコマンドのバージョンと混同しないようにしてください。
私が apt-get
は Advanced Packaging Tool に含まれるいくつかのコマンドのうちのひとつに過ぎないと言ったのを覚えていますか? APT を初めて使う人にとっては、apt-get
, apt-mark
, apt-cache
のどのコマンドが有効かを覚えておかなければならないので、少し戸惑うかもしれません。例えば、パッケージを検索するコマンドは apt-cache search
であることはご存知でしょうか?
これは apt
コマンドがそれ自体で行っていることと 正確に 一致しています。この 3 文字をターミナルに入力すると、APT エコシステムの「ラッパー」として機能し、 ターミナルで走り書きすることに多くの時間を費やしている人たちのために、 プロセスを簡素化してくれます。
パッケージを検索する場合、apt search
は apt-cache search
と ほとんど 同じ結果を返すはずです。
ターミナルで apt-cache search
, apt-mark hold
, apt-get remove
とタイプする代わりに、 apt search
, apt hold
, apt remove
を使用することができます。
APT はエコシステムであり、apt-get install
と apt install
はどちらも有効なオプションですが、挙動が少し異なります。シンプルな apt
は、旧来の APT コマンドをラップして、パッケージマネージャで異なるタスクを実行するために異なるコマンドの束を暗記したくないユーザにとって、より直感的でシンプルな構造を提供するためのアプリケーションです。
Ubuntu のようないくつかのディストロでは、apt
コマンドは独立したアプリケーションで、特定のオプション(インストール時のプログレスバーなど)を有効にして古いコマンドの一つを実行するだけで、パッケージマネージャでいくつかの不明瞭なフラグで複雑にしたくない新しいユーザにはより機能豊富に見えるようになっています。
APT フラグについての一言
両方の検索コマンドの出力を示す画像に注意深く目を向けると、apt
コマンドは apt-cache search
が出力するものに加えて、システム内のアプリケーションの状態に関する情報を取得するため、若干異なる情報を示すことがわかります。
ここで、apt search
の出力でパッケージ名の横にある “i” が何を意味しているのかを説明する良い機会でしょう。これは、Debian のパッケージツールのフロントエンドである aptitude によって設定されたフラグです。
- A` - 自動的にインストールされます。おそらく、より大きなメタパッケージの一部と して、あるいはオペレーティングシステム自体のインストールとしてインストールされ ます。
- A` - 自動的にインストールされます。おそらく大きなメタパッケージか、オペ レーティングシステム自体のインストールでしょう。
- H` - 半分インストールされています。パッケージはインストールを終える必要があります。
- c
- パッケージは削除されましたが、その「幽霊」が設定ファイルの形で残っています。この場合、
apt-get purgeか
apt purge` を使い、その後にこのフラグをつけたパッケージ名を指定することで、解決することができます。 p
- パッケージがパージされたか、インストールされていない。v
- パッケージはインストールされており、機能を提供するために他のパッケージによって一般的に使用されています。例えば、Firefox は他のアプリケーションから利用できるブラウジング機能を提供し、仮想パッケージとなります。i
- このパッケージはあなたのシステムにインストールされています。- h` - このパッケージはホールドされており、新しいバージョンに更新されるのを防いでいます。
APT の実装はどれも同じというわけではありません!
パッケージ管理の話題にこれ以上踏み込む前に、apt
コマンドはあるディストロと別のディストロとで利用可能な引数が異なるかもしれないことに注意することが非常に重要です。例えば、Ubuntu には “hold” がありませんが、Mint にはあります。
ここで言っていることを完全に理解するためには、Ubuntu と Mint の apt
に渡すことのできる引数のリストを見て、両者の間に大きな隔たりがあることを確認する必要があり ます。
APTコマンドの究極のガイド
APT パッケージシステムのパワーを理解するには、いくつかの重要なコマンドを理解すること以上に良い方法はありません。このリストは APT コマンドの後に、apt
の簡略化が適用できる場合は括弧でくくったものです。もしこの簡略化があなたのディストロで動作しない場合、何らかの理由で含まれていないか、 Mint の巨大なラッパーが動作していないかのどちらかでしょう。そのような場合は、バニラコマンドを使うのが安全で、あまり損はしません。
リポジトリの追加
add-apt-repository
- パッケージメンテナからソフトウェアソースのリストに新しいレポジト リを追加します。
例えば、Lutris の Mint 20 用の現在のリポジトリを追加したい場合、sudo add-apt-repository
か sudo apt add-repository
を入力し、その後に ppa:lutris-team/lutris
を入力してください。各リポジトリはユニークで、ほとんどのアプリケーション開発者は、あなたのディストロの公式リポジトリにないパッケージを、自分たちのリポジトリに誘導する手順を含んでいます。
クリーンアップと自動削除
apt clean
&apt autoremove
- よく一緒に使われるこの2つのコマンドは、不要になったインストールスクリプトやインストールメディアをシステムから一掃し (clean
) 、誰も使わない、依存しないパッケージを自動的にストレージから解放します (autoremove
)。
例: sudo apt autoremove && sudo apt clean
は、ターミナル上の一行でメインドライブから不要なアプリケーションとキャッシュファイルをすべて削除します。
変更履歴
apt changelog
- パッケージの最新の変更点をスポットします。
例: apt changelog brave-browser
は Brave ブラウザの最新バージョンが、前回のリビジョンと比較して何を含んでいるかを教えてくれます。
含まれるもの
- Linux Mint と Ubuntu 由来のディストロにのみ存在するこのコマンドは、プログラムで “file not found” のようなエラーに遭遇したときに使用するものです。運が良ければ、
apt contains
がインストールしたアプリケーションから遠く離れたフォ ルダにあるファイルを見つけてくれるかもしれません!
例: apt contains gettext.sh
は gettext
用のシェルスクリプトを含むアプリケーションを探します。Mint ディストリビューションに gettext-base
がインストールされていれば、そのアプリケーショ ンをすぐに見つけることができます!
インストールと再インストール
apt install
- その名の通り、パッケージをインストールします。reinstall` フラグを渡すと、すぐにパッケージが再インストールされます。
インストールの例: sudo apt install firefox
. Firefoxの再インストールの例: sudo apt reinstall firefox
. aptラッパーを使ったよりシンプルな方法は
sudo apt reinstall firefox` です。
削除 (アンインストール)
apt remove
- ターミナルの洞窟探検家の武器庫でよく使われるもう一つのツールです。このコマンドは APT エコシステムや DPKG パッケージマネージャでインス トールされたものをすべてアンインストールします。
例: sudo apt remove grub-customizer
.
アップデート、アップグレード、ホールド
-
apt update
- このコマンドはシステムのアプリケーションを更新することは ありません 。単に APT キャッシュをリフレッシュし、レポジトリで利用可能なバージョンと、現在システムにイン ストールされているものとを比較できるようにします。アップデートを チェック していますが、実行はしていません。 -
apt upgrade
- システムが見つけたパッケージのアップデートがある場合、それをダウン ロードします。*apt upgrade
- システムが見つけたパッケージのアップデートをダウンロードします。 -
apt hold
/unhold
/showhold
- この一連のコマンドは、保持しているアプリケーションを管理します。パッケージのホールドは、オペレーティングシステムに今後アップデートしないよう指示します。holdと
unholdを使うと、アプリケーションのアップデートホールドを開始したり、キャンセルしたりすることができます。引数
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 の最も切実な依存関係は、あなたのシステムが欠落しているわけではありません。しかし、APT がないのですから、何でもありでしょう。いずれにせよ、先ほど説明したように dpkg -I
で探した結果、リストにある依存関係が欠けていることがわかったら、リンク先のリポジトリにある親フォルダを調べてみてください。それらはアルファベット順に並べられた対応するフォルダの中にあるはずです。
Frequently Asked Questions (よくある質問)
安全でない APT コマンドはありますか?
一般的に、APT 関連の何かをターミナルに入力する場合、そのコマンドが何をし ようとしているのかを知っておく必要があります。メジャーアップデート、特に新しいカーネルをインストールするようなアップデートの前には、念のためシステムの完全なバックアップをとってください。
それはさておき、本当に注意しなければならないコマンドは apt hold
と apt full-upgrade
/dist-upgrade
です。hold はホールドを解除するまでシステムを壊すかもしれません。特に、他のアプリケーションの依存関係に対して行う場合はそうです。特に他のアプリケーションの依存関係に対して行っている場合、ホールドが解除されるまでシステムが壊れてしまうかもしれません。
full-upgradeや
dist-upgradeは、お使いのディストロが新しい長期バージョンをリリースし、そちらに移行したい場合にのみ有効ですが、使い慣れたパッケージが削除されてしまう可能性もあります。一般的には、通常の
apt upgrade を実行し、
apt autoremove` を実行して、本当に埃をかぶっているパッケージ を一掃すれば、より安全な領域に入ることができます。
Apt は Apt-get よりも優れているのでしょうか?
これは言い古されたことですが、あなたが何をしているかによります。たくさんのコマンドを打ち込んで指がやけどしていませんか? もし apt-get
の方が適しているような特定のものが必要でなければ、 apt
をショートカットとして使いたいかもしれません。多くの場合、apt はパッケージ管理プロセスを合理化するだけでなく、先ほど apt-get search
と apt search
を比較したときに見たように、余分な情報も提供します。
しかし、Mint で apt
の巨大な引数リストを使用していない場合、 apt-get
は不要になり、よりニッチなタスクを行うために apt-get
を使用しなければならないかもしれません。
リポジトリとアプリストアの違いは何ですか?
日々のユーザーにとっては、その違いは些細なものです。この2つの違いが出てくるのは、ソフトウェアの “ファンジビリティ “です。Linuxは非常に流動的なソフトウェア市場であり、ユーザーは時に圧倒的な量の選択肢を提示されます。スマートフォンのアプリストアはかなり決まっていて、ユーザーが代替品を求めることは考えにくい。
同時に、理論的には、人々がUbuntuで楽しんで使っているパーソナルパッケージアーカイブ(PPA)が侵害され、悪質な業者による悪意のあるソフトウェアの拡散につながる可能性があります。 ここから得られるものが1つあるとすれば、分散化にはユーザー側の責任が伴うということです。あなたがディストロに追加するリポジトリは、あなたが信頼できるソースと、長い間存続しているプロジェクトからのものであることを確認してください。 画像クレジット:すべての画像は著者によるものです。