我正在尝试winswitch
在 CentOs 6 上安装。它需要nxagent
。但在 centos 中,包名称是nx
。有没有办法告诉 yum 跳过检查nxagent
依赖项(我nx
已经安装了)?指定--skip-broken
跳过整个过程。
答案1
通常yum
没有忽略依赖项中的单个包的选项。选项--skip-broken
会忽略所有未解决的依赖项。
您可以尝试yum --exclude=packagename
,但它会从所有存储库的更新中按名称或 glob 排除特定包,而不是从依赖项中排除。
答案2
该rpm
命令具有--nodeps
您可以使用的选项。一个挑战是它rpm
本身并不了解 yum 存储库。以下命令将安装或更新软件包,忽略依赖项,但会自动从软件包repoquery
中的存储库中查找下载 URL yum-utils
。
rpm -Uvh --nodeps $(repoquery --location winswitch)
此后,常规操作yum update
很可能会成功,并且不会出现依赖性错误。
答案3
听起来您正在尝试安装尚未为操作系统设计的软件包,即,如果它是为 CentOS 设计的,那么它将被nx
正确要求。
解决该问题的另一个方法是创建并安装一个不包含任何文件的小型 shim RPM 包,但在 spec 文件中包含以下几行(其中包括):
requires: nx
provides: nxagent
nxagent
这样,依赖关系就应该得到满足,但是它可能期望文件位于它期望安装的包和nx
CentOS 提供的包之间的不同位置。
答案4
这个单行示例可以做到这一点(tigervnc-server 是正在安装的包)
rpm -ivh --nodeps ` yumdownloader tigervnc-server | perl -ne 'print $2 if(/^(\[.+\]\s*|)(.*?\.rpm)[\s:]/)'`