Linux

如何在 Linux 上刪除“update-alternatives”連結

  • April 7, 2022

很抱歉問這個問題,但我無法在幾個小時內解決這樣一個簡單的問題:

我犯了一個錯字

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

但它不起作用 - 輸入正確的命令時返回相同的錯誤。

我怎樣才能修復它?

謝謝!

我會嘗試手動清理它。我從來沒有這樣做過,所以請確保您事先備份。

  • 從 /etc/alternatives 中刪除連結

  • 從 admin 目錄中刪除相關文件

    • ubuntu 上的 /var/lib/dpkg/alternatives/ (debian 可能相同,但請查看 FILES 部分下的手冊頁)
    • /var/lib/alternatives/ 在 CentOS 6&7 上

在我的情況下,手動刪除它們會導致... is already managed by ...錯誤。除此之外,手動刪除也沒有擴展,因為我為集中式符號連結添加了多個替代方案。這只是一團糟。

當涉及update-alternativesoralternatives時,它們都提供--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

引用自:https://serverfault.com/questions/838592