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
제거 작업이 더 쉬워집니다.