Bạn có thể sử dụng app-portage/genlop
cho việc này.
genlop -l --date some_date
sẽ liệt kê tất cả các gói được hợp nhất vào hoặc sau ngày đó. (Bạn cũng có thể chỉ định ngày kết thúc.)
Để có được danh sách các gói phù hợp emerge --unmerge
, hãy thử một số thứ như:
genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'
Kiểm tra kỹ danh sách đó trước khi thực sự không hợp nhất, loại bỏ các gói hệ thống một cách tình cờ là không vui.
Một cách khác để có được một danh sách các thứ được hợp nhất sau một ngày nhất định là xem xét BUILD_TIME
lưu trong cơ sở dữ liệu portage.
#!/bin/bash
stime=$(date -d "$1" +%s)
for dir in /var/db/pkg/*/* ; do
if [ -f $dir/BUILD_TIME ] ; then
btime=$(<$dir/BUILD_TIME)
if [ $btime -ge $stime ] ; then
package=$(basename $dir)
category=$(basename $(dirname $dir))
echo $category/$package
fi
fi
done
Gọi đây với một ngày (tức là ./script "2001/09/30 21:32"
) và bạn sẽ nhận được một danh sách các gói được hợp nhất kể từ ngày đó.
Portage không lưu trữ cho dù hợp nhất là cài đặt mới hay cập nhật trong cơ sở dữ liệu của nó. Bạn có thể xây dựng lại thông tin đó từ emerge.log
tệp giả sử bạn có tất cả lịch sử hệ thống của mình ở đó.
Một cách đơn giản hơn để xử lý tất cả điều này sẽ là sử dụng các bộ gói. Tạo một bộ mỗi khi bạn thử một công thức mới và sử dụng nó để dọn dẹp. (Depclean vẫn cần thiết.)
# echo dev-perl/IO-AIO > /etc/portage/sets/my_set
# emerge -a @my_set
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] dev-perl/IO-AIO-2.33
Would you like to merge these packages? [Yes/No] y
>>> Recording @my_set in "world" favorites file...
...
>>> Installing (1 of 1) dev-perl/IO-AIO-2.33
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.
* GNU info directory index is up-to-date.
# emerge -a --unmerge @my_set
* This action can remove important packages! In order to be safer, use
* `emerge -pv --depclean <atom>` to check for reverse dependencies before
* removing packages.
>>> These are the packages that would be unmerged:
dev-perl/IO-AIO
selected: 2.33
protected: none
omitted: none
All selected packages: dev-perl/IO-AIO-2.33
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
Would you like to unmerge these packages? [Yes/No]
genlop
dựa vào phân tích cú pháp logfile và không phản ánh trạng thái hệ thống hiện tại nên đầu ra của nó bao gồm các gói đã bị xóa và một số gói được bao gồm nhiều lần khi chúng được cài đặt nhiều lần và cũng có một số gói được cập nhật cùng lúc giai đoạn = Stage. Vì vậy, sau tất cả, tôi vẫn cần kiểm tra từng gói một mà tôi đang cố gắng tránh.