Implantar programas e scripts pessoais

1

Eu tenho um projeto git contendo programas e scripts úteis. A hierarquia é assim:

$ 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

Também poderíamos ver cada pasta como um projeto. Como devo instalar meus arquivos em /usr/local ? Eu quero fazer com que ferramentas de propósito geral sejam instaladas em /usr/local . Eu li que devemos colocar em /usr/local/src o que tem que ser compilado. Aqui apenas o projeto C precisa ser compilado, então copio o conteúdo de cada subpasta (bin, lib, src) nas subpastas correspondentes de /usr/local ? E os scripts que não precisam de compilação? Devo copiar cada script em /usr/local/bin ? Ou fazer um link simbólico para eles? E quanto ao projeto todo, deveria ser movido em algumas pastas específicas? Gostaria de saber mais sobre a boa (melhor?) Prática de implantação.

    
por kaligne 13.07.2016 / 19:28

1 resposta

2

Eu sugeriria usar o GNU Stow para criar uma hierarquia sob o diretório /opt para qualquer software específico do site (veja Padrão da Hierarquia do Sistema de Arquivos , embora alguns sites usem /sw ). Dessa forma, suas coisas seriam

  1. [usando /opt ] ... não colide com nada instalado por qualquer gerenciador de pacotes.
  2. [usando stow ] ... seja realmente fácil de instalar / desinstalar.

Para stow , crie o diretório /opt/stow .

Abaixo, crie uma sub-hierarquia completa para cada projeto individual, por exemplo

  • /opt/stow/project-1/{bin,lib,man}
  • /opt/stow/project-2/bin
  • /opt/stow/project-3/{bin,fun,share/examples} ( fun para código shell sourcable com funções shell)
  • etc.

Não insira o código-fonte C, apenas as coisas necessárias para usar as ferramentas.

Então:

$ cd /opt/stow
$ stow project-1
$ stow project-2
$ stow project-3

Cada invocação de stow preencherá o diretório /opt com links simbólicos para os lugares corretos, de modo que seus executáveis, por exemplo, /opt/stow/project-1/bin e /opt/stow/project-2/bin são facilmente acessíveis em /opt/bin .

Em seguida, adicione /opt/bin ao seu PATH e você está definido.

Para desinstalar , e. project-1 de /opt :

$ cd /opt/stow
$ stow -D project-1

Isso removerá todos os links da hierarquia /opt que aponta para /opt/stow/project-1 , mas deixará o conteúdo de /opt/stow/project-1 intacto.

Você poderia, então, se tivesse uma nova versão do seu primeiro projeto:

$ # (having un-stowed project-1, and still in /opt/stow ...)
$ mv project-1 project-1.old
$ cp $HOME/path/project-1 ./
$ stow project-1

Use stow com o sinal -v para ver o que realmente está acontecendo.

Basicamente, o GNU Stow facilita manter instalações separadas de aplicativos separados . Eu uso o tempo todo para o código que eu compilar e instalar em $HOME/local (usando --prefix com ./configure por exemplo). Torna mais fácil desinstalar as coisas.

    
por 13.07.2016 / 20:10