มีวิธีการหรือคำสั่งที่สามารถบอกได้จากที่เก็บแพคเกจมาจากไหน?
มีวิธีการหรือคำสั่งที่สามารถบอกได้จากที่เก็บแพคเกจมาจากไหน?
คำตอบ:
dpkg -s <package>
- ช่วยให้คุณค้นหาเวอร์ชันที่คุณติดตั้ง (ที่มา )apt-cache showpkg <package>
- จะแสดงรายการเวอร์ชันของแพ็คเกจที่มี สำหรับแต่ละเวอร์ชันจะได้รับซอร์สของแพ็คเกจในรูปแบบของชื่อไฟล์ดัชนีdpkg -s <package>
หากคุณต้องการที่จะหาแหล่งที่มาของแพคเกจที่ติดตั้งอยู่ในปัจจุบันคุณจะต้องส่งออกของ apt-cache showpkg <package>
มิฉะนั้นคุณก็สามารถมองไปที่การส่งออกรุ่นใหม่ล่าสุดโดย
$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...
$ apt-cache showpkg liferea
Package: liferea
Versions:
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
Description Language:
File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
MD5: 557b0b803b7ed864e6d14df4b02e3d26
1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
MD5: 557b0b803b7ed864e6d14df4b02e3d26
...
จากคำสั่งแรกฉันเห็นว่าติดตั้ง Liferea รุ่น 1.6.2-1ubuntu6 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
จากคำสั่งที่สองผมจะเห็นว่ารุ่นที่ระบุไว้ใน
โดยไม่ต้องใช้ความพยายามมากเกินไปผมสามารถอนุมานว่าสายต้นทางมีarchive.ubuntu.com
, ubuntu
, และlucid
main
และแน่นอนว่าฉัน/etc/apt/sources.list
มีบรรทัดต่อไปนี้
deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
apt-cache policy <package name>
(จาก: superuser.com/a/236605/37279 )
trusty
แหล่งแพคเกจแล้วชั่วคราวเพิ่มutopic
ของฉันsources.list
เพื่อติดตั้งรุ่น 1.20ubuntu3 ของinit-system-helpers
แล้วเอา repo มาอีกครั้งจากฉันsources.list
, apt-cache showpkg init-system-helpers
ก็จะโกหกเกี่ยวกับรายการแพคเกจเดิมและapt-cache policy init-system-helpers
ก็จะระบุชัดเจน
ใช้คำสั่งดังต่อไปนี้ มันมีผลลัพธ์ที่ดีกว่า:
apt-cache policy <Package Name>
สำหรับ Ubuntu 16.04 และใหม่กว่ามีวิธีที่สั้นกว่าในการทำเช่นนี้:
apt policy <Package Name>
apt-cache policy
ดูเพิ่มเติมsuperuser.com/a/236605/61370
apt-cache policy
ดี แต่บางครั้งคุณต้องapt-cache showpkg
เปรียบเทียบผลรวม MD5 จากแพ็คเกจ ดูเพิ่มเติมdebsums --changed
policy
ตัวเลือกที่เป็นประโยชน์มากที่สุดเมื่อเทียบกับsources.list
apt policy <package-name>
สามารถใช้งานได้ง่ายขึ้นตั้งแต่ 16.04LTS เป็นต้นไป เมื่อ 14.04LTS กลายเป็น EOL ในปี 2561 คำตอบนี้อาจแก้ไขเพื่อใช้คำสั่งที่ใหม่กว่า
apt
บน Ubuntu 16.04+ข้างapt-cache policy
, showpkg
และshow
ตอนนี้เรามีความเรียบง่ายมากขึ้นด้วยง่ายต่อการจำ subcommands: apt
(อย่าสับสนกับคลาสสิกapt-*
):
apt policy <package>
หรือทางเลือกที่มีข้อมูลเพิ่มเติมapt show <package>
สายที่เริ่มต้นด้วย"apt-แหล่งที่มา:"
คำอธิบาย:แพคเกจนี้มีเครื่องมือบรรทัดคำสั่งสำหรับการค้นหาและจัดการรวมถึงการสอบถามข้อมูลเกี่ยวกับแพคเกจการเข้าถึงระดับต่ำถึงคุณลักษณะทั้งหมดของไลบรารี libapt-pkg เหล่านี้รวมถึง: apt-get
, apt-cache
, apt-cdrom
, ,apt-config
apt-key
apt --help
คำสั่งย่อยอื่น ๆ ยังจดจำได้ง่าย:
apt list
- รายการแพ็คเกจตามชื่อแพ็คเกจapt search
- ค้นหารายละเอียดแพ็คเกจapt show
- แสดงรายละเอียดแพ็คเกจapt update
- อัปเดตรายการแพ็คเกจที่มีapt install
- ติดตั้งแพ็คเกจapt remove
- ลบแพ็คเกจapt purge
- ลบแพ็คเกจและไฟล์กำหนดค่า :
การลบแพ็กเกจจะลบข้อมูลที่แพ็กเกจทั้งหมด แต่มักจะทิ้งไฟล์คอนฟิกูเรชันผู้ใช้ขนาดเล็ก (แก้ไข) ไว้ด้านหลังในกรณีที่การลบเกิดอุบัติเหตุ เพียงแค่ออกคำขอการติดตั้งสำหรับแพ็คเกจที่ถูกลบออกโดยไม่ตั้งใจจะคืนค่าการทำงานดังเดิมในกรณีนั้น ในทางกลับกันคุณสามารถกำจัดของเหลือเหล่านี้ได้ด้วยการล้างข้อมูลแม้ในแพ็คเกจที่ลบไปแล้ว โปรดทราบว่าสิ่งนี้จะไม่ส่งผลกระทบต่อข้อมูลหรือการกำหนดค่าใด ๆ ที่เก็บไว้ในโฮมไดเร็กตอรี่ของคุณ
apt upgrade
- อัพเกรดระบบโดยการติดตั้ง / อัพเกรดแพ็คเกจ
apt full-upgrade
- อัพเกรดระบบโดยการลบ / ติดตั้ง / อัพเกรดแพ็คเกจapt edit-sources
- แก้ไขไฟล์ข้อมูลแหล่งที่มาapt policy xxx
ดูเหมือนจะเหมือนกันapt-cache policy xxx
บางทีนี่น่าจะเป็นความคิดเห็นแทน หรืออย่างน้อยพูดถึงที่apt show
ดูเหมือนว่าจะต้อง-a
เปลี่ยนเพื่อดู "บันทึกเพิ่มเติม" จากแหล่งอื่น ๆ
น่าเศร้าที่ข้อมูลนี้ไม่ได้ถูกบันทึกไว้ในระหว่างการติดตั้งแพ็คเกจ คุณสามารถเดาได้อย่างถูกต้องว่าที่เก็บยังอยู่ในรายการแหล่งข้อมูลและที่เก็บยังคงมีแพ็คเกจ:
grep -l PKG /var/lib/apt/lists/*
แม้กระทั่ง synaptic ก็ไม่สามารถบอกได้ว่าคุณปิดการใช้งานที่เก็บและอัปเดต
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"
นี่เป็นความแม่นยำที่มากกว่าเล็กน้อย:
apt-cache show <packagename> | grep "Version:"
โดยทั่วไปแล้วเวอร์ชันใหม่ล่าสุดจะถูกติดตั้งเว้นแต่ว่าคุณได้ตั้งค่า apt-pinning หรือติดตั้งเวอร์ชันเฉพาะอย่างชัดเจน