GNU Stow を使用してソースおよびドットファイルからインストールされたプログラムを管理する方法
客観的
GNU stow を使用して、ソースおよびドットファイルからインストールされたプログラムを簡単に管理
要件
ルート権限
困難
簡単
慣例
# – 指定された Linux コマンドを root 権限で実行する必要があります。
root ユーザーとして直接、またはsudo
コマンドを使用して$ – 指定された Linux コマンドを通常の非特権ユーザーとして実行する必要があります
導入
場合によっては、プログラムをソースからインストールする必要があります。標準チャネルからは入手できない場合や、特定のバージョンのソフトウェアが必要な場合があります。 GNU stow は非常に優れた シンボリックリンク ファクトリ
プログラムで、非常にクリーンで保守しやすい方法でファイルを整理しておくことで非常に役立ちます。
積荷の入手
配布リポジトリには、Fedora などの stow
が含まれている可能性が非常に高くなります。これをインストールするために必要な作業は次のとおりです。
# dnf install stow
または、Ubuntu/Debian では、次のコマンドを実行して stow をインストールできます。
# apt install stow
一部のディストリビューションでは、stow は標準リポジトリでは利用できませんが、追加のソフトウェア ソース (Rhel と CentOS7 の場合は epel など) を追加するか、最後の手段としてソースからコンパイルすることで簡単に取得できます。必要な依存関係はほとんどありません。
ソースから stow をコンパイルする
利用可能な最新の stow バージョンは 2.2.2
です。tarball は、https://ftp.gnu.org/gnu/stow/
からダウンロードできます。
ソースをダウンロードしたら、tarball を抽出する必要があります。パッケージをダウンロードしたディレクトリに移動し、次のコマンドを実行します。
$ tar -xvpzf stow-2.2.2.tar.gz
ソースを抽出したら、stow-2.2.2 ディレクトリ内に移動し、プログラムをコンパイルするには次のコマンドを実行します。
$ ./configure
$ make
最後に、パッケージをインストールするには、次のようにします。
# make install
デフォルトでは、パッケージは /usr/local/
ディレクトリにインストールされますが、configure スクリプトの --prefix
オプションでディレクトリを指定することで、これを変更できます。または、make install
コマンドの実行時に prefix="/your/dir"
を追加します。
この時点で、すべてが期待どおりに機能していれば、stow
がシステムにインストールされているはずです。
ストーはどのように機能しますか?
stow の背後にある主な概念は、プログラム マニュアルで非常に詳しく説明されています。
The approach used by Stow is to install each package into its own tree,
then use symbolic links to make it appear as though the files are
installed in the common tree.
パッケージの動作をより深く理解するために、その主要な概念を分析してみましょう。
格納ディレクトリ
stow ディレクトリは、すべての stow パッケージ
を含むルート ディレクトリであり、それぞれに独自のプライベート サブツリーがあります。一般的な stow ディレクトリは /usr/local/stow
です。その中の各サブディレクトリは package
を表します。
パッケージを保管する
上で述べたように、stow ディレクトリには「パッケージ」が含まれており、それぞれが独自のサブディレクトリにあり、通常はプログラム自体の名前が付けられます。パッケージは、特定のソフトウェアに関連するファイルとディレクトリのリストにすぎず、エンティティとして管理されます。
格納先ディレクトリ
stow ターゲット ディレクトリは非常に簡単に説明できる概念です。これは、パッケージ ファイルがインストールされるディレクトリである必要があります。デフォルトでは、stow ターゲット ディレクトリは、stow が呼び出されるディレクトリより上のディレクトリであるとみなされます。この動作は、-t
オプション (-target の略) を使用することで簡単に変更できます。これにより、代替ディレクトリを指定できるようになります。
実際の例
よくできた例は 1000 語の価値があると思いますので、stow がどのように機能するかを見てみましょう。 libx264
をコンパイルしてインストールするとします。ソースを含む git リポジトリのクローンを作成しましょう。
$ git clone git://git.videolan.org/x264.git
コマンドを実行してから数秒後、「x264」ディレクトリが作成され、そこにソースが含まれ、コンパイルできる状態になります。次に、その内部に移動し、/usr/local/stow/libx264 ディレクトリを --prefix
として指定して configure
スクリプトを実行します。
$ cd x264 && ./configure --prefix=/usr/local/stow/libx264
次に、プログラムをビルドしてインストールします。
$ make
# make install
ディレクトリ x264 は stow ディレクトリ内に作成されている必要があります。このディレクトリには、通常システムに直接インストールされるすべてのものが含まれています。あとは、stow を呼び出すだけです。 -d
オプションを使用して stow ディレクトリへのパス (デフォルトは現在のディレクトリ) を手動で指定するか、 でターゲットを指定して、stow ディレクトリ内からコマンドを実行する必要があります。 >-t
は前に述べたとおりです。格納するパッケージの名前も引数として指定する必要があります。この場合、プログラムを stow ディレクトリから実行するので、次のように入力するだけです。
# stow libx264
libx264 パッケージに含まれるすべてのファイルとディレクトリは、stow が呼び出されたディレクトリの親ディレクトリ (/usr/local) にシンボリックリンクされているため、たとえば、libx264 バイナリは /usr/ に含まれます。 local/stow/x264/bin
は /usr/local/bin
にシンボリックリンクされ、/usr/local/stow/x264/etc
に含まれるファイルは現在は /usr/local/etc
などにシンボリックリンクされています。こうすることで、システムにはファイルが正常にインストールされたように見えるため、コンパイルしてインストールした各プログラムを簡単に追跡できます。アクションを元に戻すには、 -D
オプションを使用するだけです。
# stow -d libx264
されております!シンボリックリンクはもう存在しません。stow パッケージを「アンインストール」して、システムをクリーンで一貫した状態に保っただけです。この時点で、stow がドットファイルの管理にも使用される理由が明らかになるはずです。一般的な方法は、すべてのユーザー固有の設定ファイルを git リポジトリ内に置き、それらを簡単に管理してどこでも利用できるようにし、その後 stow を使用してユーザーのホーム ディレクトリの適切な場所に配置することです。
Stow は、誤ってファイルをオーバーライドすることも防ぎます。宛先ファイルが既に存在し、stow ディレクトリ内のパッケージを指していない場合、シンボリック リンクの作成を拒否します。この状況は、stow 用語では競合と呼ばれます。
それでおしまい!オプションの完全なリストについては、stow マンページを参照してください。コメント欄でそれに関するご意見をお聞かせください。