Linux で Stow を使用してソースからインストールされたプログラムを削除する
このガイドではGNU Stow とは、Linux にGNU Stow をインストールする方法、および GNU Stow を使用してソースからインストールされたプログラムを削除する方法について説明します。
GNU Stow とは何ですか?
場合によっては、ソースから手動でコンパイルしてプログラムをインストールする必要があります。これらは公式またはサードパーティのリポジトリでは利用できない可能性があるため、通常のパッケージ マネージャーを使用してインストールすることはできません。
すでにご存知かもしれませんが、プログラムをソースからインストールすると、パッケージ ファイルは /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 を使用してソースからインストールされたプログラムを簡単に管理する方法を実践的な例とともに説明します。読む。
Linux に GNU Stow をインストールする
GNU Stow は、一般的な Linux オペレーティング システムのデフォルト リポジトリで利用できます。
Arch Linux とそのバリアントでは、次のコマンドを実行して Stow をインストールします。
sudo pacman -S stow
Debian、Ubuntu、Linux Mint、Pop OS:
sudo apt install stow
Fedora の場合:
sudo dnf install stow
RHEL/CentOS、AlmaLinux、およびRocky Linuxの場合:
sudo dnf install epel-release
sudo dnf install stow
Linux で Stow を使用してソースからインストールされたプログラムを削除する
すでに述べたように、パッケージのすべてのプログラム ファイルは、/usr/local/stow/
にあるルート フォルダーに保存されます。このルートまたは親ディレクトリの下で、各パッケージは独自のプライベート サブディレクトリに保存されます。
たとえば、Vim エディタをソースからインストールすると、Vim に関連するすべてのプログラム ファイルとディレクトリは /usr/local/stow/vim
に保存されます。strong>フォルダー。 Python をソースからインストールすると、Python に関連するすべてのファイルが /usr/local/stow/python
などに保存されます。
たとえばhelloなどのプログラムをソースからインストールしてみましょう。
まず、「hello」プログラムの tarball をダウンロードします。
wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
次のコマンドを使用して、ダウンロードした tarball を解凍します。
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/bin
にシンボリックリンクされています。 と /usr/local/stow/hello/share
は /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/
Stow ルート ディレクトリの内容を一覧表示する
見る? hello プログラムは、"/usr/local/stow/hello/"
の場所にインストールされます。同様に、すべてのパッケージは独自のディレクトリに保存されます。
ここからがメイン部分です。 hello プログラムを削除しましょう。これを行うには、/usr/local/stow/
ディレクトリに移動します。
cd /usr/local/stow/
..そして次のコマンドを実行します。
sudo stow --delete hello
Stow を使用してプログラムを削除する
hello プログラムは削除されました。本当に削除されたかどうかは、次のコマンドで確認できます。
$ hello
-bash: /usr/local/bin/hello: No such file or directory
Hello World プログラムを実行する
見る?ハロープログラムが削除されました。
Stow はシンボリックリンクのみを削除したことに注意してください。 hello プログラムに関連するすべてのプログラム ファイルとディレクトリは、引き続き /usr/local/stow/hello
フォルダで利用できます。したがって、実際のソース ファイルをダウンロードしなくても、hello プログラムを再度インストールできます。
hello プログラムが不要になった場合は、そのフォルダーを削除してください。
sudo rm -fr /usr/local/stow/hello/
Stow の詳細については、マニュアル ページを参照してください。
man stow
結論
GNU Stow を使用すると、プログラムをインストールするのと同じくらい簡単にプログラムをアンインストールできます。ソースからインストールされた多数のプログラムを効果的に管理する方法を疑問に思っている場合、GNU Stow はこのタスクをはるかに簡単にするプログラムの 1 つです。ぜひ試してみてください。がっかりすることはありません。
リソース:
- GNU Stow ホームページ
- 収納マニュアル
推奨読書:
- Linux で未使用のパッケージを見つけて削除する方法