ฉันจะทราบได้อย่างไรว่าแพคเกจที่เก็บมาจากไหน?


147

มีวิธีการหรือคำสั่งที่สามารถบอกได้จากที่เก็บแพคเกจมาจากไหน?


1
นี่มันคลุมเครือ คุณหมายถึง: ที่เก็บข้อมูลใดที่เปิดใช้งานปัจจุบันให้ชื่อแพ็คเกจที่กำหนดหรือที่เก็บข้อมูลใดที่ใช้ในการติดตั้งแพ็คเกจด้วยชื่อที่ติดตั้งอยู่ในปัจจุบัน (ทั้งสองเป็นประโยชน์ฉันกำลังมองหาหลังไม่ใช่อดีต)
Reinier Post

คำตอบ:


112

คำสั่งที่ต้องการ:

  • 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, และlucidmain

และแน่นอนว่าฉัน/etc/apt/sources.listมีบรรทัดต่อไปนี้

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse

mac ขอบคุณสำหรับคำตอบโดยละเอียดของคุณ! น่าเสียดายที่มันไม่ได้ช่วยฉันด้วยปัญหาเริ่มต้นของปัญหาการพึ่งพาแบบไม่แน่นอน :-( ฉันพยายามติดตั้ง libqt4-opengl และมันบอกว่า: แพคเกจต่อไปนี้มีการพึ่งพาแบบ unmet: libqt4-opengl: ขึ้นอยู่กับ: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) แต่ 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 จะต้องติดตั้งขึ้นอยู่กับ: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) แต่ 4: 4.7 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 จะได้รับการติดตั้ง
dfme

มันยากที่จะเห็นจากสิ่งที่เป็นปัญหา คุณควรเปิดคำถามใหม่เพื่อให้คุณสามารถให้รายละเอียดทั้งหมด ถ้าคุณทำทิ้งลิงค์ไว้ในความคิดเห็น :-)
Michael Crenshaw

4
apt-cache policy <package name>(จาก: superuser.com/a/236605/37279 )
franzlorenzon

apt-cache {showpkg, policy} แสดงจริงหรือไม่ว่าติดตั้งแพคเกจที่ติดตั้งไว้หรือไม่หรือจะติดตั้งจากที่ใดเมื่อมีการสอบถาม
Croad Langshan

1
หลัง. ถ้าผมมักใช้อูบุนตูtrustyแหล่งแพคเกจแล้วชั่วคราวเพิ่มutopicของฉันsources.listเพื่อติดตั้งรุ่น 1.20ubuntu3 ของinit-system-helpersแล้วเอา repo มาอีกครั้งจากฉันsources.list, apt-cache showpkg init-system-helpersก็จะโกหกเกี่ยวกับรายการแพคเกจเดิมและapt-cache policy init-system-helpersก็จะระบุชัดเจน
blubberdiblub

103

ใช้คำสั่งดังต่อไปนี้ มันมีผลลัพธ์ที่ดีกว่า:

apt-cache policy <Package Name>

สำหรับ Ubuntu 16.04 และใหม่กว่ามีวิธีที่สั้นกว่าในการทำเช่นนี้:

apt policy <Package Name>

11
นี่คือคำตอบที่ถูกต้อง! คำสั่งในคำตอบโดย mac9416 จำเป็นต้องมีการตีความที่น่าเบื่อ + คาดเดาจากผลลัพธ์ของพวกเขา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับapt-cache policyดูเพิ่มเติมsuperuser.com/a/236605/61370
pabouk

3
apt-cache policyดี แต่บางครั้งคุณต้องapt-cache showpkgเปรียบเทียบผลรวม MD5 จากแพ็คเกจ ดูเพิ่มเติมdebsums --changed
gavenkoa

นี้policyตัวเลือกที่เป็นประโยชน์มากที่สุดเมื่อเทียบกับsources.list
อนันต์ etcetera

นี่ควรเป็นคำตอบที่ยอมรับได้! @pabouk ถูกต้อง คำตอบนี้เกี่ยวข้องกับคำถามมากกว่าคำตอบที่ยอมรับในปัจจุบัน
HEXcube

เช่นเดียวกับ @ pablo-bianchi ชี้ให้เห็นในคำตอบของเขาapt policy <package-name>สามารถใช้งานได้ง่ายขึ้นตั้งแต่ 16.04LTS เป็นต้นไป เมื่อ 14.04LTS กลายเป็น EOL ในปี 2561 คำตอบนี้อาจแก้ไขเพื่อใช้คำสั่งที่ใหม่กว่า
HEXcube

9

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-configapt-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เปลี่ยนเพื่อดู "บันทึกเพิ่มเติม" จากแหล่งอื่น ๆ
Xen2050

6

น่าเศร้าที่ข้อมูลนี้ไม่ได้ถูกบันทึกไว้ในระหว่างการติดตั้งแพ็คเกจ คุณสามารถเดาได้อย่างถูกต้องว่าที่เก็บยังอยู่ในรายการแหล่งข้อมูลและที่เก็บยังคงมีแพ็คเกจ:

grep -l PKG /var/lib/apt/lists/*

แม้กระทั่ง synaptic ก็ไม่สามารถบอกได้ว่าคุณปิดการใช้งานที่เก็บและอัปเดต



1

นี่เป็นความแม่นยำที่มากกว่าเล็กน้อย:

apt-cache show <packagename> | grep "Version:"

โดยทั่วไปแล้วเวอร์ชันใหม่ล่าสุดจะถูกติดตั้งเว้นแต่ว่าคุณได้ตั้งค่า apt-pinning หรือติดตั้งเวอร์ชันเฉพาะอย่างชัดเจน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.