Ale*_*exD 7 gentoo package-management emerge
我有 Gentoo VM 用于测试不同的木偶配方,我经常需要删除包以使其进入干净的初始状态。虽然我可以在只安装几个包时手动执行此操作(并使用 删除依赖项emerge -av --depclean),但有一些方法涉及安装几十个 perl 模块,我需要在测试后清理这些模块。我考虑将它们打包到单个虚拟 ebuild 中,但我已经将测试系统弄脏了许多已安装的包,我想避免一一查看它们。所以问题是 如何找到某个特定日期之后安装的软件包列表?
Mat*_*Mat 11
您可以app-portage/genlop为此使用。
genlop -l --date some_date
Run Code Online (Sandbox Code Playgroud)
将列出在该日期或之后合并的所有包。(您也可以指定结束日期。)
要获取适用于 的软件包列表emerge --unmerge,请尝试以下操作:
genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'
Run Code Online (Sandbox Code Playgroud)
在实际取消合并之前仔细检查该列表,意外删除系统包并不好玩。
在给定日期之后获得合并的事物列表的另一种方法是查看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
Run Code Online (Sandbox Code Playgroud)
使用日期(即./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]
Run Code Online (Sandbox Code Playgroud)