Bagaimana cara mendaftar semua paket yang diinstal dengan nomor versi tertentu?

27

Saya ingin mendaftar semua paket yang diinstal, dengan nomor versi spesifik pada sistem saya. Saya telah memeriksa dpkg --get-selections( Bagaimana mendaftar semua paket yang diinstal ) tetapi tidak menunjukkan apa yang saya butuhkan. Sebagai contoh:

$ dpkg --get-selections apache2
apache2                                         install

menunjukkan bahwa apache2 diinstal, namun bukan versi. Saya baru-baru ini melakukan apt-get upgradejadi apache2.2.22-1 harus diinstal versi ( http://packages.ubuntu.com/precise-updates/apache2.2-common ), tetapi bagaimana saya bisa menunjukkan itu?

Terima kasih!

pengguna2133697
sumber

Jawaban:

35

Gunakan dpkg -lsebagai gantinya.

Contoh:

dpkg -l | grep '^ii' | grep skype

Output ini:

alaa @ aa-lu: ~ $ dpkg -l | grep '^ ii' | skype grep
ii skype 4.2.0.11-0ubuntu0.12.04.2 i386 client untuk Skype VOIP ...

Jika Anda hanya ingin mengekstrak nama dan versinya, Anda dapat melakukan ini:

dpkg -l | grep '^ii' | grep skype | awk '{print $2 "\t" $3}'

Yang hanya akan mencetak kolom kedua dan ketiga dari hasil di atas, seperti ini:

alaa @ aa-lu: ~ $ dpkg -l | grep '^ ii' | grep skype | awk '{print $ 2 "\ t" $ 3}'
skype 4.2.0.11-0ubuntu0.12.04.2

Tentu saja, jika Anda ingin mendaftar semua paket Anda yang terinstal dengan versinya, dan bukan hanya Skype, maka hapus saja grep skypebagian tersebut untuk membuat perintah seperti ini:

dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'
Alaa Ali
sumber
Saya memperhatikan dpkg-l memotong nomor versi jika mereka lebih panjang dari 21 karakter, dan seperti semua versi paket panjangnya 22 karakter. :(
ThorSummoner
12

Menggunakan

dpkg-query --show apache2

untuk mendapatkan nomor versi untuk paket apache2dan

dpkg-query --show 

untuk mendapatkan nomor versi untuk semua paket yang diinstal

Florian Diesch
sumber
1
Solusi Anda memberi saya ~ 20% lebih banyak paket daripada dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'. Tahukah Anda apa perbedaannya?
Thomas Jensen
3
@ Thomas Jensen: Terima kasih telah melihat ini. dpkg-query --showsebenarnya tidak menunjukkan paket yang diinstal , tetapi yang tidak diinstal . Itu menunjukkan misalnya paket setengah terinstal atau paket dengan file konfigurasi yang tersisa juga.
Florian Diesch