Bagaimana saya bisa mendaftar semua paket yang saya instal dari repositori tertentu?


51

Bagaimana saya bisa mendaftar semua paket yang saya instal dari repositori tertentu?

Bagaimana saya bisa mendaftar semua paket yang diinstal yang tidak tersedia dari arsip utama Ubuntu, dan juga melihat dari mana mereka berasal? (Jika saya tahu jawaban untuk pertanyaan ini, saya dapat mengambil daftar itu untuk nama PPA tertentu untuk menemukan jawaban untuk pertanyaan pertama saya.)


Karena sepertinya tidak ada alat baris perintah yang ada untuk ini (sayangnya), saya akan menerima salah satu jawaban GUI.
Marius Gedminas

Jawaban:


24

Perluas item "Perangkat Lunak Terpasang" di Pusat Perangkat Lunak Ubuntu. Anda akan melihat daftar semua repositori berbeda yang telah Anda aktifkan. Mengklik repo akan menunjukkan paket yang telah Anda instal dari masing-masing.

teks alternatif


Saya khawatir pilihan itu hanya tersedia di Ubuntu 10.10 atau saya kehilangan sesuatu? Pusat Perangkat Lunak Saya tidak menampilkan sumber di bawah menu itu.
lovinglinux

2
Dalam versi saya, saya memiliki dropdown "Dipasang" di bagian atas. Ketika saya memilih opsi itu, saya dapat memilih berbagai sumber (inti, untuk pembelian, PPA ...)
Alexis Wilke

Di Ubuntu 16.04, halaman ini tidak lagi tersedia. Namun, sinaptik memiliki fitur serupa - klik "Asal" di kiri bawah.
Josh

26

Tampaknya tidak ada catatan tentang asal paket yang diinstal .

Jika Anda setuju untuk mendapatkan lokasi dari mana sebuah paket dengan nama yang sama akan diunduh, ini tersedia melalui apt-cache policy. Skrip berikut (agak jelek) membantu saya:

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)

Perhatikan bahwa ini cukup rapuh, karena membuat asumsi tentang output apt-cache policy, yang mungkin berubah di semua versi ...


Ya, ini pada dasarnya berarti menulis alat dari awal. Dan saya pikir parsing / var / lib / apt / daftar dengan Perl atau Python akan lebih cepat dan lebih kuat.
Marius Gedminas

Bekerja dengan normal di sini, pada tahun 2018 :) Terima kasih!
N0rbert

Saya mengembangkan solusi serupa yang diuji pada Ubuntu dan Debian.
famzah

23

Buka Synaptic Package Manager dan klik tombol "Origin" di bagian bawah sidebar kiri. Ini akan mencantumkan sumber Anda. Pilih sumber untuk melihat paket yang tersedia / diinstal.


4

Skrip ini mencantumkan paket yang diinstal dan tersedia di 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}'

Saya menerapkan ini .

BTW Untuk menghapus PPA dari penggunaan, gunakan program ppa-purge; Saya telah membuat versi yang disempurnakan di sini .


3

Di bawah Quantal (12.10), spasi di garis asal perlu dihilangkan.

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.