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

이제 파일을 사용하는 대신 별도의 폴더에 파일을 링크할 stow수도 있습니다.manshare/

===

.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개입니다.

그러나 나는 당신의 접근 방식이 근본적으로 잘못되었으며 당신의 삶을 불필요하게 어렵게 만들고 있다고 믿습니다. 문제는 빌드 시 필요한 파일과 런타임 시 필요한 파일을 구별하지 못한다는 것입니다. 이와 같은 디렉토리 ~/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사용해야 하는데...

관련 정보