如何在 Linux 上删除“update-alternatives”链接

如何在 Linux 上删除“update-alternatives”链接

很抱歉问这个问题,但我几个小时都无法解决这么简单的问题:

我犯了一个打字错误

update-alternatives --install /usr/lib64/R/lib/libRblapack.so libRblapack.so /usr/lib64/R/lib/libRblapack_native.so 100

应该是 libRlapack.so 而不是 libRblapack。问题是如果发出正确的命令行,即

update-alternatives --install /usr/lib64/R/lib/libRlapack.so libRlapack.so /usr/lib64/R/lib/libRlapack_native.so 100

它返回一个错误:

libRlapack.so 的主链接必须是 /usr/lib64/R/lib/libRblapack.so

我试过

update-alternatives --remove libRblapack.so /usr/lib64/R/lib/libRblapack.so

但它不起作用——输入正确命令时返回相同的错误。

我该如何修复它?

谢谢!

答案1

我会尝试手动清理。我从来没有这样做过,所以请确保事先备份。

  • 从 /etc/alternatives 中删除链接
  • 从管理目录中删除相关文件
    • ubuntu 上的 /var/lib/dpkg/alternatives/(debian 可能相同,但请检查 FILES 部分下的手册页)
    • CentOS 6&7 上的 /var/lib/alternatives/

答案2

在我的情况下,手动删除它们会导致... is already managed by ...错误。除此之外,手动删除也没有扩展,因为我已经为集中式符号链接添加了多个替代方案。这简直是一团糟。
当涉及到update-alternatives或 时alternatives,它们都提供了--remove--remove-all标志。至于前一个标志,它只会删除链接组的一个替代方案。例如

$ update-alternatives --list python3
/usr/bin/python3.8
/usr/bin/python3.9

$ sudo update-alternatives --remove python3 /usr/bin/python3.9

$ update-alternatives --list python3
/usr/bin/python3.8

--remove国旗 的形状update-alternatives --remove symlink-generic-name /path/to/one/executable/alternative

但是,如果您想一次性彻底删除通用名称及其所有相关替代名称,那么这--remove-all就是可行的方法。

$ update-alternatives --list python3
/usr/bin/python3.8
/usr/bin/python3.9

$ sudo update-alternatives --remove-all python3

$ update-alternatives --list python3
update-alternatives: error: no alternatives for python3

$ update-alternatives --query python3
update-alternatives: error: no alternatives for python3

相关内容