GNU stow はバイナリだけではなくすべてのファイルをリンクします。

GNU stow はバイナリだけではなくすべてのファイルをリンクします。

バイナリを正しく接続するにはどうすればよいですかstow(おそらくマニュアルページも)。

stowGNUを使用して自分のコンピュータのローカルインストールを管理したいと思います。しかし、stowシンボリックリンクバイナリだけでなく、プログラムフォルダ内のすべてのファイルも同様です。これまで私がしたこと:

  • 拡張stow-ignoreファイルを生成しました。
  • バイナリを除くすべてのファイルにサブフォルダを使用src/し、Makefileを手動で変更してbin/サブフォルダを作成します。次に、リンクされたlocal/src/フォルダを削除します。

より良い方法があるべきだと思いましたが、間違ってstow使用していました。

はい

フォルダ構造

~home/
 |~local/
   |+bin/     <-- binarys should go here
   |+share/   <-- man page
   |~stow/
     |-.stowrc
     |~dwm-6.0/
       |-Makefile
       |-dwm.c
       |-dwm.h
       |-dwm
       |-config.mk
       |-README
     |~hub-1.11/
       |~bin/
         |-hub
       |+etc/
       |+feature/
       |+githook/
       |+lib/
       |-Gemfile
       |-Rakefile
       |-hub.gemspec

stow/ここからフォルダタイプに入ります

stow dwm-6.0

次に、リンクをブックマークに追加します。みんなlocal/バイナリファイルをフォルダに配置するのではなく、ファイルをフォルダdwmに配置しますlocal/bin/。これでフォルダMakefileを作成しdwm-6.0/bin/、バイナリをフォルダに移動するように変更できます。これにより、少なくともstow接続されますが、他のすべてのファイルはまだ接続されます。dwmlocal/bin/local/

以下も同様ですhub

[9962]../stow:$stow hub-1.11.1
Loading defaults from .stowrc
stow dir is /home/myusername/local/stow
stow dir path relative to target /home/myusername/local is stow
Planning stow of package hub-1.11.1...
LINK: man => stow/hub-1.11.1/man
LINK: test => stow/hub-1.11.1/test
LINK: hub.gemspec => stow/hub-1.11.1/hub.gemspec
LINK: script => stow/hub-1.11.1/script
LINK: etc => stow/hub-1.11.1/etc
LINK: lib => stow/hub-1.11.1/lib
LINK: hub => stow/hub-1.11.1/hub
LINK: bin/hub => ../stow/hub-1.11.1/bin/hub
LINK: git-hooks => stow/hub-1.11.1/git-hooks
LINK: Rakefile => stow/hub-1.11.1/Rakefile
LINK: Gemfile => stow/hub-1.11.1/Gemfile
LINK: features => stow/hub-1.11.1/features
Planning stow of package hub-1.11.1... done
Processing tasks...
Processing tasks... done

これでファイルを使用するのではなく、別のフォルダにファイルをリンクすることもできますstowmanshare/

===

.stow-グローバル-無視

# Comments and blank lines are allowed.

RCS
.+,v

CVS
\.\#.+       # CVS conflict files / emacs lock files
\.cvsignore

\.svn
_darcs
\.hg

\.git
\.gitignore


.+~          # emacs backup files
\#.*\#       # emacs autosave files
.*\.c        # c src files 
.*\.cc       # c++ src files 
#.*\.\d       # compile temporary files 
#.*\.\d\..*       # compile temporary files 
.*\.o        # object files
.*\.h        # include files
.*\.info
.*\.mk       # make configs
.*\.swp      # vim temp buffer file
.*\.lock     # vim temp buffer file
.*\.md       # mark down 
.*\.yml      # YAML
#.*\.gemspec  # gem file
#.*\.rb       # ruby file
#.*\.sh       # shell file
#.*\.feature  # shell file
README.*
LICENSE
FAQ
LEGACY
TODO
Makefile

.stowrc

--dir=/home/myusername/local/stow
--target=/home/myusername/local

答え1

1つの方法は次のとおりです。ローカル無視リスト、パックあたり1個です。

しかし、私はあなたのアプローチが根本的に間違っていて、あなたの人生を不必要に困難にしていると信じています。問題は、ビルド時に必要なファイルと実行時に必要なファイルを区別できないことです。このようなディレクトリ~/local/stow/dwm-6.0/パッケージディレクトリ含める必要があります設置写真、ビルド時にのみソースコードやその他のリソースを使用するのではありません。

正しいワークフローは次のとおりです。

  1. Stowが完全に無視するディレクトリ(たとえば~/src)にソースコードをダウンロードします。
  2. ソースからビルド~/local/stow/dwm-6.0/マニュアルには、これを達成する方法に関する多くのヒントがあります。)
  3. 実行時に必要なディレクトリファイルのみが含まれていることを確認してください(~/local/stow/dwm-6.0/以下のbin/ファイルなどman/)。
  4. stow dwm-6.0

答え2

バラよりB.コネス'2014年10月10日ブログエントリ「GNUリポジトリインクルードファイル」。要約すると、正規表現は次のようになります。

^((?!(\/)bin|include|lib|lib64|local|sbin|share|tmp).)*$

対応するディレクトリ(bin、includeなど)のみが「のみ」グローバル無視リストに保存されます。

答え3

ソースコードを含むディレクトリを置くようです。

configure(またはソフトウェアが使用するビルドシステム)を使用し、stowディレクトリの下にインストールプレフィックスを設定します。インストールされたプログラムを実行してmake保存します。make install

これstowを使うべきです...

関連情報