Linux

如何解除安裝從 git 手動複製的包

  • September 13, 2022

我想在我的機器上解除安裝 tmux。我的 tmux 版本是:

tmux next-3.4

which tmux給我:

/usr/local/bin/tmux

我試圖用 解除安裝它sudo yum remove tmux,我得到:

Updating Subscription Management repositories.
No match for argument: tmux
No packages marked for removal.
Dependencies resolved.
Nothing to do.
Complete!

我的機器資訊如下:

NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.6"
Red Hat Enterprise Linux release 8.6 (Ootpa)
Red Hat Enterprise Linux release 8.6 (Ootpa)

你沒有安裝 tmux 包,你自己編譯和安裝了 tmux - 所以包管理工具,例如yum,對你自己安裝的 tmux 版本一無所知。

簡而言之:您手動安裝它,您必須手動解除安裝它。

一些可能使這更容易的可能性:

  • 一些程序的 Makefile 中同時帶有installand 和uninstalltarget。我不知道是否tmux這樣做,但值得檢查。執行make uninstall或檢查 tmux 的 Makefile 以查看它是否具有該目標。請注意,uninstallmakefile 目標並不總是可靠的,並且通常不會在目標附近的任何地方進行build測試install。買者自負。YMMV。祝你好運!
  • 執行make -n install並記下將要安裝的所有文件。然後手動刪除它們。提示:將 的輸出重定向到文件會有所幫助make -n,尤其是在有大量輸出的情況下。

順便說一句,如果不是很明顯,make‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘的選項-n不明顯man make

-n, --just-print, --dry-run,--recon

列印將要執行的命令,但不要執行它們(在某些情況下除外)。


對未來的建議:

在編譯和安裝軟體時,要麼堅持打包軟體,要麼使用GNU StowCheckInstall等程序。它們提供了包的一些(但不是全部)有用的功能,並使升級和/或解除安裝自編譯軟體變得更加容易。

請注意,在 99+% 的情況下,自己編譯軟體幾乎沒有好處。“它更亮更新”和“它有更大的版本號”幾乎都不是足夠好的理由。特別是如果您不知道如何解除安裝自編譯的程序,或者不知道打包軟體和自編譯軟體之間的區別。

如果有一個您絕對必須擁有的特定新功能,或者一個影響您的錯誤,並且您知道它已在最新的上游版本中修復,並且您不能等待幾天或幾週來更新軟體包然後這可能是值得的麻煩…但即使這樣通常也不是,您只是在用一個問題(錯誤或缺少功能)換取另一個問題(未打包的軟體)。等待幾乎總是更好。

或者,不僅僅是下載原始碼並執行,而是make install充分了解您的發行版的打包系統,以建構您自己的最新版本包。這通常可以像下載軟體包源文件並對其應用上游更新檔然後重新建構軟體包或移植軟體包更改(例如 debian/ubuntu/etc 上的 debian/ 目錄或 RPM 上的規範文件等)一樣簡單基於發行版)到最新的上游源。

引用自:https://unix.stackexchange.com/questions/717088