MYmemo

思い立ってやってみるけど、長続きしない。せめて記録しておく。

Linuxのaptとapt-getについて勉強してみた

ChromebookLinuxをいじって暇つぶししています。

そんな中、何をいまさらという内容になりますが、

理解する=人に説明できるレベル=記事にかけるレベル

ということで、個人的に理解するために記事にしてみました。

 

Linux環境を構築する際、私は諸先輩方が記事にされている内容を参考にしています。

あるパッケージをインストールしようと思って検索しますと、ある方は以下のようなコードを使用しています。

sudo apt-get install パッケージ名

しかし、別の方のサイトだと以下のとおりです

sudo apt install パッケージ名

試しに私が使っている環境でaptとapt-get両方使ってみましたが、双方問題なく使えました。その違いはなにか?と調べてみたことを記載していきます。

APT:Advanced Package Tool

恐らく公式見解であろうThe Debian Administrator's Handbookの「6.2. aptitude, apt-get, and apt Commands」には以下のように書かれています

APT is a vast project, whose original plans included a graphical interface. It is based on a library which contains the core application, and apt-get is the first front end — command-line based — which was developed within the project. apt is a second command-line based front end provided by APT which overcomes some design mistakes of apt-get.

 

整理しますと

  • APT:「apt-get」や「apt」を開発したプロジェクトの名前(ややこしい)
  • apt-get:「APT」プロジェクトが開発した1つめの成果物
  • apt:「APT」プロジェクトが開発した2つめの成果物でapt-getを改良したもの

なので、aptとapt-getは全く別のパッケージ管理ツールということのようです。

aptはDebian系のパッケージマネージャー

aptもapt-getも、Debian用に開発されたパッケージ管理システムで、Debianとその派生のUbuntuを始めとするLinuxディストリビューションに標準採用されているパッケージマネージャーで、コマンドラインを使ってパッケージの導入・削除・更新・検索・管理を可能とするツールです。aptに相当するパッケージマネージャーでメジャー(?というより個人的に聞いたことがある)なのは以下です。

他にもopenSUSEで採用されているZypperなど、たくさん存在するようです。

また当初はAPTでも計画されていた、グラフィカルインターフェースを備えたYaST(openSUSE)のようなパッケージマネージャーも存在します。

ちなみにThe Debian Administrator's Handbookには次のようにも書かれています。

 

Numerous other graphical interfaces then appeared as external projects: synaptic, aptitude (which includes both a text mode interface and a graphical one — even if not complete yet), wajig, etc. The most recommended interface, apt, is the one that we will use in the examples given in this section. Note, however, that apt-get and aptitude have a very similar command line syntax. When there are major differences between these three commands, these will be detailed.

 

どうやらDebian系のパッケージマネージャーにはaptとapt-getのほかにもsynaptic、aptitude、wajigというものがあるらしいです(知りませんでした)。

しかもグラフィカルって書いてありますね。

 

dpkgってコマンドもあるけど?

これはずっと私が疑問に思っていた事です。パッケージをインストールするコマンドとして以下を紹介される場合もあります。

dpkg -i debFileName

aptがあるのに、dpkgが存在する意義は何なのかが理解できませんでした。

どうやら、aptの下でdpkgが動いているようです。

以下私の独自解釈になりますのでお恥ずかしいところですが、

dpkg自体は単純なツールのようでローカルに持ってきたパッケージを処理することしかできない、言われたことしかやらない、シンプルなもの。

対してaptはローカルに無いものはインターネット経由で自動でダウンロードしてくる。処理対象が他の別のパッケージに依存していて、単体で処理できない場合は、他に必要なパッケージもダウンロードしてきて、順序よく自動で処理する。というように気の利いたこと、複雑なことをやってくれるツールということになります。(「高水準のツール」と表現されています)。

apt-getよりaptを使うべき?

これは多分Yesなのでしょう。

先程のHandbook引用文にも"most recommended"と書かれてますし、ディストリビューションが異なりますがubuntuでも、バージョン14.04よりaptの使用を推奨しているようです。またapt-getには"some design mistakes"があるとも書かれてますし。ある方が指摘しているところではapt-getの場合、パッケージを検索しようとするときのコマンドが以下のようになります。

apt-cache search パッケージ名

aptコマンドを使えば、installもsearchも「get」と「cache」の違いは考えずにaptコマンドのまま、打ち変える必要がありません。

aptの履歴やリポジトリはどこに格納される?

/var/log/apt/history.log

aptコマンドの操作履歴

/var/log/apt/term.log

aptコマンドの出力履歴

/etc/apt

apt に関する設定ファイルが格納されるディレクト

/etc/apt/sources.list

登録されているリポジトリのURLを列挙するファイル

 

以上、全くもって実用的ではない内容ですが、誰かの暇つぶしくらいになれば幸いです。