git
便利なプログラムとスクリプトを含むプロジェクトがあります。階層は次のとおりです。
$ git clone https://github.com/myaccount/myutils.git
$ tree myutils
.
├── bash
│ ├── do-this.sh
│ ├── do-that.sh
│ ├── functions-to-source.sh # Contains useful functions that will be sourced by other scripts.
│ ├── tests
│ │ ├── bin
│ │ └── command.ext1.ext2.ext3
│ └── todo
├── python
│ ├── notes
│ └── package1
│ ├── module1.py
│ └── module2.py
└── c
├── bin
├── build
├── doc
├── include
├── lib
├── Makefile
├── src
└── test
各フォルダをプロジェクトとして考えることもできます。ファイルをどのようにインストールする必要がありますか/usr/local
?私はそれらをにインストールしたいと思います。コンパイルするものを/usr/local
入れるべきだと読んでいます。/usr/local/src
ここではCプロジェクトだけをコンパイルすればいいのですが、各サブフォルダ(bin、lib、src)の内容をそのサブフォルダにコピーする必要がありますか/usr/local
?コンパイルする必要のないスクリプトはどうですか?各スクリプトをコピーする必要がありますか/usr/local/bin
?それともシンボリックリンクを作成しますか?プロジェクト全体はどうですか?特定のフォルダに移動する必要がありますか?良い(ベスト?)展開方法について詳しく知りたいです。
ベストアンサー1
使用することをお勧めしますGNUストー/opt
サイト固有のソフトウェアのディレクトリの下に階層を作成します(参照:ファイルシステム階層標準、一部のサイトでは/sw
代わりに使用しますが)。これにより、あなたのもの
- [使用
/opt
] ...パッケージマネージャがインストールしたものと競合しません。 - [使用
stow
]...である本物取り付け/取り外しが簡単です。
の場合はstow
ディレクトリを作成します/opt/stow
。
その下には、個々のプロジェクトごとに完全な下位階層が作成されます。
/opt/stow/project-1/{bin,lib,man}
/opt/stow/project-2/bin
/opt/stow/project-3/{bin,fun,share/examples}
(fun
シェル関数を持つソース可能なシェルコードの場合)- など。
Cソースコードをそこに置かず、ツールを使用するために必要なものだけを入れてください。
それから:
$ cd /opt/stow
$ stow project-1
$ stow project-2
$ stow project-3
各呼び出しは、stow
正しい場所を指すシンボリックリンクでディレクトリを埋め、/opt
実行可能ファイルが次のように提供されるようにします。/opt/stow/project-1/bin
そして /opt/stow/project-2/bin
簡単にアクセスできます/opt/bin
。
それからそれをあなたの/opt/bin
ものに追加してくださいPATH
。
到着削除たとえば、次のようにproject-1
なります/opt
。
$ cd /opt/stow
$ stow -D project-1
/opt
これにより、階層からすべてのポインティングリンクが削除されますが、/opt/stow/project-1
内容はそのまま残ります/opt/stow/project-1
。
最初のプロジェクトの新しいバージョンがある場合は、次のことができます。
$ # (having un-stowed project-1, and still in /opt/stow ...)
$ mv project-1 project-1.old
$ cp $HOME/path/project-1 ./
$ stow project-1
stow
-v
実際に何が起こっているかを確認するには、フラグと一緒に使用してください。
デフォルトでは、GNU Stowを使用すると、アプリケーションを別々にインストールしたままにするのが簡単です。分離。私は常にコードをコンパイルしてインストールするためにそれを使用します(例:withを$HOME/local
使用--prefix
)。./configure
削除操作が簡単になります。