Mengapa ada file deb di / var / cache / apt / arsip /?

Jawaban:

21

Informasi latar belakang

Ada dua hal di Ubuntu (dan di Debian, yang menjadi dasar Ubuntu) yang biasa disebut "manajer paket" dpkg:, dan APT.

dpkgadalah program yang menginstal dan menghapus paket dan memelihara database dari paket apa yang diinstal, pada versi apa. Ketika menginstal paket, ia melakukannya dari .debfile arsip. Arsip-arsip ini adalah cara paket didistribusikan.

dpkgmelakukan lebih dari menyalin (atau menghapus) file dan memperbarui databasenya - itu juga akan menjalankan skrip instalasi dan skrip penghapusan. Ini mungkin dianggap cukup canggih. Tapi yang tidak akan dilakukan adalah mencari dan mengunduh paket.

APT menemukan dan mengunduh paket, dan menjalankan dengan dpkgtepat untuk menginstal, meningkatkan, dan menghapusnya. APT sebenarnya bukan perangkat lunak apa pun, meskipun ada paket yang tepatPasang apt yang menyediakan bagian-bagian penting.

APT termasuk perpustakaan ( libapt-pkg ) yang menyediakan fungsionalitas inti, diakses oleh berbagai alat. Beberapa alat seperti itu, seperti apt-get, juga disediakan oleh paket aptPasang apt . Alat-alat lain dipasang secara terpisah. APT juga menyediakan berbagai file konfigurasi yang mengontrol cara kerja pustaka intinya, dan program yang menggunakannya.

Lebih dari itu, APT adalah sistem untuk menyimpan dan mengambil data tentang sumber perangkat lunak apa yang menyediakan paket apa dalam versi apa, dan untuk bertindak atas data tersebut untuk secara otomatis melakukan tugas manajemen paket seperti menginstal dan meningkatkan paket. Ini termasuk melacak paket apa yang dibutuhkan agar paket lain berfungsi, dan secara otomatis memilih dan menginstal paket yang sesuai untuk memenuhi dependensi ini.

Misalnya, ketika saya memberi tahu apt-getutilitas untuk menginstal paket cokelat-malapetakaPasang cokelat-malapetaka , ia mencari tahu paket apa yang harus diinstal agar bisa berfungsi, dan akan secara otomatis mengambil dan menginstalnya juga:

$ 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.

Alat grafis seperti Pusat Perangkat Lunak, Pembaruan Perangkat Lunak / Manajer Pembaruan, dan Synaptic melakukan fungsi yang mirip dengan apt-get. Mereka juga menggunakan sistem APT - melalui kombinasi mengamati aturannya dan memanfaatkan fungsionalitas yang disediakan oleh pustaka inti - untuk mengubah paket apa yang diinstal, untuk memberikan kepada pengguna apa yang ia (biasanya) inginkan, sedemikian rupa sehingga hal-hal (biasanya) terus bekerja.

Bagaimana dan Kapan /var/cache/apt/archivesFolder Digunakan

Ketika apt-get, aptitude, Software Center , Synaptic , Software Updater / Manajer Perbarui , atau download manajemen paket utilitas paket lain (dan paket-paket lain yang mereka bergantung pada) dari dikonfigurasi sumber perangkat lunak dan menginstal mereka, paket download (yaitu, file .deb arsip dari mana mereka diinstal) disimpan di /var/cache/apt/archives.

Jika Anda memiliki file deb pada disk dan Anda menginstalnya dpkg, itu tidak menyebabkan salinannya dibuat /var/cache/apt/archives. Tetapi ketika sebuah program yang menggunakan atau mengimplementasikan sistem APT dari resolusi dependensi otomatis dan paket pengambilan paket unduhan, di situlah ia menyimpannya.

Sementara file deb untuk paket yang diunduh secara otomatis disimpan dan diinstal /var/cache/apt/archives, mereka sebenarnya tidak diunduh langsung ke lokasi itu. Alih-alih, tidak lengkap (mis. Sedang berlangsung) unduhan file .deb ada di /var/cache/apt/archives/partialdan kemudian dipindahkan ke /var/cache/apt/archivessaat selesai.

File paket .deb tetap di-cache /var/cache/apt/archivesbahkan setelah instalasi berhasil jika mereka diperlukan untuk digunakan di masa depan. Tetapi Anda dapat dengan aman menghapus file deb yang cukup lama mereka tidak diperlukan lagi sudo apt-get autoclean, atau menghapus .debfile cache sepenuhnya sudo apt-get clean. Lihat man apt-getuntuk informasi lebih lanjut.

Untuk mengilustrasikan fungsi sudo apt-get autocleandan perintah yang serupa, serta untuk menentukan apakah Anda ingin menjalankannya, Anda dapat mensimulasikan tindakan mereka dengan menjalankan lalu dengan -sflag. Hal terbaik untuk melewati bendera ini sebelum yang autoclean(atau apa pun lainnya) tindakan verba. Biasanya tidak diperlukan untuk menjalankan utilitas sebagai root sudoketika menggunakan -s, karena tidak ada perubahan aktual yang dibuat.

Misalnya, di sistem saya:

$ 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]
    ....

Paket yang terdaftar tidak akan dihapus instalasinya ; sebagai gantinya, file .deb yang di-cache akan dihapus. (Sebenarnya tidak ada yang terjadi ketika saya menjalankan perintah itu, karena itu hanya simulasi.)

File Unduhan Lainnya

Perangkat lunak yang diinstal melalui dpkg(melalui APT atau lainnya) sebenarnya tidak dijalankan dari file .deb yang menyediakannya. Seperti dicatat di bagian Informasi Latar Belakang , file deb. Diekstraksi. Inilah sebabnya mengapa mereka dapat dihapus dan paket yang diinstal terus berfungsi.

File di seluruh sistem yang diinstal dari paket deb tidak diunduh ke lokasi mereka saat ini - melainkan, mereka diekstraksi dari file deb yang menyediakannya (atau mungkin dibuat secara khusus selama instalasi atau sesudahnya, seperti halnya untuk beberapa file konfigurasi).

Tapi file deb bukan satu-satunya file yang diunduh oleh utilitas manajemen paket. Seringkali file lain diunduh yang memberikan informasi tentang di mana paket ada.

Misalnya, ketika saya menjalankan sudo apt-get update, output menyertakan baris seperti:

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

Ini berarti file seperti http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 telah diunduh dan diperiksa untuk membantu memperbarui basis data APT dengan informasi tentang paket apa yang tersedia ( dan dalam versi apa) dari sumber perangkat lunak tertentu. Anda dapat menemukan file Paket, dan file lainnya, di /var/lib/apt/listdirektori. Salinan yang disimpan di sana diberi nama yang berbeda seperti us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, karena mungkin ada banyak file seperti itu.

Anda bertanya tentang apt-cachesecara spesifik. Ia menanyakan basis data paket, tetapi tidak membuat perubahan apa pun pada sistem atau mengunduh file apa pun.

File yang Diunduh Khusus untuk Pusat Perangkat Lunak

Ketika Pusat Perangkat Lunak Ubuntu mengunduh data untuk penggunaannya sendiri, khusus untuknya dan tidak berkaitan dengan dpkgfungsionalitas APT (atau ) umum, ia menyimpannya di /var/cache/software-center.

Misalnya, di sistem saya (dan di sebagian besar sistem), folder itu berisi xapiansubfolder:

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

Pusat Perangkat Lunak menggunakan Xapian untuk mengindeks informasi untuk pencarian cepat.

File yang Diunduh untuk Utilitas Terkait Lainnya

Beberapa utilitas tambahan yang berfungsi dengan sistem APT mengunduh dan menyimpan file sebagai bagian dari operasinya. apt-filetidak diinstal secara default di Ubuntu, tetapi dapat diinstal dari paket apt-fileInstal file-apt .

apt-filemenyimpan informasi tentang file apa yang disediakan oleh paket apa (bahkan untuk paket yang tidak diinstal secara lokal). Ia memperoleh informasi ini tentang isi paket dengan mengunduh Contentsfile terkompresi :

$ 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

Ketika apt-file updatedijalankan sebagai root (seperti di atas), file-file ini diunduh ke /var/cache/apt/apt-filedirektori. Untuk menemukan ini, saya berlari:

$ 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

Perhatikan bahwa informasi yang diberikan dalam posting ini memberikan sejumlah contoh file data yang dowload dan disimpan oleh utilitas manajemen paket di Ubuntu, tetapi tidak boleh dianggap sebagai daftar lengkap dari contoh di mana file tersebut digunakan dan disimpan.

Eliah Kagan
sumber
Terima kasih. Apakah apt-cache atau / dan apt-filejuga mengunduh banyak hal? Jika ya, di mana mereka?
Tim
Apa artinya "Tetapi ketika sebuah program yang menggunakan atau mengimplementasikan sistem APT untuk resolusi dependensi otomatis dan paket unduhan pengambilan paket, di situlah ia menyimpannya." berarti?
Tim
@ Tim Saya telah memperluas jawaban saya dengan sangat, dengan cara yang saya harap menjawab pertanyaan-pertanyaan itu dengan benar (dan banyak lagi). Seperti biasa, umpan balik Anda sangat disambut - terutama jika ada yang tidak jelas.
Eliah Kagan
Terima kasih "apt-cache query database paket", apakah database online atau di komputer lokal? Apakah apt-cache perlu akses ke internet?
Tim
1
@Orian (saya senang jawaban ini membantu!) Anda dapat mengklik bintang pada pertanyaan. Itu tepat di bawah skor pertanyaan dan panah suara. Kemudian pertanyaan muncul di tab favorit profil Anda . Hanya pertanyaan yang bisa diajukan. Dalam hal jawaban ini, saat ini adalah satu-satunya pertanyaan. Orang lain mungkin diposting - meskipun Anda mungkin ingin melihatnya juga, karena kadang-kadang jawaban baru memiliki informasi tentang perkembangan baru dalam suatu topik. Anda dapat menggunakan bookmark browser Anda, yang berfungsi bahkan untuk jawaban. Gunakan tautan bagikan di bawah jawaban untuk membuka halaman pada jawaban tertentu.
Eliah Kagan