젠투에서 특정 날짜 이후에 설치된 패키지 목록을 어떻게 찾나요?

젠투에서 특정 날짜 이후에 설치된 패키지 목록을 어떻게 찾나요?

저는 다양한 꼭두각시 요리법을 테스트하는 데 사용하는 Gentoo VM을 가지고 있으며, 패키지를 깨끗한 초기 상태로 되돌리기 위해 종종 패키지를 제거해야 합니다. 소수의 패키지만 설치된 경우 수동으로 이 작업을 수행할 수 있지만(및 종속성 제거 사용 emerge -av --depclean), 테스트 후 정리해야 하는 수십 개의 Perl 모듈을 설치하는 방법이 있습니다. 나는 그것들을 단일 가상 ebuild로 패키징하는 것을 고려했지만, 이미 설치된 많은 패키지로 테스트 시스템을 어수선하게 만들었고 하나씩 검토하는 것을 피하고 싶습니다. 그래서 질문은 특정 날짜 이후에 설치된 패키지 목록을 찾는 방법?

답변1

app-portage/genlop이런 목적 으로 사용할 수 있습니다 .

genlop -l --date some_date

해당 날짜 이후에 병합된 모든 패키지가 나열됩니다. (종료일을 지정할 수도 있습니다.)

적합한 패키지 목록을 얻으려면 emerge --unmerge다음을 시도하십시오.

genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'

실제로 병합을 취소하기 전에 이 목록을 주의 깊게 확인하십시오. 실수로 시스템 패키지를 삭제하는 것은 재미가 없습니다.

특정 날짜 이후에 병합된 항목 목록을 얻는 또 다른 방법은 BUILD_TIME포티지 데이터베이스에 저장된 내용을 살펴보는 것입니다.

#!/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

이 날짜(예: ./script "2001/09/30 21:32")를 호출하면 해당 날짜 이후에 병합된 패키지 목록을 얻을 수 있습니다.

포티지는 병합이 새로운 설치인지 업데이트인지를 데이터베이스에 저장하지 않습니다. emerge.log모든 시스템 기록이 있다고 가정하면 이 파일에서 이 정보를 재구성할 수 있습니다.

이러한 모든 문제를 처리하는 더 쉬운 방법은 패키지 세트를 사용하는 것입니다. 새로운 레시피를 시도할 때마다 세트를 만들어서 정리하는 데 사용하세요. (Depclean은 여전히 ​​필요합니다.)

# 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] 

답변2

이 스크립트는 emerged-after특정 날짜 이후에 나타난 모든 패키지를 나열합니다.

#!/bin/bash
etime=`date -d $1 +%s`
eix '-I*' --format '<installedversions:DATESORT>' | cut -f1,3 | cat <(cat -) <(echo $etime) | sort -nr | sed -e/$etime/q | sed -e'/[0-9]*\t*/s///'

eix설치한 다음(그렇지 않은 경우 emerge eix && eix-update) 전화 해야 합니다 .bash emerged-after 31/12/2016

관련 정보