apt と apt-get の違いを徹底解説!Debian系Linuxパッケージ管理コマンド完全ガイド
Debian系Linuxディストリビューションに初めて触れる方にとって、パッケージ管理は複雑で混乱しやすいものに感じられるかもしれません。あるチュートリアルでは「apt」を使えと言い、別のものでは「apt-get」、さらに古い、あるいは特殊なものでは「aptitude」を使うよう指示されます。そろそろ細部まで掘り下げて、Linux世界のこの小さな一角における「なぜ・どこで・何を・どのように」を解き明かす時が来ました。
aptに関する混乱を解消する
細かな違いこそあれど、apt、apt-get、aptitudeはすべて、オンラインリポジトリとやり取りするDebianのパッケージ管理システムへの入り口にすぎません。さらに、ディスク上のインストールを扱うもう一つのツールdpkgも存在します。
dpkgは、Webから.debパッケージをダウンロードしてダブルクリックでインストールするときに使われるツールです。WindowsのMSIパッケージに似ていますね。SolusにはEOPKG、FedoraにはRPM、ArchにはAURがあります。AndroidにもAPKというパッケージがあり、その最大のリポジトリがGoogle Playストアです。こうして見ると、デスクトップやノートPC以外のOSでさえ、Linuxの構造がいかに身近なものであるかが分かるでしょう。
Aptitudeとは?
AptitudeはAPTの中枢であり、ディストリビューションのリポジトリが提供するすべてのパッケージや、自分で追加したパッケージを詳細に確認できるフロントエンドです。ターミナル内で直接動作する数少ない古典的なクリック操作可能なGUIの一つでもあります。
APTとは?
「Advanced Packaging Tool(高度なパッケージツール)」として知られるAPTは、OSにインストールしたさまざまなアプリケーションの削除・インストール・検索・管理のプロセスを標準化するDebianのソリューションです。これをベースとするすべてのディストリビューションがAPTを使用しますが、APTの実装はすべて同じではありません。
重要なのは、パッケージマネージャーとしてのAPTはaptコマンドそのものではないという点です。APTには、apt-get、apt-mark、apt-cacheなど、関連するさまざまなコマンド群が含まれています。
APTを使うディストリビューション
「Debian系」と説明されるディストリビューションなら、何らかの形でAPTを使用しています。以下がその例です。
- Debian
- Ubuntu
- Linux Mint
- MX Linux
- Grml
- Kali Linux
- Tails
- PureOS
- Raspberry Pi OS
- Elementary OS
- SteamOS(現在はDebianではなく、Steam 3.0向けに2021年にArchへ移行)
Debianベースのディストリビューションは非常に多く存在します。ここに挙げたもの以外を使っている場合は、ターミナルにapt-getと入力してみてください。「コマンドが存在しない」というメッセージが返ってきたら、そのシステムはDebian系ではないと確定できます。
apt-getとaptの違い
パッケージのインストールに関する多くのオンラインチュートリアルでは、Debian系システム上でapt-getとaptが interchangeable(相互に置き換え可能)なコマンドとして使われています。インストールや削除に関しては、どちらのコマンドを使っても実際には違いはありません。ただし、両者が互いのバージョンであると誤解しないようにしましょう。
apt-getはAdvanced Packaging Toolの中のいくつかのコマンドの一つだと述べました。APT初心者にとって、apt-get、apt-mark、apt-cacheそれぞれで有効なコマンドを覚えるのは少し混乱しやすいものです。例えば、パッケージを検索するコマンドがapt-cache searchであることをご存知でしたか?
もし、これら3つのコマンドの日常的に便利な機能がすべて統一されていたらどうでしょうか?
それこそがaptコマンドの役割です。この3文字をターミナルに入力すると、APTエコシステム全体の「ラッパー」として機能し、ターミナル作業に多くの時間を費やす人のプロセスを簡素化します。
パッケージ検索では、apt searchはapt-cache searchとほぼ同じ結果を返します。
APTのフラグについて
両方の検索コマンドの出力画像をよく見ると、表示される情報が少し異なることに気づくでしょう。これは、aptコマンドがapt-cache searchの出力に加えて、アプリケーションがシステム内でどのような状態にあるかという情報も取得するためです。
apt searchの出力でパッケージ名の横にある「i」の意味を説明する良いタイミングです。これはDebianパッケージツールのフロントエンドであるaptitudeによって付けられたフラグです。
ターミナルで見かける主なフラグとその意味は以下の通りです。
A– 自動的にインストールされた。より大きなメタパッケージの一部、またはOS自体のインストールによるもの。B– パッケージが壊れているとフラグが立ち、再インストールが必要。H– 半分だけインストールされている状態。インストールを完了させる必要がある。c– パッケージは削除されたが、設定ファイルという「幽霊」が残っている。apt-get purgeまたはapt purgeに続けてパッケージ名を指定することで解決できる。p– パッケージが完全削除されたか、一度もインストールされていない。v– 他のパッケージから機能提供のために利用される仮想パッケージ。例えばFirefoxはブラウジング機能を他のアプリに提供するため仮想パッケージとなる。i– このパッケージはシステムにインストール済み。h– このパッケージにはホールドがかけられており、新しいバージョンへの更新が妨げられている。
すべてのAPTが同じではない!
パッケージ管理の話をさらに進める前に、非常に重要な点をお伝えします。aptコマンドで使用できる引数は、ディストリビューションによって異なります。例えば、Ubuntuには「hold」がありませんが、Mintにはあります。
このことを理解するために、UbuntuとMintでaptに渡せる引数の一覧を見比べてみましょう。
まずは、チュートリアル用テスト環境として新しくセットアップしたUbuntuの画面です。
次にLinux Mintです。
明らかに、Mintは筆者が今まで見た中で最も充実したラッパーを持っています。これは驚くことではありません。短いコマンドで手軽にアプリをインストールしたい初心者から、ミリ単位の精度ですべてを調整したい上級者まで、幅広いユーザーのニーズに応えるため、Mintを維持するコミュニティが特注で作ったものだからです。
APTコマンド究極ガイド
APTパッケージシステムの威力を理解する最良の方法は、重要なコマンドを実際に試すことです。以下のリストでは、APTコマンドの後に、該当する場合には括弧内にaptでの簡略版を示します。簡略版があなたのディストリビューションで動作しない場合、それは何らかの理由で実装されていないか、Mintの強力なラッパーを使っていないためです。その場合でも、元のコマンドに頼れば大きな損失はありません。
add-apt-repository(apt add-repository)– パッケージメンテナーから新しいリポジトリをソフトウェアソースリストに追加する。
例えば、Mint 20にLutrisの最新リポジトリを追加したい場合、sudo add-apt-repositoryまたはsudo apt add-repositoryに続けてppa:lutris-team/lutrisと入力します。各リポジトリは固有のものであり、公式リポジトリにパッケージがないアプリ開発者の多くは、正しい方向を示す手順を公開しています。
apt-get clean&apt-get autoremove(apt clean&apt autoremove)– よく一緒に使われる2つのコマンドで、システムの「ホコリ」を掃除します。cleanは不要になったインストールスクリプトやインストールメディアを削除し、autoremoveは誰にも使われておらず依存関係もないパッケージを自動的に解放します。
例:sudo apt autoremove && sudo apt cleanと一行入力するだけで、メインドライブから不要なファイルを一掃できます。
apt-get changelog(apt changelog)– パッケージの最新変更点を確認する。
例:apt-get changelog brave-browserを実行すると、Braveブラウザの最新バージョンに前回からの変更点が何含まれているかが分かります。
apt contains– Linux Mintなど一部のUbuntu派生ディストロでのみ見られるコマンドで、プログラムで「ファイルが見つかりません」という種類のエラーに遭遇したときに使います。運が良ければ、apt containsがインストール済みアプリの奥深いフォルダからそのファイルを見つけてくれるでしょう。
例:apt contains gettext.shは、gettextのシェルスクリプトを含むアプリケーションを探します。Mintディストロにgettext-baseがインストールされていれば、すぐに見つかるはずです。
apt-get install(apt install)– 名前の通り、パッケージをインストールします。apt-getコマンドに--reinstallフラグを付けると、即座に再インストールされます。
インストール例:sudo apt-get install firefox。Firefoxの再インストール例:sudo apt-get install --reinstall firefox。aptラッパーを使ったよりシンプルな方法はsudo apt reinstall firefoxです。
apt-get remove(apt remove)– ターミナル愛好家の武器庫で頻繁に使われるもう一つのツール。このコマンドは、APTエコシステムまたはDPKGパッケージマネージャーによってインストールされたものをアンインストールします。
例:sudo apt remove grub-customizer
apt-get update(apt update)– このコマンドはシステム内のアプリケーションを更新するものではありません。単にAPTキャッシュを更新し、リポジトリで利用可能なバージョンとシステムに現在インストールされているものを比較できるようにするだけです。更新を確認するだけで、実行はしません。
apt-get upgrade(apt upgrade)– システムが見つけたパッケージのアップデートがあればダウンロードします。通常、実行中のアプリを閉じる必要はありません。
apt-mark hold/unhold/showhold(apt hold/unhold/showhold)– ホールド中のアプリケーションを管理する一連のコマンドです。パッケージをホールドすると、今後OSがそれを更新しなくなります。holdとunholdでアプリの更新ホールドを開始・解除でき、showholdで現在他のホールド中のパッケージを一覧表示します。
例:sudo apt hold pulseaudio。注意点として、他のパッケージが依存しているものをホールドすると、何をしているのか確信が持てない場合、長期的にシステムを壊す可能性があります。
apt-cache search/show(apt search/show)– 相性の良い2つのコマンドペアです。最初にパッケージを探し、次にshowに続けてパッケージの正式名称を指定することで詳細情報を得られます。
例:sudo apt search gimp
ここで扱っていない特定のディストリビューション向けのAPTの詳細についてさらに知りたい場合は、マニュアルがターミナルの中にあります。コマンドの前にmanと入力してEnterキーを押すだけでOKです。
恐ろしい「apt-get command not found」問題への対処法
APTが突然消えてしまい、ターミナルで何もインストールできない状況になっても、世界の終わりではありません。少し努力すれば、お気に入りのパッケージマネージャーを復活させられます。
まず、新しいシステムの場合は、そのシステムが本来APTをパッケージマネージャーとして使うはずかどうかを再確認してください。FedoraはDNF/yum、ArchはPacman、SolusはEOPKG、openSUSEはzypper、Mandrivaはurpmiを使用しており、他にも多数あります。念のため、ターミナルにそれらのコマンドを入力して確認しましょう。
Debian系システムであること、そしてAPTが本当に欠けていることが確認できたら、次のステップに進みます。
実際の手順を紹介するため、筆者は自分のUbuntuシステムをわざと壊し、OSの再インストールという簡単な逃げ道は使いません!
結果として、「command not found」エラーが出るか、コマンドを処理できない状態になります。
次に、システムに適したAPTパッケージを見つけてインストールします。APTが使えないため、依存関係も自動でダウンロードできません。
幸い、Debianのディスク上パッケージマネージャー(dpkg)が救いの手を差し伸べてくれます!筆者はUbuntuのメインリポジトリからCPUアーキテクチャに対応した最新のaptパッケージをダウンロードし、dpkg -Iを実行して必要な依存関係を一覧表示しました。
筆者の場合、最新版のAPTをインストールしようとしたところ、依存関係はすべて存在しましたが、バージョンが古すぎました。
これはdpkg -i /path/to/your/apt/deb/fileと入力すると分かります。もちろん、筆者が打った架空のパスを、Webサイトからダウンロードした.debファイルの実際のパスに置き換えてください。
バージョン2.3.11の代わりに、執筆時点でMintにインストールされているバージョン2.0.6を選びました。
バージョンをいろいろ試すうちに、現在のセットアップで動作するものに必ず辿り着きます。筆者の場合もそうでした。sudo dpkg -iに続けてパッケージを指定すると、魔法のようにスムーズにインストールされました。
一般的に、APTの最重要の依存関係はシステムに欠けていることはありません。しかし、APTが欠けている状況では何が起こるかわかりません。いずれにせよ、先ほどのdpkg -Iで確認した依存関係のうち不足しているものがあれば、リンクしたリポジトリの親フォルダを確認してください。対応するアルファベット順のフォルダに入っているはずです。
よくある質問
1. 危険なAPTコマンドはある?
一般的に、ターミナルでAPT関連のコマンドを入力するときは、そのコマンドが何をするのかを理解しておくべきです。特に新しいカーネルをインストールするような大規模なアップデートの前には、安全のためシステムの完全バックアップを取りましょう。
その上で、特に注意が必要なのはapt holdとapt full-upgrade/dist-upgradeです。前者は、前述のようにホールドを解除するまでシステムを不安定にする可能性があります。後者は、移行したい新しい長期サポート版がリリースされたときにのみ有用ですが、普段使っていたインストール済みパッケージを削除する可能性もあります。通常のapt upgradeを行った後、apt autoremoveで本当に不要になったパッケージを整理する方がはるかに安全です。
2. aptはapt-getより優れている?
陳腐な表現ですが、本当に用途によります。たくさんのコマンドを打つのが面倒になってきましたか?apt-getの方が適している特定の機能が必要なければ、ショートカットとしてaptを使うとよいでしょう。多くの点で、aptはパッケージ管理プロセスを合理化するだけでなく、先ほどapt-cache searchとapt searchを比較したときに見たように、追加情報も提供します。
ただし、aptの膨大な引数リストがapt-getをほぼ不要にするMintを使っていない場合、より昔ながらの代替手段があることに安心感を覚えるかもしれません。
3. リポジトリとアプリストアの違いは?
日常的なユーザーにとって、その違いは驚くほどではありません。実際、非常に似通っています。両者が分岐し始めるのは、ソフトウェアの「代替可能性」においてです。Linuxは非常に流動的なソフトウェア市場を持ち、ユーザーは時に圧倒されるほどの選択肢に直面します。スマートフォンのアプリストアはほぼ固定されており、ユーザーが代替品を探す姿は想像しにくいものです。
同時に、理論的には、Ubuntuで人気のPPA(Personal Package Archives)は侵害される可能性があり、悪意ある者によってマルウェアが拡散される危険性があります。
ここから学ぶべきことは、分散化にはユーザー側の責任が伴うということです。ディストロに追加するリポジトリが信頼できるソースからのものであり、長期間実績のあるプロジェクトであることを必ず確認しましょう。
まとめ
ここまで読んでいただければ、APTのフルコマンドセットとツールが何を提供してくれるのかを理解することが、どれほど大きな力になるか感じていただけたと思います。それは単にコンピュータにソフトウェアを追加・削除する手段以上のものです。何をインストールするかを発見し、より賢明な判断を下すための包括的なフレームワークなのです。
LinuxでBashコマンドをバックグラウンドで実行する方法や、知っておくべき15のLinux LSコマンドについてもぜひチェックしてください。
-
UbuntuのAPTコマンドをマスターして、パッケージ管理の達人になろう
Ubuntu Software Centerを使えば、多くのアプリケーションを簡単にインストール・管理できますが、コマンドラインからインストールやその他の操作を行えたほうが便利な場面も少なくありません。Ubuntuでは、コマンドラインからのアプリの管理やインストールは、APT(Advanced Package Tool)が担当しています。 APTを使いこなせるようになると、アプリケーションのインストールプロセスをより細かく制御できるようになります。UbuntuのAPTに慣れてくれば、標準搭載のGUIソフトウェアセンターを使うよりも、コマンドラインの方が素早くアプリを管理できることに気づくでし
-
MacでAndroidメッセージを使いこなす完全ガイド
AndroidのメッセージをMacで使う?一見不可能に思えますよね。両ブランドは熾烈な競争関係にあるため、「AndroidとMacは相性が悪い」と考える人がほとんどです。しかし、Googleはユーザーにとってより便利で柔軟なコミュニケーション環境を実現するため、Android Messagesを開発しました。 このメッセージングプラットフォームは、Windows PCとMacの両方で利用できます。そのため、Macユーザーでも難しく考える必要はありません。Android Messagesは複数のデバイス間で互換性があるため、さまざまなブランドのガジェットを持つユーザーにとって理想的な選択肢となっ