emerge 无法阻止安装,因为它找不到包名称

emerge 无法阻止安装,因为它找不到包名称

Gentooemerge找不到包的名称试图阻止安装dev-python/setuptools-53.0.0失败

emerge: error: Invalid Atom(s) in --exclude parameter: 'dev-python/setuptools-53.0.0' (only package names and slot atoms (with wildcards) allowed)

哪里有错误,请指出正确的方法。

答案1

您在问题中包含的错误消息指出:

仅允许包名称和插槽原子(带通配符)

你提供的是dev-python/setuptools-53.0.0.这是 Gentoo 中无效的包规范(atom)。它最接近要写入的范围/相等原子=dev-python/setuptools-53.0.0

但是,根据该错误消息,该参数不允许使用确切的版本规范--exclude。如果您想完全禁止setuptools此单一调用包含任何版本emerge,您可以指定--exclude dev-python/setuptoolsdev-python/setuptools不是“开槽”的,所以你不能比这更准确了。

阻止安装特定软件包版本

如果您需要明确禁止安装正是=dev-python/setuptools-53.0.0,您可以使用package.mask.您可以根据您的系统在以下位置之一找到并编辑(或创建)此文件:

  • /etc/portage/package.mask/package.mask(这里有一个名为的文件夹/etc/portage/package.mask,该文件夹内的所有文件都将由 portage 作为掩码条目加载。我通常只创建一个也在package.mask该文件夹中命名的文件,但这由您自行决定)。
  • /etc/portage/package.mask(这里没有文件夹,只有一个文件)。

您可以编辑此文件以指示要屏蔽的软件包版本。一旦你这样做了,它将导致 portage 将该包排除在考虑范围之外。但是,这可能会导致无法安装某些软件包。

如果您确实使用此方法屏蔽该包,则应在屏蔽前面添加注释,描述您将其放置在屏蔽文件中的原因。当emerge调用因屏蔽而失败时,它会显示您的注释,提醒您屏蔽该包的原因,并帮助您决定是否要在此时取消屏蔽它。

package.mask屏蔽所有 53.0 版本(包括 53.0.0、53.0.1 等)的示例条目:

# Mask dev-python/setuptools-53.0* because it has some bug which isn’t present
# in setuptools-51* and which should be fixed in setuptools-53.1*.
=dev-python/setuptools-53.0*

另一个例子,完全匹配 53.0.0(当 53.0.1 出现时,将开始被允许):

# Mask dev-python/setuptools-53.0.0 because it has a bug which breaks things for me
# which should be fixed in dev-python/setuptools-53.0.1 when that’s released.
=dev-python/setuptools-53.0.0

有关原子语法的更全面的解释,请参见电子构建(5)。有关 的更多详细信息package.mask,请参阅搬运(5)package.mask并在 部分下搜索/etc/portage/

相关内容