/var/cache/apt/archives/
にdebファイルがあるのはなぜですか?
どのような場合にdebファイルがそのディレクトリにダウンロードされましたか?
Ubuntu(およびUbuntuのベースとなっているDebian)には、一般に「パッケージマネージャー」と呼ばれるものが2つあります。dpkg
とAPTです。
dpkg
は、パッケージをインストールおよび削除し、インストールされているパッケージ、インストールされているバージョンのデータベースを保持するプログラムです。パッケージをインストールするときに、.deb
アーカイブファイルからインストールします。これらのアーカイブは、パッケージの配布方法です。
dpkg
は、ファイルをコピー(または削除)してデータベースを更新するだけでなく、インストールスクリプトと削除スクリプトも実行します。かなり洗練されていると考えられます。しかし、パッケージを見つけてダウンロードすることはしません。
APTはパッケージを見つけてダウンロードし、dpkg
を適切に実行してインストール、アップグレード、削除します。 APTは実際には単一のソフトウェアではありませんが、 apt 不可欠な部分を提供するパッケージ。
APTには、さまざまなツールからアクセスできるコア機能を提供するライブラリ( libapt-pkg )が含まれています。 apt-get
のようなそのようなツールも aptによって提供されます パッケージ。他のツールは個別にインストールされます。 APTは、コアライブラリとそれを使用するプログラムの動作を制御するさまざまな構成ファイルも提供します。
それ以上に、APTはシステムであり、どのソフトウェアソースがどのバージョンのどのパッケージを提供するかに関するデータを保存および取得し、それらのデータに基づいて自動的に動作しますパッケージのインストールやアップグレードなどのパッケージ管理タスクを実行します。これには、otherパッケージが機能するために必要なパッケージの追跡、およびこれらの依存関係を満たす適切なパッケージの自動選択とインストールが含まれます。
たとえば、apt-get
ユーティリティに 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-get
、 aptitude
、 Software Center 、 Synaptic 、 Software 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 パッケージ。
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のパッケージ管理ユーティリティによってダウンロードおよび保存されたデータファイルの例をいくつか示していますが、そのようなファイルが使用および保存されているインスタンスの網羅的なリストと見なされるべきではないことに注意してください。