可以通过在关键字列表中添加一行具有以下语法的行来选择gentoo stable系统上的测试包:
cat /etc/portage/package.keywords
=dev-python/ipython-0.13.2 ~amd64
# and many lines later
=dev-python/ipython-0.14.1 ~amd64
# and many lines later
>=dev-python/ipython-0.13.4 ~amd64这个文件会在一段时间内增长,迟早会记不起哪一行已经过时。
应该删除一行,
发布于 2016-06-19 09:44:08
发布于 2014-07-22 18:47:58
我编写了一个处理这个问题的小python脚本。逻辑查看文件package.accept_keywords中的每一行,并且只对以=或<=开头的行起作用。这些行有一个最大的绑定版本,因此我们可以检查它们是否还需要。没有限定符或>=的行保留为-is,因为我们无法知道它们是否过时。
然后对我们关心的行进行解析,并检查已安装的包版本。如果已安装的版本比关键字版本更新,或者根本不安装,则该关键字被视为过时。如果已安装的包与关键字版本相同,则将检查已安装的包是否仍然是关键字。如果已经稳定下来,这条线就会过时,否则就会被保留。
#!/bin/env python
import re
import portage
vartree = portage.db[portage.root]['vartree']
with open('/etc/portage/package.accept_keywords') as f:
for x in f:
# eat newline
x = x.rstrip()
# we only want lines with a bounded max version
if re.match('^(=|<=)',x):
# get the package cpv atom -- strip the =|<= and the trailing keyword(s)
cpv_masked = re.sub('[<=]','',x.split(' ',1)[0])
cat, pkg, ver, rev = portage.catpkgsplit(cpv_masked)
# get cpv for all installed versions of the package
cpv_installed = vartree.dep_match(cat+'/'+pkg)
for cpv in cpv_installed:
cmp = portage.pkgcmp(portage.pkgsplit(cpv), portage.pkgsplit(cpv_masked))
# if the installed version is not newer than the masked version
if (cmp <= 0):
# check if this version is still keyworded
cpv_keywords = vartree.dbapi.aux_get(cpv, ['KEYWORDS'])
# keep keyword if the package has no keywords (**)
if not cpv_keywords[0]:
print(x)
break
# check if the installed package is still keyworded
for cpv_keyword in cpv_keywords[0].split(' '):
if cpv_masked_keyword == cpv_keyword:
# it is, keep the atom and move on to the next one
print(x)
break
else:
# keep atoms that have an unbounded max version
print(x)这将打印新的关键字文件的标准输出。注意:不要将输出重定向回/etc/portage/package.accept_keywords,否则会破坏文件并丢失所有内容。
这将大大有助于清理关键字文件和其他关注事项,对文件进行排序,然后检查同一包的多行,将有助于解决大部分剩馀内容。
发布于 2015-02-23 08:52:10
你知道你可以转换包。*目录中的文件,对吗?
然后你可以把你的原子组织在几个文件中,例如,在我的系统中,我得到了以下内容(嗯,不完全,我现在不在我的笔记本电脑上。)但你有这样的想法):
/etc/portage/package.keywords:
package.keywords
qt5.keywords
xfce.keywords
/etc/portage/package.use:
package.use
qt5.use
xfce.use等。
我发现这真的很有用,可以帮助我更新文件。
https://unix.stackexchange.com/questions/144084
复制相似问题