ทำไมไฟล์ deb มีใน /var/cache/apt/archives/
?
ไฟล์ deb ถูกดาวน์โหลดลงในไดเรกทอรีใดในกรณีใดบ้าง
ทำไมไฟล์ deb มีใน /var/cache/apt/archives/
?
ไฟล์ deb ถูกดาวน์โหลดลงในไดเรกทอรีใดในกรณีใดบ้าง
คำตอบ:
มีสองสิ่งในอูบุนตู (และในเดเบียนซึ่งใช้ Ubuntu) ซึ่งโดยทั่วไปเรียกว่า "ตัวจัดการแพ็คเกจ": dpkg
และ APT
dpkg
เป็นโปรแกรมที่ติดตั้งและลบแพ็กเกจและรักษาฐานข้อมูลว่ามีการติดตั้งแพคเกจใดในเวอร์ชันใด เมื่อติดตั้งแพคเกจมันจะทำเช่นนั้นจาก.deb
ไฟล์เก็บถาวร ไฟล์เก็บถาวรเหล่านี้เป็นวิธีกระจายแพคเกจ
dpkg
ทำมากกว่าคัดลอก (หรือลบ) ไฟล์และอัปเดตฐานข้อมูล - นอกจากนี้ยังจะเรียกใช้สคริปต์การติดตั้งและสคริปต์ลบ มันอาจจะถือว่าซับซ้อนมาก แต่สิ่งที่จะไม่ทำคือค้นหาและดาวน์โหลดแพ็คเกจ
APT ค้นหาและดาวน์โหลดแพ็คเกจและรันdpkg
อย่างเหมาะสมเพื่อติดตั้งอัพเกรดและลบมัน APT ไม่ได้เป็นซอฟท์แวร์ชิ้นเดียวจริงๆ แต่มีแพกเกจaptที่ให้ชิ้นส่วนที่จำเป็น
APT มีไลบรารี่ ( libapt-pkg ) ที่มีฟังก์ชั่นการทำงานหลักซึ่งเข้าถึงได้โดยเครื่องมือต่างๆ เครื่องมือบางอย่างเช่นapt-get
นั้นมีให้โดยแพ็คเกจapt มีการติดตั้งเครื่องมืออื่น ๆ แยกต่างหาก APT ยังมีไฟล์การกำหนดค่าต่างๆที่ควบคุมวิธีการทำงานของไลบรารี่หลักและโปรแกรมที่ใช้งานได้
ยิ่งไปกว่านั้น APT เป็นระบบสำหรับการจัดเก็บและดึงข้อมูลเกี่ยวกับแหล่งซอฟแวร์ที่ให้แพคเกจในรุ่นใดและสำหรับการดำเนินการกับข้อมูลเหล่านั้นเพื่อดำเนินการจัดการแพคเกจโดยอัตโนมัติเช่นการติดตั้งและอัพเกรดแพคเกจ ซึ่งรวมถึงการติดตามสิ่งที่จำเป็นสำหรับแพคเกจอื่น ๆในการทำงานและการเลือกและการติดตั้งแพคเกจที่เหมาะสมโดยอัตโนมัติเพื่อตอบสนองการพึ่งพาเหล่านี้
ตัวอย่างเช่นเมื่อฉันบอกให้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.
เครื่องมือแบบกราฟิกเช่นซอฟท์แวศูนย์อัพเดตซอฟต์แวร์ / ปรับปรุง 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
โดยเฉพาะ มันสอบถามฐานข้อมูลแพ็คเกจ แต่ไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับระบบหรือดาวน์โหลดไฟล์ใด ๆ
เมื่ออูบุนตูซอฟท์แวศูนย์ดาวน์โหลดข้อมูลสำหรับการใช้งานของตัวเองที่เฉพาะเจาะจงกับมันและไม่เกี่ยวข้องกับ 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
โปรดทราบว่าข้อมูลที่ให้ไว้ในโพสต์นี้แสดงตัวอย่างของไฟล์ข้อมูล dowloaded และจัดเก็บโดยยูทิลิตี้การจัดการแพ็กเกจบน Ubuntu แต่ไม่ควรพิจารณารายการที่ครบถ้วนสมบูรณ์ของอินสแตนซ์ที่มีการใช้และจัดเก็บไฟล์ดังกล่าว
apt-cache
หรือapt-file
ดาวน์โหลดหลายสิ่งหลายอย่างด้วยหรือไม่ ถ้าใช่พวกเขาอยู่ที่ไหน