場合によっては、ソースから手動でコンパイルしていくつかのプログラムをインストールする必要があります。なぜなら、それらは公式またはサードパーティのリポジトリでは利用できない可能性があるため、通常のパッケージマネージャーを使用してインストールすることはできません。ご存知かもしれませんが、ソースからプログラムをインストールすると、パッケージファイルは /usr/local/bin
などの複数の場所にコピーされます。 、 /usr/local/etc/
、ファイルシステム上。ソースからインストールされたプログラムにアンインストーラーが組み込まれていない場合、不要になったパッケージを削除するのは面倒な作業になります。これらのパッケージファイルを見つけて手動で削除するには、数分(または数分)かかる場合があります。これは、「GNUStow」という名前のユーティリティに出くわすまで私がやってきたことです。 。ありがたいことに、Stowには、ソースからインストールされたプログラムを簡単に管理する簡単な方法があります。
公式ウェブサイトを引用するには、
簡単に言うと、Stowは、パッケージファイルを簡単に管理できるように整理しておくのに役立ちます。この方法では、ファイルは複数の場所にコピーされません。代わりに、すべてのファイルは通常はプログラム名自体で特定のフォルダーに保存され、Stowはすべてのプログラムのファイルへのシンボリックリンクを適切な場所に作成します。例: /usr/local/bin
/usr/local/stow/vim/bin
内のファイルへのシンボリックリンクを含めることができます 、 /usr/local/stow/python/bin
など、および .../share
などの他のサブディレクトリについても同様に再帰的に 、 .../man
、 等々。このチュートリアルでは、実際の例を使用して、Stowを使用してソースからインストールされたプログラムを簡単に管理する方法を示します。続きを読む。
LinuxにGNUStowをインストールする
GNU Stowは、一般的なLinuxオペレーティングシステムのデフォルトのリポジトリで利用できます。
Arch Linux およびそのバリアントについては、次のコマンドを実行してStowをインストールします。
$ sudo pacman -S stow
Debian 、 Ubuntu 、 Linux Mint 、ポップ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
に保存されます フォルダ。 pythonをインストールする場合 ソースから、Pythonに関連するすべてのファイルは /usr/local/stow/python
の下に保持されます など。
たとえば、こんにちはなどのプログラムをインストールします。 、ソースから。
まず、「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/
見る? 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
見る?こんにちはプログラムが削除されました!
Stowはシンボリックリンクのみを削除していることに注意してください。 helloプログラムに関連するすべてのプログラムファイルとディレクトリは、引き続き /usr/local/stow/hello
で利用できます。 フォルダ。したがって、実際のソースファイルをダウンロードしなくても、helloプログラムを再度インストールできます。
helloプログラムが不要になった場合は、そのフォルダを削除するだけです。
$ sudo rm -fr /usr/local/stow/hello/
Stowの詳細については、manページを参照してください。
$ man stow
結論
GNU Stowは、プログラムをインストールするのと同じくらい簡単にプログラムをアンインストールするのに役立ちます。ソースからインストールされた多くのプログラムを効果的に管理する方法を知りたい場合は、GNU Stowは、このタスクをはるかに簡単にするプログラムの1つです。試してみてください。失望することはありません。