เหตุใดจึงมีไฟล์ deb ใน / var / cache / apt / archives /


คำตอบ:


21

ข้อมูลพื้นฐาน

มีสองสิ่งในอูบุนตู (และในเดเบียนซึ่งใช้ Ubuntu) ซึ่งโดยทั่วไปเรียกว่า "ตัวจัดการแพ็คเกจ": dpkgและ APT

dpkgเป็นโปรแกรมที่ติดตั้งและลบแพ็กเกจและรักษาฐานข้อมูลว่ามีการติดตั้งแพคเกจใดในเวอร์ชันใด เมื่อติดตั้งแพคเกจมันจะทำเช่นนั้นจาก.debไฟล์เก็บถาวร ไฟล์เก็บถาวรเหล่านี้เป็นวิธีกระจายแพคเกจ

dpkgทำมากกว่าคัดลอก (หรือลบ) ไฟล์และอัปเดตฐานข้อมูล - นอกจากนี้ยังจะเรียกใช้สคริปต์การติดตั้งและสคริปต์ลบ มันอาจจะถือว่าซับซ้อนมาก แต่สิ่งที่จะไม่ทำคือค้นหาและดาวน์โหลดแพ็คเกจ

APT ค้นหาและดาวน์โหลดแพ็คเกจและรันdpkgอย่างเหมาะสมเพื่อติดตั้งอัพเกรดและลบมัน APT ไม่ได้เป็นซอฟท์แวร์ชิ้นเดียวจริงๆ แต่มีแพกเกจaptติดตั้งฉลาดที่ให้ชิ้นส่วนที่จำเป็น

APT มีไลบรารี่ ( libapt-pkg ) ที่มีฟังก์ชั่นการทำงานหลักซึ่งเข้าถึงได้โดยเครื่องมือต่างๆ เครื่องมือบางอย่างเช่นapt-getนั้นมีให้โดยแพ็คเกจapt ติดตั้งฉลาดมีการติดตั้งเครื่องมืออื่น ๆ แยกต่างหาก APT ยังมีไฟล์การกำหนดค่าต่างๆที่ควบคุมวิธีการทำงานของไลบรารี่หลักและโปรแกรมที่ใช้งานได้

ยิ่งไปกว่านั้น APT เป็นระบบสำหรับการจัดเก็บและดึงข้อมูลเกี่ยวกับแหล่งซอฟแวร์ที่ให้แพคเกจในรุ่นใดและสำหรับการดำเนินการกับข้อมูลเหล่านั้นเพื่อดำเนินการจัดการแพคเกจโดยอัตโนมัติเช่นการติดตั้งและอัพเกรดแพคเกจ ซึ่งรวมถึงการติดตามสิ่งที่จำเป็นสำหรับแพคเกจอื่น ๆในการทำงานและการเลือกและการติดตั้งแพคเกจที่เหมาะสมโดยอัตโนมัติเพื่อตอบสนองการพึ่งพาเหล่านี้

ตัวอย่างเช่นเมื่อฉันบอกให้apt-getยูทิลิตี้ติดตั้งแพคเกจchocolate-doomติดตั้ง 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.

เครื่องมือแบบกราฟิกเช่นซอฟท์แวศูนย์อัพเดตซอฟต์แวร์ / ปรับปรุง Manager และ Synaptic apt-getทำหน้าที่คล้ายกับ พวกเขายังใช้ระบบ APT - ผ่านการรวมกันของการสังเกตกฎและการใช้งานฟังก์ชั่นที่จัดทำโดยไลบรารีหลัก - เพื่อเปลี่ยนแพคเกจที่ติดตั้งไว้เพื่อให้ผู้ใช้ต้องการสิ่งที่เขา / เธอ (ปกติ) ต้องการ (ปกติ) ทำงานต่อไป

อย่างไรและเมื่อมีการใช้/var/cache/apt/archivesโฟลเดอร์

เมื่อapt-getใดaptitude, Software Center , Synaptic , Software Updater / Update Managerหรือแพ็คเกจดาวน์โหลดยูทิลิตี้การจัดการแพ็กเกจอื่น ๆ (และแพ็คเกจอื่น ๆ ที่พึ่งพา) จากแหล่งซอฟแวร์ที่ได้รับการกำหนดค่าและทำการติดตั้ง จากการที่พวกเขาจะติดตั้ง) /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แม้จะประสบความสำเร็จในการติดตั้งในกรณีที่จำเป็นสำหรับการใช้ในอนาคต แต่คุณสามารถลบไฟล์ .deb ที่มีพอเก่าที่พวกเขาไม่น่าจะมีความจำเป็นอีกครั้งกับsudo apt-get autocleanหรือล้างออกที่แคชไฟล์ทั้งหมดด้วย.deb sudo apt-get cleanดูman apt-getข้อมูลเพิ่มเติม

เพื่อแสดงฟังก์ชันsudo apt-get autocleanและคำสั่งที่คล้ายกันรวมถึงการพิจารณาว่าคุณต้องการรันคำสั่งเหล่านั้นหรือไม่คุณสามารถจำลองการกระทำของพวกเขาได้ด้วยการรันด้วย-sแฟล็ก มันเป็นเรื่องที่ดีที่สุดที่จะผ่านธงนี้ก่อนautoclean (หรือสิ่งอื่น ๆ ) การกระทำกริยา โดยทั่วไปไม่จำเป็นต้องเรียกใช้ยูทิลิตีตามรูทsudoเมื่อใช้-sงานเนื่องจากไม่มีการเปลี่ยนแปลงเกิดขึ้นจริง

ตัวอย่างเช่นในระบบของฉัน:

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

แพคเกจที่ระบุไว้จะไม่ถูกถอนการติดตั้ง ; แต่จะลบไฟล์. deb เพียงอย่างเดียวแทน (อันที่จริงแล้วไม่ได้เกิดขึ้นเมื่อฉันรันคำสั่งนั้นเพราะมันเป็นเพียงการจำลอง)

ไฟล์ที่ดาวน์โหลดอื่น ๆ

ซอฟต์แวร์ที่ติดตั้งผ่านdpkg(ผ่าน APT หรืออย่างอื่น) ไม่ได้รันจากไฟล์. deb ที่ให้มา ดังที่ระบุไว้ในส่วนข้อมูลพื้นหลังไฟล์. 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โดยเฉพาะ มันสอบถามฐานข้อมูลแพ็คเกจ แต่ไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับระบบหรือดาวน์โหลดไฟล์ใด ๆ

ไฟล์ที่ดาวน์โหลดมาเฉพาะสำหรับ 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

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

โปรดทราบว่าข้อมูลที่ให้ไว้ในโพสต์นี้แสดงตัวอย่างของไฟล์ข้อมูล dowloaded และจัดเก็บโดยยูทิลิตี้การจัดการแพ็กเกจบน Ubuntu แต่ไม่ควรพิจารณารายการที่ครบถ้วนสมบูรณ์ของอินสแตนซ์ที่มีการใช้และจัดเก็บไฟล์ดังกล่าว


ขอบคุณ ทำapt-cache หรือapt-fileดาวน์โหลดหลายสิ่งหลายอย่างด้วยหรือไม่ ถ้าใช่พวกเขาอยู่ที่ไหน
ทิม

"แต่เมื่อโปรแกรมที่ใช้หรือใช้ระบบ APT ของการแก้ปัญหาการพึ่งพาอัตโนมัติและแพคเกจการดาวน์โหลดการดึงแพคเกจนั่นคือสิ่งที่มันเก็บไว้" หมายความว่าอย่างไร
ทิม

@Tim ฉันได้ขยายคำตอบของฉันอย่างมากในแบบที่ฉันหวังว่าจะตอบคำถามเหล่านั้นอย่างถูกต้อง (และอื่น ๆ ) ความคิดเห็นของคุณยินดีต้อนรับมากที่สุดเช่นเคยโดยเฉพาะอย่างยิ่งหากมีสิ่งใดไม่ชัดเจน
Eliah Kagan

ขอบคุณ "apt-cache สอบถามฐานข้อมูลแพ็กเกจ" เป็นฐานข้อมูลออนไลน์หรือบนเครื่องคอมพิวเตอร์หรือไม่ apt-cache ต้องการการเข้าถึงอินเทอร์เน็ตหรือไม่?
ทิม

1
@Orian (ฉันดีใจที่คำตอบนี้ช่วยได้!) คุณสามารถคลิกดาวบนคำถาม มันอยู่ใต้คะแนนคำถามและลูกศรโหวต จากนั้นคำถามจะปรากฏในแท็บรายการโปรดของโปรไฟล์ คำถามเท่านั้นที่สามารถเป็นที่ชื่นชอบ ในกรณีของคำตอบนี้เป็นคำตอบเดียวในคำถาม คนอื่นอาจโพสต์ - แม้ว่าคุณอาจต้องการที่จะดูเช่นกันเพราะบางครั้งคำตอบใหม่มีข้อมูลเกี่ยวกับการพัฒนาใหม่ในหัวข้อ คุณสามารถใช้บุ๊กมาร์กของเบราว์เซอร์ซึ่งทำงานได้แม้กระทั่งหาคำตอบ ใช้ลิงก์แชร์ใต้คำตอบเพื่อเปิดหน้าเว็บที่คำตอบเฉพาะ
Eliah Kagan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.