Apakah mungkin untuk mendapatkan daftar paket yang paling baru diinstal?


157

Apakah mungkin untuk mendapatkan daftar paket yang paling baru diinstal melalui apt-get?



1
Sekarang, jika hanya seseorang yang memberi tahu saya bagaimana mendaftar paket yang diinstal secara manual yang belum saya hapus. Huh, Linux.
Aleksandr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | lesstidak melakukannya?
GKFX

@GKFX yang saya maksudkan dalam konteks paket yang baru diinstal.
Aleksandr Dubinsky

@AleksandrDubinsky Anda harus menggunakan comm -12 a bdengan asalinan diurutkan dari apt-mark showmanualdan bdaftar diurutkan dari salah satu jawaban di bawah ini.
GKFX

Jawaban:


180

Perintah untuk mendaftar paket yang baru diinstal yang diinstal melalui metode apa pun ( apt-get, Software Center et al.):

grep " install " /var/log/dpkg.log

Contoh output:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

Anda bisa menjalankan perintah ini untuk mendaftar hanya nama-nama paket yang baru diinstal,

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

Command to list history of apt-get(CATATAN: ini tidak mencantumkan dependensi yang diinstal, itu hanya mencantumkan apt-getperintah sebelumnya yang dijalankan):

grep " install " /var/log/apt/history.log

Contoh output:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc

masalah dengan sinaptik adalah tidak menunjukkan apa yang Anda lakukan dengan aptitude, apt-get, dan dpkg, untuk alasan ini +1 untuk opsi ini
hhlp

Perintah ini tidak akan menampilkan pembaruan. Gunakan pusat perangkat lunak untuk melihat semuanya.
HDave

1
Mungkin lebih baik menyimpan file teks seperti inicat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logakan cukup. Tidak perlu digunakan cat. Lihat juga ini .
augurar

1
perhatikan bahwa ini tampaknya hanya untuk menemukan paket yang baru saja diinstal. Paket yang menginstal versi baru muncul sebagai upgradedalamdpkg.log
Andre Holzner

14

Pusat Perangkat Lunak Ubuntu menunjukkan seluruh riwayat semua paket yang diinstal / ditingkatkan / dihapus. Cukup klik "Riwayat" di bagian bawah daftar di sebelah kiri.


4
Tombol riwayat ini sekarang ada di bagian atas GUI dan dapat menampilkan paket dan pembaruan yang diinstal. Ini harus menjadi jawaban yang diterima untuk pertanyaan karena satu-satunya jawaban yang berfungsi untuk pembaruan.
HDave

Pertanyaan ini tidak menentukan lingkungan desktop (GUI), tetapi jawaban yang diterima valid dalam skenario GUI dan non-GUI.
msanford

@ HD Jelas tidak benar, dpkg.logmencatat pembaruan.
GKFX

10

Untuk melihat juga paket lama yang diurutkan berdasarkan waktu instalasi:

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log

Dan untuk paket yang diinstal sangat lama:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

Saya menemukan paket yang diinstal 2 hari yang lalu di /var/log/dpkg.log, tetapi tidak di /var/log/apt/history.log. Masih tidak tahu mengapa ...
Samuel Li

5

Trik berikut menjawab permintaan Aleksandr Dubinsky untuk membatasi ini untuk paket yang diinstal secara manual:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 daftar baris yang umum untuk dua file yang diurutkan.
  • <(command)memperluas ke nama file yang berisi output dari command.
  • apt-mark showmanualdaftar paket yang diinstal secara manual; yaitu. yang tidak boleh dihapus secara otomatis.
  • grep " install " /var/log/dpkg.log diambil dari jawaban yang diterima.

Alternatif, menampilkan lebih banyak informasi, dalam urutan kronologis, dan mengakses semua log yang tersedia, adalah:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>membatasi hasil untuk instalasi baru. Anda bisa, misalnya, menggunakan grep untuk membatasi pencarian untuk periode tiga bulan dengan menambahkan grep 2016-0[567]ke saluran pipa pertama; ini sangat fleksibel.


Ini semakin dekat. Hal-hal yang dapat ditingkatkan: 1) menunjukkan paket-paket dalam urutan kronologis, 2) menunjukkan rincian lebih lanjut seperti menginstal tanggal / waktu, versi, bahkan mungkin ukuran 3) menunjukkan semua paket yang diinstal sejak OS diinstal.
Aleksandr Dubinsky

Luar biasa! Apakah Anda keberatan jika saya membersihkan jawaban Anda agar lebih ringkas dengan lebih banyak penjelasan tentang setiap perintah?
Aleksandr Dubinsky

@AlexandrDubinsky Terima kasih untuk suntingan itu; Saya telah mengoreksi uraian sehingga cocok dengan perubahan yang Anda buat.
GKFX

Apakah Anda keberatan jika saya menghapus "Trik berikut ini menjawab permintaan Aleksandr Dubinsky", perintah pertama yang tidak berguna, taruh tajuk yang bagus, letakkan perintah utama di atas, tambahkan sampel output, dan coba uraikan semua perintah terlibat?
Aleksandr Dubinsky

1
Ada bug di perintah terakhir, karena grep -Fmenemukan kecocokan sebagian. Misalnya, jika python3diinstal, itu juga akan cocok dengan semua pustaka python3 ( python3-click-package) termasuk yang tidak lagi diinstal. Selain itu, grep -Fwtidak membantu karena -merupakan batas kata.
Aleksandr Dubinsky

5

Semua dalam satu baris; untuk penggunaan perintah

Pilih dan cetak hanya nama-nama paket yang baru saja diinstal, semuanya dalam satu baris.

Untuk melakukannya, ubah jawaban yang paling banyak dipilih menjadi:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

Ini menghasilkan satu baris nama paket. Baris seperti itu dapat dengan mudah ditambahkan ke sudo apt-get purgeperintah.

Contoh output

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

Daftar paket satu di bawah yang lain

Berdasarkan permintaan yang populer, ini adalah versi yang sedikit disesuaikan untuk mendaftarkan paket satu di bawah yang lain:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'

Jangan parsing output dari catperintah. Dan bagaimana dengan ini awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj

@AvinashRaj awkPerintah Anda mencetak paket satu di bawah yang lain; saya satu berikutnya lain. Itulah sebabnya contoh keluaran mungkin berguna dari waktu ke waktu.
Serge Stroobandt

2

Ada paket bernama wajig. Periksa untuk baris perintah, ini adalah hal pertama yang saya instal sekarang. Seperti aptitude, kecuali itu berfungsi seperti Anda mengharapkan pengirim perintah untuk bekerja. Jadi sungguh, ini tidak seperti bakat. Perintah di bawah ini hanya sebagian kecil.

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.

5
Saya tidak yakin bagaimana wajigmembantu untuk mendaftarkan paket terbaru. Saya tidak melihat perintah untuk itu setelah melihat sepintas perintah. Apakah Anda tahu apa perintahnya?
Ehtesh Choudhury

1

Selain jawaban DoR, bagi mereka yang lebih memilih GUI, ada item menu File -> History di Synaptic.


2
Dan seperti yang ditunjukkan rafalcieslak , fungsi ini juga tersedia di Pusat Perangkat Lunak.
belacqua

3
Sejarah Synaptic hanya menunjukkan apa yang Anda instal melalui Synaptic ... sama sekali tidak berguna.
HDave

1

Berikut adalah beberapa shell untuk mendaftar file yang diinstal dpkg. (yang harus mencakup semua paket yang terinstal apt / aptitude / software center / synaptic)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

Ini tidak termasuk info waktu / tanggal pemasangan. Tetapi mungkin berguna dalam menentukan perbedaan dalam paket yang diinstal dari os install ke saat ini.


-1

Masalah dengan melihat riwayat instalasi di Software Center atau Synaptic adalah sulit untuk menyalin / menempel konten ke email (misalnya ketika berbicara dengan dukungan teknis!). Alternatifnya adalah melihat konten file log /var/log/aptsebagai root.


2
Hanya untuk memperjelas, untuk sekadar melihat konten /var/log/apt, Anda TIDAK perlu menjadi root, atau dengan hak istimewa administrator apa pun.
Samuel Li
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.