Có thể có được một danh sách các gói được cài đặt gần đây nhất?


157

Có thể lấy danh sách các gói được cài đặt gần đây nhất thông qua apt-get không?



1
Bây giờ, nếu chỉ có ai đó sẽ cho tôi biết cách liệt kê các gói được cài đặt thủ côngtôi chưa gỡ bỏ. Thở dài, Linux.
Alexanderr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | lesskhông làm điều đó?
GKFX

@GKFX Ý tôi là trong bối cảnh các gói được cài đặt gần đây.
Alexanderr Dubinsky

@AleksandrDubinsky Bạn sẽ phải sử dụng comm -12 a bvới amột bản sao được sắp xếp apt-mark showmanualbmột danh sách được sắp xếp từ một trong những câu trả lời dưới đây.
GKFX

Câu trả lời:


180

Lệnh liệt kê các gói được cài đặt gần đây đã được cài đặt thông qua bất kỳ phương thức nào ( apt-get, Trung tâm phần mềm và cộng sự):

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

Ví dụ đầu ra:

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

Bạn có thể chạy lệnh này để chỉ liệt kê các tên gói được cài đặt gần đây,

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

Lệnh liệt kê lịch sử của apt-get(LƯU Ý: đây không liệt kê các phụ thuộc được cài đặt, nó chỉ liệt kê các apt-getlệnh trước đó đã được chạy):

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

Ví dụ đầu ra:

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

vấn đề với synap là nó không hiển thị những gì bạn làm với aptitude, apt-get và dpkg, vì lý do này +1 cho tùy chọn này
hhlp

Lệnh này sẽ không hiển thị cập nhật. Sử dụng trung tâm phần mềm để xem mọi thứ.
HDave

1
Có thể tốt hơn để lưu một tệp văn bản như thế nàycat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logsẽ đủ. Không có nhu cầu sử dụng cat. Xem thêm này .
augurar

1
lưu ý rằng điều này dường như chỉ để tìm các gói mới được cài đặt. Các gói mà phiên bản mới đã được cài đặt xuất hiện như upgradetrongdpkg.log
Andre Holzner

14

Trung tâm phần mềm của Ubuntu hiển thị toàn bộ lịch sử của tất cả các gói đã được cài đặt / nâng cấp / gỡ bỏ. Chỉ cần nhấp vào "Lịch sử" ở cuối danh sách ở bên trái.


4
Nút lịch sử này hiện ở đầu GUI và có thể hiển thị các gói và bản cập nhật đã cài đặt. Đây phải là câu trả lời được chấp nhận cho câu hỏi vì đây là câu trả lời duy nhất phù hợp với các cập nhật.
HDave

Câu hỏi này không chỉ định môi trường máy tính để bàn (GUI), nhưng câu trả lời được chấp nhận là hợp lệ trong cả hai kịch bản GUI và không phải GUI.
msanford

@HDave Chắc chắn không đúng, dpkg.lognhật ký cập nhật.
GKFX

10

Để xem các gói cũ hơn được sắp xếp theo thời gian cài đặt:

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

Và đối với các gói được cài đặt từ rất lâu rồi:

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

Tôi tìm thấy một gói được cài đặt 2 ngày trước /var/log/dpkg.log, nhưng không phải trong /var/log/apt/history.log. Vẫn không biết tại sao ...
Samuel Li

5

Thủ thuật sau đây trả lời yêu cầu của Alexanderr Dubinsky để giới hạn điều này đối với các gói được cài đặt thủ công:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 liệt kê các dòng chung cho hai tệp được sắp xếp.
  • <(command)mở rộng thành tên của tệp chứa đầu ra của command.
  • apt-mark showmanualliệt kê các gói cài đặt thủ công; I E. những thứ không bao giờ nên tự động loại bỏ.
  • grep " install " /var/log/dpkg.log được lấy từ câu trả lời được chấp nhận.

Một cách khác, hiển thị thêm thông tin, theo thứ tự thời gian và truy cập tất cả các nhật ký có sẵn, là:

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\>giới hạn kết quả để cài đặt mới. Ví dụ, bạn có thể sử dụng grep để giới hạn tìm kiếm trong khoảng thời gian ba tháng bằng cách thêm grep 2016-0[567]vào đường ống đầu tiên; nó rất linh hoạt.


Điều này đang trở nên gần gũi hơn. Những điều có thể được cải thiện: 1) hiển thị các gói theo thứ tự thời gian, 2) hiển thị thêm chi tiết như ngày / lần cài đặt, phiên bản, thậm chí kích thước 3) hiển thị tất cả các gói được cài đặt kể từ khi HĐH được cài đặt.
Alexanderr Dubinsky

Kinh ngạc! Bạn có phiền nếu tôi dọn dẹp câu trả lời của bạn ngắn gọn hơn với nhiều lời giải thích hơn về mỗi lệnh không?
Alexanderr Dubinsky

@AleksandrDubinsky Cảm ơn bạn đã chỉnh sửa; Tôi đã sửa mô tả sao cho phù hợp với những thay đổi bạn đã thực hiện.
GKFX

Bạn có phiền nếu tôi loại bỏ tiếng ồn "câu trả lời lừa sau đây của Alexanderr Dubinsky", lệnh đầu tiên không hữu ích, đặt tiêu đề tốt, đặt lệnh chính lên trên, thêm đầu ra mẫu và thử mô tả tất cả các lệnh bị liên lụy?
Alexanderr Dubinsky

1
Có một lỗi trong lệnh cuối cùng, bởi vì grep -Ftìm thấy một phần khớp. Ví dụ: nếu python3được cài đặt, nó cũng sẽ khớp với tất cả các thư viện python3 ( python3-click-package) bao gồm cả các thư viện không còn được cài đặt. Hơn nữa, grep -Fwkhông giúp đỡ vì -là một ranh giới từ.
Alexanderr Dubinsky

5

Tất cả trên một dòng; để sử dụng lệnh

Chỉ chọn và in các tên gói được cài đặt gần đây, tất cả trên một dòng.

Để làm như vậy, thay đổi câu trả lời được bình chọn nhiều nhất thành:

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

Điều này dẫn đến một dòng tên gói. Một dòng như vậy có thể dễ dàng được thêm vào một sudo apt-get purgelệnh.

Ví dụ đầu ra

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

Liệt kê các gói bên dưới một gói khác

Theo nhu cầu phổ biến, đây là phiên bản phù hợp một chút để liệt kê các gói bên dưới một gói khác:

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

Đừng phân tích đầu ra của catlệnh. Và làm thế nào về điều này awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj

@AvinashRaj awkLệnh của bạn in các gói bên dưới một gói khác; một mỏ tiếp theo khác. Đó là lý do tại sao một ví dụ đầu ra có thể hữu ích theo thời gian.
Serge Stroobandt

2

Có một gói được gọi là wajig Kiểm tra nó cho dòng lệnh, đó là điều đầu tiên tôi cài đặt bây giờ. Giống như năng khiếu, ngoại trừ việc nó hoạt động như bạn mong đợi một bộ điều phối lệnh hoạt động. Vì vậy, thực sự, nó không giống như năng khiếu. Các lệnh dưới đây chỉ là một tập hợp con nhỏ.

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
Tôi không chắc làm thế nào để wajiggiúp liệt kê các gói mới nhất. Tôi không thấy một lệnh cho điều đó sau khi xem qua các lệnh. Bạn có biết lệnh là gì không?
Ehtesh Choudhury

1

Ngoài câu trả lời của DoR, đối với những người thích GUI, còn có mục menu Tệp -> Lịch sử trong Synaptic.


2
Và như rafalcieslak chỉ ra, chức năng này cũng có sẵn trong Trung tâm phần mềm.
belacqua

3
Lịch sử Synaptic chỉ hiển thị những gì bạn đã cài đặt qua Synaptic ... hoàn toàn vô dụng.
HDave

1

Dưới đây là một số shell để liệt kê các tập tin cài đặt dpkg. (bao gồm tất cả các gói cài đặt apt / aptitude / trung tâm phần mềm / synap)

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

Điều này không bao gồm thông tin thời gian / ngày cài đặt. Nhưng có thể hữu ích trong việc xác định bất kỳ sự khác biệt trong các gói được cài đặt từ cài đặt os đến hiện tại.


-1

Vấn đề với việc xem lịch sử cài đặt trong Trung tâm phần mềm hoặc Synaptic là khó sao chép / dán nội dung vào email (ví dụ: khi nói chuyện với bộ phận hỗ trợ kỹ thuật!). Thay thế là để xem nội dung của các tệp nhật ký trong /var/log/aptroot.


2
Chỉ cần làm rõ, để chỉ xem nội dung /var/log/apt, bạn KHÔNG cần phải root hoặc với bất kỳ đặc quyền nào của quản trị viên.
Samuel Li
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.