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


51

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

ฉันจะแสดงรายการแพ็กเกจที่ติดตั้งทั้งหมดที่ไม่สามารถใช้งานได้จากคลังเก็บหลักของ Ubuntu และดูที่เก็บซึ่งมาจากไหน (ถ้าฉันรู้คำตอบสำหรับคำถามนี้ฉันสามารถ grep รายการนั้นสำหรับชื่อ PPA เฉพาะเพื่อค้นหาคำตอบสำหรับคำถามแรกของฉัน)


เนื่องจากดูเหมือนจะไม่มีเครื่องมือบรรทัดคำสั่งที่มีอยู่สำหรับเรื่องนี้ (เศร้า) ฉันจะยอมรับคำตอบ GUI อย่างใดอย่างหนึ่ง
Marius Gedminas

คำตอบ:


24

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

ข้อความแสดงแทน


ฉันกลัวว่าตัวเลือกนี้จะมีเฉพาะใน Ubuntu 10.10 หรือฉันขาดอะไรไปบ้าง? My Software Center ไม่แสดงแหล่งที่มาด้านล่างเมนู
lovinglinux

2
ในรุ่นของฉันฉันมีแบบเลื่อนลง "ติดตั้ง" ที่ด้านบน เมื่อฉันเลือกตัวเลือกนั้นฉันสามารถเลือกแหล่งข้อมูลต่าง ๆ (หลักสำหรับการซื้อ PPA ... )
Alexis Wilke

ใน Ubuntu 16.04 หน้านี้ไม่สามารถใช้ได้อีก อย่างไรก็ตาม synaptic มีคุณสมบัติที่คล้ายกัน - คลิก "Origin" ที่ด้านล่างซ้าย
Josh

26

ดูเหมือนจะไม่มีการบันทึกที่มาของแพ็คเกจที่ ติดตั้ง

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

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
  | fgrep ':install ok installed' \
  | cut -d: -f1 \
  | (while read pkg; do 
       inst_version=$(apt-cache policy $pkg \
                                | fgrep Installed: \
                                | awk '{ print $2 }'); 
       origin=$(apt-cache policy "$pkg" \
                          | fgrep " *** ${inst_version}" -C1 \
                          | tail -n 1 \
                          | cut -c12-); 
       echo $pkg $origin; 
     done)

โปรดทราบว่ามันค่อนข้างบอบบางเนื่องจากมีข้อสมมติฐานเกี่ยวกับผลลัพธ์ของapt-cache policyซึ่งอาจเปลี่ยนแปลงได้ในเวอร์ชัน ...


ใช่แล้วนี่จะหมายถึงการเขียนเครื่องมือตั้งแต่เริ่มต้น และฉันคิดว่าการแยก / var / lib / apt / list ด้วย Perl หรือ Python จะเร็วขึ้นและแข็งแกร่งขึ้น
Marius Gedminas

ทำงานได้ตามปกติที่นี่ในปี 2018 :) ขอบคุณ!
N0rbert

ฉันพัฒนาโซลูชันที่คล้ายกันที่ทดสอบใน Ubuntu และ Debian
famzah

23

เปิดตัวจัดการแพคเกจ Synaptic และคลิกปุ่ม "Origin" ที่ด้านล่างของแถบด้านข้างซ้าย มันจะแสดงรายการแหล่งที่มาของคุณ เลือกแหล่งที่มาเพื่อดูแพ็คเกจที่มี / ติดตั้ง


4

สคริปต์นี้แสดงรายการแพ็คเกจที่ติดตั้งและพร้อมใช้งานใน PPA:

#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers

name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null  | awk '/^[^ ]+ ok installed/{print $4}'

ฉันใช้นี้

BTW สำหรับการลบ PPA ออกจากการใช้งานให้ใช้โปรแกรม ppa-purge ผมได้สร้างรุ่นปรับปรุงของมันนี่


3

ภายใต้ Quantal (12.10) จำเป็นต้องลบช่องว่างในบรรทัดต้นทาง

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
 | fgrep ':install ok installed' \
 | cut -d: -f1 \
 | (while read pkg; do 
   inst_version=$(apt-cache policy $pkg \
                            | fgrep Installed: \
                            | cut -d: -f2-); 
   origin=$(apt-cache policy "$pkg" \
                      | fgrep " ***${inst_version}" -C1 \
                      | tail -n 1 \
                      | cut -c12-); 
   echo $pkg $origin; 
 done)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.