EqLlyHJ5w6,694hQRgLWm

交給你怎樣用簡單方法在Linux中移除從源代碼安裝的程序

來源:濟南磐龍筆記本交換機維修作者:濟南磐龍維修網址:http://caifu17199.cn



交給你怎樣用簡單方法Linux中移除從源代碼安裝的程序





簡單來說,Stow 幫助你把這些程序文件以一種容易管理的方式組織在了一起。在這個方法中,文件将不會被複制到多個位置。所有的這些文件都會被保存在一個特定的文件夾中,通常是以程序名命名的,然後 Stow 會在一個合适的位置為所有的程序文件創建符号連接。


交給你怎樣用簡單方法在Linux中移除從源代碼安裝的程序

不是所有的程序都可以在官方或者第三方庫中找到,因此你不能使用常規的包管理來安裝它們。有時你不得不從源代碼中手動構建這些程序。就如你已經知道的一樣,當你從源代碼中安裝一個程序的時候,這個軟件包所包含的文件将會複制到本地的多個位置,例如
/usr/local/bin
/usr/local/etc/。如果從源代碼中安裝的程序沒有内置的卸載程序,當你不再需要這個程序的時候,卸載它就會很麻煩。你可能會花費雙倍(甚至更多)的時間找出這些文件然後手動删除它們。我以前一直是這樣做的,直到我發現了 GNU Stow。謝天謝地,Stow 有一個很棒的方法可以輕松管理從源代碼安裝的程序。

引用官方網站裡的一段介紹,

GNU Stow 是一個符号鍊接歸集管理器,它可以收集文件系統上不同目錄中的不同軟件和/或數據包,使它們看起來像是一個整體。

簡單來說,Stow 幫助你把這些程序文件以一種容易管理的方式組織在了一起。在這個方法中,文件将不會被複制到多個位置。所有的這些文件都會被保存在一個特定的文件夾中,通常是以程序名命名的,然後 Stow 會在一個合适的位置為所有的程序文件創建符号連接。比如
/usr/local/bin
中會包含
/usr/local/stow/vim/bin
/usr/local/stow/python/bin
中文件的符号鍊接。并且同樣遞歸地用于其他的任何的子目錄,例如
.../share
.../man,等等。在這篇教程中,我将會舉例教你如何輕松地使用 Stow 管理從源中安裝的程序。

安裝 GNU Stow

GNU Stow 在流行 Linux 操作系統的默認庫中都可用。

Arch Linux 及它的衍生版本中,運行下面的命令安裝 Stow

$ sudo pacman -S stow

DebianUbuntuLinux Mint 上:

$ sudo apt install stow

Fedora 上:

$ sudo dnf install stow

RHEL/CentOS 上:

$ sudo yum install epel-release

$ sudo yum install stow

Linux 上輕松移除從源代碼安裝的程序

就像我之前提到的,所有包的程序文件都将被保存在位于
/usr/local/stow/
的一個根文件夾。在這個根文件夾或者父目錄之下,每個包都将保存在對應的子目錄中。例如,如果我們從源代碼中安裝了 Vim 編輯器,所有關聯到 Vim 的程序文件和目錄都将保存在
/usr/local/stow/vim
文件夾之下。如果你從源代碼中安裝了 Python,所有關聯到 python 的文件都會保存在
/usr/local/stow/python
之下。

我現在從源代碼中來安裝一個叫做 hello 的程序。

首先下載 hello 程序的壓縮包。

$ wget
http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz

使用下面的命令解壓壓縮包:

$ tar -zxvf hello-2.10.tar.gz

上面的命令将會在當前工作目錄下創建一個叫做
hello-2.10
的目錄,并且提取壓縮包中的所有内容到其中去。

切換到這個目錄當中:

$ cd hello-2.10/

運行下面的命令,并且添加
-prefix
選項。

$ ./configure --prefix=/usr/local/stow/hello

上面的命令将會保存構建文件到一個指定位置,在這個例子中是
/usr/local/stow/hello

最後,使用下面的命令構建并安裝 hello 這個程序:

$ make

$ sudo make install

就這樣。hello 這個程序就已經安裝在
/usr/local/stow/hello/
這個位置了。你可以使用下面的
ls
命令确認一下。

$ ls /usr/local/stow/hello/

bin share

最後,進入
/usr/local/stow/
目錄,運行下面的命令來生成必要的符号鍊接。

$ cd /usr/local/stow/

$ sudo stow hello

大功告成!

剛才那一步是将包含在 hello 這個程序中的所有文件或者目錄創建了鍊接到
/usr/local/
目錄中。換一種說法,
/usr/local/stow/hello/bin
鍊接到
/usr/local/share
,以及
/usr/local/stow/hello/share/man
鍊接到
/usr/local/share
,還有
/usr/local/stow/hello/share/man
鍊接到
/usr/local/share/man

你可以使用
ls
命令來确認一下:

$ ls /usr/local/bin/

hello

可以使用下面的命令來确認 hello 這個程序是否可以正常工作了:

$ hello

Hello, world!

很好,它已經開始工作了!!

類似地,你可以像上面描述的那樣安裝程序到它對應的子目錄下。

下面是 Stow 根目錄包含的内容:

$ tree /usr/local/stow/

交給你怎樣用簡單方法在Linux中移除從源代碼安裝的程序

看,hello 這個程序已經安裝在
/usr/local/stow/hello/
下。同樣地,所有的包都将保存在它們對應的目錄之下。

下面進入主要環節,移除 hello 這個程序。首先進入
/usr/local/stow/
目錄:

$ cd /usr/local/stow/

然後運行下面的命令:

$ sudo stow --delete hello

hello 這個程序就會被移除了。你可以使用下面的命令确認它是否真的被移除了:

$ hello

-bash: /usr/local/bin/hello: No such file or directory

交給你怎樣用簡單方法在Linux中移除從源代碼安裝的程序

看, Hello 已經被移除了!

請注意 Stow 僅僅隻移除了符号鍊接。所有與 hello 這個程序相關的文件或者目錄還保存在
/usr/local/stow/hello
目錄下。所以你無需再次下載源文件就可以再次安裝 hello 這個程序。如果你不再需要它了,直接删除這個文件夾即可。

$ sudo rm -fr /usr/local/stow/hello/

想了解更多 Stow 的細節,請參閱 man 手冊。

$ man stow

Stow 可以像安裝程序一樣輕松地幫你移除它。如果你想知道如何高效的管理很多從源代碼中安裝的程序,GNU Stow 就是一個使得這個任務更加輕松的一個選擇,嘗試一下,你一定不會失望的。

這就是所有的内容了,希望對你有所幫助。還有更多幹活即将到來,可以期待一下的!

祝近祺!



EqLlyHJ5w6