web-dev-qa-db-ja.com

/ var / cache / apt / archives /にdebファイルがあるのはなぜですか?

/var/cache/apt/archives/にdebファイルがあるのはなぜですか?

どのような場合にdebファイルがそのディレクトリにダウンロードされましたか?

11
Tim

背景情報

Ubuntu(およびUbuntuのベースとなっているDebian)には、一般に「パッケージマネージャー」と呼ばれるものが2つあります。dpkgとAPTです。

dpkgは、パッケージをインストールおよび削除し、インストールされているパッケージ、インストールされているバージョンのデータベースを保持するプログラムです。パッケージをインストールするときに、.debアーカイブファイルからインストールします。これらのアーカイブは、パッケージの配布方法です。

dpkgは、ファイルをコピー(または削除)してデータベースを更新するだけでなく、インストールスクリプトと削除スクリプトも実行します。かなり洗練されていると考えられます。しかし、パッケージを見つけてダウンロードすることはしません。

APTはパッケージを見つけてダウンロードし、dpkgを適切に実行してインストール、アップグレード、削除します。 APTは実際には単一のソフトウェアではありませんが、 apt Install apt 不可欠な部分を提供するパッケージ。

APTには、さまざまなツールからアクセスできるコア機能を提供するライブラリ( libapt-pkg )が含まれています。 apt-getのようなそのようなツールも aptによって提供されます Install apt パッケージ。他のツールは個別にインストールされます。 APTは、コアライブラリとそれを使用するプログラムの動作を制御するさまざまな構成ファイルも提供します。

それ以上に、APTはシステムであり、どのソフトウェアソースがどのバージョンのどのパッケージを提供するかに関するデータを保存および取得し、それらのデータに基づいて自動的に動作しますパッケージのインストールやアップグレードなどのパッケージ管理タスクを実行します。これには、otherパッケージが機能するために必要なパッケージの追跡、およびこれらの依存関係を満たす適切なパッケージの自動選択とインストールが含まれます。

たとえば、apt-getユーティリティに chocolate-Doom Install chocolate-Doom パッケージ、それが機能するために他のパッケージをインストールする必要があるかを把握し、それらを自動的に取得してインストールします:

$ Sudo apt-get install chocolate-Doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  Doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  Doom-engine
The following NEW packages will be installed:
  chocolate-Doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Software Center、Software Updater/Update Manager、Synapticなどのグラフィカルツールは、apt-getと同様の機能を実行します。また、APTシステムを使用します。--ルールの遵守コアライブラリが提供する機能の利用-インストールされるパッケージを変更して、(通常)動作を継続するように(通常)欲しいものをユーザーに提供します。

/var/cache/apt/archivesフォルダーの使用方法とタイミング

apt-getaptitudeSoftware CenterSynapticSoftware Updater/Update Manager の場合、または他のパッケージ管理ユーティリティは、設定された software sources からパッケージ(および依存する他のパッケージ)をダウンロードし、ダウンロードしたパッケージ(つまり、インストール元の.debアーカイブファイル)をインストールします/var/cache/apt/archivesに保存されます。

ディスクに.debファイルがあり、それを dpkg でインストールした場合、/var/cache/apt/archivesでそのコピーが作成されることはありません。しかし、自動依存関係解決およびパッケージ取得の APTシステム を使用または実装するプログラムがパッケージをダウンロードすると、そこにパッケージが保存されます。

自動的にダウンロードされたパッケージの.debファイルは/var/cache/apt/archivesに保存され、そこからインストールされますが、実際にはその場所に直接ダウンロードされません。代わりに、不完全な(つまり進行中の).debファイルのダウンロードは/var/cache/apt/archives/partialに存在し、終了すると/var/cache/apt/archivesに移動されます。

.debパッケージファイルは、将来の使用に必要な場合に備えて、正常にインストールされた後でも/var/cache/apt/archivesにキャッシュされたままになります。ただし、Sudo apt-get autocleanを使用して再度必要になる可能性が低い十分に古い.debファイルを安全に削除するか、.debを使用してキャッシュされたSudo apt-get cleanファイルを完全に消去できます。詳細については、 man apt-get を参照してください。

Sudo apt-get autocleanおよび同様のコマンドの機能を説明し、それらを実行するかどうかを判断するには、-sフラグを指定してthenを実行することにより、アクションをsimulateできます。このフラグautoclean(またはその他の)アクション動詞の前に渡すのが最善です。通常、-sを使用する場合、Sudoを使用してユーティリティをルートとして実行する必要はありません。実際の変更は行われないためです。

たとえば、私のシステムでは:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

リストされたパッケージはuninstalledではありません。代わりに、キャッシュされた.debファイルのみが削除されます。 (実際、それは単なるシミュレーションであったため、そのコマンドを実行したときにもどちらも起こりませんでした。)

その他のダウンロードされたファイル

dpkgを介して(APTまたはその他を介して)インストールされたソフトウェアは、それを提供する.debファイルから実際には実行されません。 Background Informationセクションで説明したように、.debファイルが抽出されます。これらが削除され、インストールされたパッケージが引き続き機能する理由です。

.debパッケージからインストールされるシステム全体のファイルは、現在の場所にはダウンロードされません。むしろ、それらを提供する.debファイルから抽出されます(または、場合によっては、インストール中またはその後特別に作成されます)一部の構成ファイルの場合)。

ただし、パッケージ管理ユーティリティによってダウンロードされるファイルは.debファイルだけではありません。多くの場合、パッケージが存在する場所に関する情報を提供する他のファイルがダウンロードされます。

たとえば、Sudo apt-get updateを実行すると、出力には次のような行が含まれます。

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

これは、 http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-AMD64/Packages.bz2 のようなファイルがダウンロードされ、APT特定のソフトウェアソースから利用可能なパッケージ(およびバージョン)に関する情報を含むデータベース。パッケージファイルなどのファイルは、/var/lib/apt/listディレクトリにあります。そこに保存されているコピーには、us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-AMD64_Packagesのような識別名が付けられています。これは、このようなファイルが多数ある可能性があるためです。

apt-cacheについて具体的に尋ねました。パッケージデータベースを照会しますが、システムに変更を加えたり、ファイルをダウンロードしたりすることはありません。

ソフトウェアセンター固有のダウンロードファイル

Ubuntu Software Centerは、一般的なAPT(またはdpkg)機能に関係なく、独自の使用のためにデータをダウンロードすると、/var/cache/software-centerに保存します。

たとえば、私のシステム(およびほとんどのシステム)では、そのフォルダーにはxapianサブフォルダーが含まれています。

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

Software Centerは Xapian を使用して、迅速な検索のために情報にインデックスを付けます。

その他の関連ユーティリティ用にダウンロードされたファイル

APTシステムで動作するいくつかの追加ユーティリティは、操作の一部としてファイルをダウンロードして保存します。 apt-fileはデフォルトではUbuntuにインストールされませんが、 apt-file Install apt-file パッケージ。

apt-fileは、どのファイルがどのパッケージによって提供されるかに関する情報を保存します(ローカルにインストールされていないパッケージについても)。圧縮されたContentsファイルをダウンロードすることにより、パッケージの内容に関する次の情報を取得します。

$ Sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-AMD64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

apt-file updateがルートとして(上記のように)実行されると、これらのファイルは/var/cache/apt/apt-fileディレクトリにダウンロードされます。これを発見するために、私は走りました:

$ Sudo updatedb
$ locate Contents-AMD64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-AMD64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-AMD64.gz

この投稿で提供される情報は、Ubuntuのパッケージ管理ユーティリティによってダウンロードおよび保存されたデータファイルの例をいくつか示していますが、そのようなファイルが使用および保存されているインスタンスの網羅的なリストと見なされるべきではないことに注意してください。

21
Eliah Kagan