개인 프로그램 및 스크립트 배포

개인 프로그램 및 스크립트 배포

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대신 사용하지만). 이렇게 하면 귀하의 물건이

  1. [사용 /opt] ...패키지 관리자가 설치한 것과 충돌하지 않습니다.
  2. [사용 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제거 작업이 더 쉬워집니다.

관련 정보