Onde colocar scripts utilitários no Debian, mas não no PATH?

2

Eu tenho um aplicativo da web com um back-end de banco de dados. Eu tenho alguns scripts de utilitário que são usados para inicializar o banco de dados. Eu quero incluir esses scripts no pacote Debian, mas eles são perigosos quando eles soltam o esquema e recriam.

Portanto, não quero colocar esses scripts em um diretório no PATH. Onde scripts dessa natureza vão em um sistema Debian? (Observe que esses scripts são não scripts do mantenedor de pacotes.)

    
por rlandster 22.05.2012 / 19:26

3 respostas

2

O Debian tem uma política bastante abrangente, por isso vale a pena referir-se a isso. Eu acho que isso cobre isso,

9.1.1 File System Structure

The location of all files and directories must comply with the Filesystem Hierarchy Standard (FHS), version 2.3, with the exceptions noted below, and except where doing so would violate other terms of Debian Policy.

E verificando FHS , encontramos

/usr/lib : Libraries for programming and packages

Purpose

/usr/lib includes object files, libraries, and internal binaries that are not intended to be executed directly by users or shell scripts. [22]

Applications may use a single subdirectory under /usr/lib. If an application uses a subdirectory, all architecture-dependent data exclusively used by the application must be placed within that subdirectory.

depois de volta à política do Debian,

The requirement for object files, internal binaries, and libraries, including libc.so.*, to be located directly under /lib{,32} and /usr/lib{,32} is amended, permitting files to instead be installed to /lib/triplet and /usr/lib/triplet, where triplet is the value returned by dpkg-architecture -qDEB_HOST_MULTIARCH for the architecture of the package. Packages may not install files to any triplet path other than the one matching the architecture of that package; for instance, an Architecture: amd64 package containing 32-bit x86 libraries may not install these libraries to /usr/lib/i386-linux-gnu. [69]

Applications may also use a single subdirectory under /usr/lib/triplet.

The execution time linker/loader, ld*, must still be made available in the existing location under /lib or /lib64 since this is part of the ELF ABI for the architecture.

    
por 23.05.2012 / 00:02
2

Um lugar comum para executáveis internos de um programa é /usr/lib/program/ .

(Sistemas Debian mais antigos usam /usr/libexec/ , mas isso não é compatível com o FHS.)

Você também pode modificar os scripts para, por exemplo, avisar o usuário e sair se --force não for fornecido na linha de comando.

    
por 22.05.2012 / 23:54
1

Onde está sua raiz de instalação? Se em / usr / local, eu os colocaria pessoalmente no diretório / usr / local / sbin ou / usr / local / etc / scripts. Usuários normais não devem ter sbin em seu PATH, e definitivamente não há nada em etc. Se estiver em / opt, então você está ainda mais seguro, já que as pessoas precisarão incluir explicitamente / opt / WHATEVER / bin em seu PATH, e você pode colocá-los em qualquer lugar, exceto bin.

Seus scripts precisam ter o conjunto de bits de execução? Se você forçar as pessoas a correr %código% em vez de correr %código% evitará a maioria dos usos não intencionais, mas não interferirá muito no uso intencional.

    
por 22.05.2012 / 19:35

Tags