Neden / var / cache / apt / archives / dosyasında deb dosyaları var?


Yanıtlar:


21

Arkaplan bilgisi

Ubuntu'da (ve Ubuntu'nun dayandığı Debian'da) genellikle "paket yöneticisi" olarak adlandırılan iki şey vardır: dpkgve APT.

dpkgpaketleri yükleyen ve kaldıran ve hangi paketlerin hangi sürümlerde kurulu olduğunu gösteren bir veritabanıdır. Paketleri yüklediğinde, bunu .debarşiv dosyalarından yapar. Bu arşivler paketlerin dağıtılma şeklidir.

dpkgdosyaları kopyalamaktan (veya silmekten) ve veritabanını güncellemekten daha fazlasını yapar; yükleme komut dosyalarını ve kaldırma komut dosyalarını da çalıştırır. Oldukça sofistike kabul edilebilir. Ama yapmayacağı şey paketleri bulmak ve indirmek.

APT paketleri bulur ve indirir ve dpkgbunları yüklemek, yükseltmek ve kaldırmak için uygun şekilde çalışır . APT gerçekten tek bir yazılım parçası değildir, ancak temel parçalarını sağlayan bir aptApt yükleyin paketi vardır.

APT, çeşitli araçlar tarafından erişilen temel işlevsellik sağlayan bir kütüphane ( libapt-pkg ) içerir. Bu gibi araçlar apt-getda aptApt yükleyin paketi tarafından sağlanır . Diğer araçlar ayrı olarak monte edilir. APT ayrıca çekirdek kütüphanesinin ve onu kullanan programların nasıl çalıştığını kontrol eden çeşitli yapılandırma dosyaları sağlar.

Dahası, APT hangi yazılım kaynaklarının hangi sürümlerde hangi paketleri sağladığına ilişkin verileri depolamak ve almak ve paketleri kurmak ve yükseltmek gibi paket yönetimi görevlerini otomatik olarak gerçekleştirmek için bu veriler üzerinde hareket etmek için kullanılan bir sistemdir . Bu, diğer paketlerin çalışması için hangi paketlerin gerekli olduğunu takip etmeyi ve bu bağımlılıkları karşılamak için uygun paketleri otomatik olarak seçip kurmayı içerir.

Örneğin apt-get, çikolata-doomChocolate-doom yükleyin paketini kurması için yardımcı programa çalıştığımda, çalışması için başka hangi paketlerin yüklenmesi gerektiğini anlar ve bunları otomatik olarak alır ve kurar:

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

Yazılım Merkezi, Yazılım Güncelleyici / Güncelleme Yöneticisi ve Synaptic gibi grafik araçları benzer işlevleri yerine getirir apt-get. Ayrıca, APT sistemini - kurallara uymak ve çekirdek kütüphaneler tarafından sağlanan işlevselliği kullanmakla birlikte - hangi paketlerin kurulu olduğunu değiştirmek için, kullanıcıya (genellikle) ne istediğini vermek için, (genellikle) çalışmaya devam eder.

/var/cache/apt/archivesKlasör Nasıl ve Ne Zaman Kullanılır

apt-get, aptitude, Yazılım Merkezi , Synaptic , Software Updater / Güncelleme Yöneticisi , ya da başka paket yönetim yarar indirme paketleri (ve diğer paketler onlar bağlıdır) yapılandırılmış gelen yazılım kaynaklarının ve varsa yükler, indirilen paketler (yani .deb arşiv dosyaları yüklendikleri) /var/cache/apt/archives.

Diskte bir .deb dosyanız varsa ve ile birlikte yüklerseniz dpkg, bunun bir kopyası alınmaz /var/cache/apt/archives. Ancak APT otomatik bağımlılık çözümlemesi ve paket alma paketlerini kullanan veya uygulayan bir program paketleri indirdiğinde, bunları burada saklar.

Otomatik olarak indirilen paketler için .deb dosyaları depolanırken ve buradan yüklenirken /var/cache/apt/archives, bunlar doğrudan o konuma indirilmez. Bunun yerine, tamamlanmamış (yani, devam ediyor) .deb dosyası indirmeleri var olur /var/cache/apt/archives/partialve /var/cache/apt/archivestamamlandığında buraya taşınır .

.deb paket dosyaları /var/cache/apt/archives, gelecekteki kullanımlar için gerekli olmaları durumunda başarılı kurulumdan sonra bile önbelleğe alınmış durumda kalır . Ancak sudo apt-get autoclean, tekrar ihtiyaç duyulmayacak kadar eski olan .deb dosyalarını güvenle kaldırabilir veya önbelleğe alınmış .debdosyaları tamamen temizleyebilirsiniz sudo apt-get clean. Daha man apt-getfazla bilgi için bakınız .

sudo apt-get autocleanKomutların işlevini ve benzerlerini göstermek ve bunları çalıştırmak isteyip istemediğinizi belirlemek için, eylemleri daha sonra bayrakla çalıştırarak simüle edebilirsiniz -s. Bu bayrak geçmek en iyisi önceautoclean (ya da her türlü diğer) eylem fiil. Herhangi bir gerçek değişiklik yapılmadığından, bir yardımcı programı sudokullanırken kök olarak çalıştırmak genellikle gerekli değildir -s.

Örneğin, sistemimde:

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

Listelenen paketler kaldırılmaz ; bunun yerine, yalnızca önbelleğe alınmış .deb dosyaları silinir. (Aslında ben sadece bir simülasyon olduğu için bu komutu çalıştırdığımda da olmadı.)

İndirilen Diğer Dosyalar

dpkg(APT aracılığıyla veya başka bir yöntemle) aracılığıyla yüklenen yazılım , bunu sağlayan .deb dosyasından çalıştırılmaz. Arka Plan Bilgileri bölümünde belirtildiği gibi , .deb dosyaları ayıklanır. Bu yüzden kaldırılabilirler ve kurulu paket çalışmaya devam eder.

Sistem genelinde .deb paketlerinden yüklenen dosyalar geçerli konumlarına indirilmez - bunun yerine, bunları sağlayan .deb dosyalarından kendilerine çıkarılır (veya yükleme sırasında veya sonrasında, özellikle duruma göre özel olarak oluşturulur) bazı yapılandırma dosyaları için).

Ancak .deb dosyaları, paket yönetimi yardımcı programları tarafından indirilen tek dosyalar değildir. Genellikle paketlerin bulunduğu yerler hakkında bilgi sağlayan diğer dosyalar indirilir.

Örneğin, çalıştırdığımda sudo apt-get update, çıktı aşağıdaki gibi satırlar içerir:

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

Bu, http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 gibi bir dosyanın indirildiğini ve APT veritabanının hangi paketlerin mevcut olduğuna ilişkin bilgilerle güncellenmesine yardımcı olmak için indirildiğini ve incelendiğini gösterir ( ve hangi sürümlerde) Paketler dosyalarını ve diğer benzeri dosyaları /var/lib/apt/listdizinde bulabilirsiniz. Burada saklanan kopyalara us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, bu tür birçok dosya olabileceği gibi ayırt edici adlar verilir .

apt-cacheÖzellikle sordun . Paket veritabanını sorgular, ancak sistemde herhangi bir değişiklik yapmaz veya herhangi bir dosya indirmez.

Yazılım Merkezine Özel İndirilen Dosyalar

Ubuntu Yazılım Merkezi, genel APT (veya dpkg) işlevselliği ile ilgili olmayan, kendi kullanımı için verileri indirdiğinde , bunları saklar /var/cache/software-center.

Örneğin, sistemimde (ve çoğu sistemde), bu klasör bir xapianalt klasör içerir :

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

Yazılım Merkezi, hızlı arama için bilgileri endekslemek için Xapian kullanır .

İlgili Diğer Yardımcı Programlar için İndirilen Dosyalar

APT sistemiyle çalışan bazı ek yardımcı programlar dosyaları işlemlerinin bir parçası olarak indirir ve depolar. apt-fileUbuntu'da varsayılan olarak yüklenmez, ancak apt dosyaApt dosyasını yükle paketinden yüklenebilir .

apt-filehangi dosyaların hangi paketler tarafından sağlandığı hakkında bilgi depolar (yerel olarak kurulu olmayan paketler için bile). Sıkıştırılmış Contentsdosyaları indirerek paketlerin içeriği hakkında bu bilgiyi alır :

$ 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

Ne zaman apt-file update(yukarıdaki gibi) root olarak çalıştırılır, bu dosyalar indirilir /var/cache/apt/apt-filedizine. Bunu keşfetmek için koştum:

$ 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

Bu yayında sağlanan bilgilerin, Ubuntu'daki paket yönetimi yardımcı programları tarafından yüklenen ve depolanan bir dizi veri dosyası örneği verdiğini, ancak bu tür dosyaların kullanıldığı ve saklandığı örneklerin kapsamlı bir listesi olarak düşünülmemesi gerektiğini unutmayın.


Teşekkürler. Do apt-cache ve / veya apt-fileayrıca birçok şeyi indirmek? Evet ise, neredeler?
Tim

"Otomatik bağımlılık çözümü ve paket alma APT sistemini kullanan veya uygulayan bir program paketleri karşıdan yüklediğinde, bunları depoladığı yer burasıdır." anlamına gelmek?
Tim

@Tim Cevabımı bu soruları (ve daha fazlasını) düzgün bir şekilde cevapladığını umduğum şekilde önemli ölçüde genişlettim. Her zaman olduğu gibi, geri bildiriminiz en hoş geldiniz - özellikle de bir şey net değilse.
Eliah Kagan

Teşekkürler "apt-cache paket veritabanını sorgular", veritabanı çevrimiçi mi yoksa yerel bilgisayarda mı? Apt-cache'nin internete erişmesi gerekiyor mu?
Tim

1
@Orian (Bu cevabın yardımcı olduğuna sevindim!) Sorudaki yıldızı tıklayabilirsiniz. Sorunun puan ve oy oklarının hemen altında. Ardından soru profilinizin sık kullanılanlar sekmesinde görünür . Sadece sorular tercih edilebilir. Bu cevap durumunda, şu anda soruya cevap veren tek soru bu. Diğerleri de yayınlanabilir - ancak muhtemelen bunlara bakmak istersiniz, çünkü bazen yeni cevaplar bir konudaki yeni gelişmeler hakkında bilgi sahibi olur. Yanıtlar için bile çalışan tarayıcınızın yer işaretlerini kullanabilirsiniz. Sayfayı belirli bir cevapta açmak için cevabın altındaki paylaş bağlantısını kullanın .
Eliah Kagan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.