私はさまざまな人形のレシピをテストするために使用するGentoo VMを持っています。少数のパッケージしかインストールされていない場合は手動でこれを実行できますが(および依存関係の削除を使用emerge -av --depclean
)、テスト後にクリーンアップする必要がある数十のPerlモジュールをインストールする方法があります。私はそれらを単一の仮想ebuildにパッケージ化することを検討しましたが、すでにインストールされている多くのパッケージでテストシステムを乱雑にし、1つずつレビューすることを避けたいと思います。だから質問は 特定の日付以降にインストールされたパッケージのリストを見つける方法?
ベストアンサー1
app-portage/genlop
この目的に使用できます。
genlop -l --date some_date
その日付以降にマージされたすべてのパッケージが一覧表示されます。 (終了日を指定することもできます。)
適切なパッケージのリストを取得するには、emerge --unmerge
以下を試してください。
genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'
実際にマージをキャンセルする前に、このリストを慎重に確認してください。誤ってシステムパッケージを削除するのは楽しいことではありません。
特定の日付以降にマージされたアイテムのリストを取得するもう1つの方法は、BUILD_TIME
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
この日付(例./script "2001/09/30 21:32"
:)を呼び出すと、その日付以降にマージされたパッケージのリストを取得できます。
Portageは、マージが新しいインストールか更新かをデータベースに保存しません。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]