바이너리를 올바르게 연결하려면 어떻게 해야 합니까 stow
(아마도 매뉴얼 페이지도)?
stow
GNU를 사용하여 내 컴퓨터의 로컬 설치를 관리하고 싶습니다 . 그러나 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
연결되지만 다른 모든 파일은 여전히 에 연결됩니다 .dwm
local/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
수도 있습니다.man
share/
===
.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/
는패키지 디렉토리포함해야설치사진, 빌드 시간에만 소스 코드나 기타 리소스를 사용하는 것이 아닙니다.
올바른 작업 흐름은 다음과 같습니다.
- Stow가 완전히 무시하는 디렉터리(예
~/src
: )에 소스 코드를 다운로드합니다. - 소스에서 빌드하고
~/local/stow/dwm-6.0/
(매뉴얼에는 이를 달성하는 방법에 대한 많은 팁이 있습니다.) - 런타임에 필요한 디렉터리 파일만 포함되어 있는지 확인하세요 (
~/local/stow/dwm-6.0/
아래bin/
파일 등man/
). 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
사용해야 하는데...