Quais são os "padrões" - devo colocar o aplicativo (não apenas binário, mas toda a distribuição) em / usr / local ou / usr / local / share.
Por exemplo, scala ou weka - ele contém exemplos, binários, bibliotecas e assim por diante. Então seria
/usr/local/scala-2.9.1
ou
/usr/local/share/scala-2.9.1
Como sou o único administrador, não é um grande problema para mim, mas prefiro usar algo amplamente usado, não com meus próprios costumes.
Importante: não estou perguntando sobre casos em que você deve dividir o aplicativo em / usr / local / bin, / usr / local / lib e assim por diante. Em vez disso, estou perguntando sobre o caso em que você deve manter um diretório principal para todo o aplicativo.
software-installation
directory-structure
application
greenoldman
fonte
fonte
/opt
é realmente a resposta certa, mas é não "amplamente utilizada" por software tradicional Unix / Linux. Há boas razões para dividir seus arquivos em vários diretórios, e também para diferenciar/usr
de/usr/local
/usr/bin
(ou/usr/local/bin
) permite que o seu $ PATH para chegar a todos os softwares sem a necessidade de editá-lo para cada software, um conceito que não existe no WindowsRespostas:
Eu acho que / opt é mais padrão nesse tipo de contexto. A seção relevante no Padrão de hierarquia do sistema de arquivos é citada abaixo.
fonte
Você deve usar apenas
/usr/local/share
arquivos que não são específicos para uma determinada arquitetura / versão do sistema operacional.Depois disso, cabe a você se você distribuir os arquivos entre os subdiretórios existentes
/usr/local
ou se você criar um novo diretório dedicado/usr/local
(mas este último vontade não existir no executávelPATH
, oLD_LIBRARY_PATH
, nem aMANPATH
).Veja a ESF
fonte
bin
,share
,lib
, etcAté que
/opt
se tornou comum, o lugar habitual era/usr/local/lib/<package>
.fonte
Ao instalar aplicativos locais, existem várias opções, dependendo de como você deseja acessar e atualizar. Também deve ser observado que alguns métodos se parecem mais com o sistema que você já possui e outros são mais ad-hoc. Eu sugeriria que as "melhores" soluções são as que facilitam o gerenciamento das coisas.
Dividi esta resposta com base no número de pacotes para fazer instalações personalizadas. A divisão é baseada em minhas próprias experiências. Essas experiências pesam o tempo necessário para gerenciar os pacotes e os riscos de estragar alguma coisa. Não quero dizer que tenho o conhecimento de padrões comuns, mas quero dizer isso como um ponto de referência a ser observado ao tomar a decisão.
Para apenas alguns pacotes , eu colocaria pacotes adicionais
/opt
, onde eles estão fora do caminho de tudo o mais, para que nada possa atrapalhá-los e eles podem atrapalhar outra coisa. Este é o método que eu uso no meu NAS. Este método, no entanto, mantém os binários fora do PATH, portanto você precisará adicioná-los manualmente. Isso funciona bem se houver apenas alguns pacotes para instalar, mas se torna uma bagunça se houver muitos.A atualização aqui é bastante fácil, pois você simplesmente sobrescreve o diretório.
Prós:
Contras:
PATH
parecer bagunçadoPara mais de alguns pacotes , eu recomendaria o uso do
/usr/local/<your package>
e sym-linking do executável de/usr/local/bin
ou/usr/local/sbin
dependendo se você precisar de privilégios de root. Isso evita que você altere seu CAMINHO toda vez que algo novo for adicionado, para que o CAMINHO fique limpo. Este é o método que eu uso no meu laptop Arch para todos os pacotes não pacman e AUR.A atualização é feita substituindo o diretório do pacote e verificando se o link simbólico ainda é válido e corrigindo se não for.
Prós
PATH
bagunçaContras:
Para muitos pacotes . Como esse não é o caso que você deseja, vou ser breve. Eu recomendaria dividindo o pacote em
bin
,lib
,share
, etc. e instalá-los/usr/local
. Isso é para manter a estrutura limpa. Você também pode especificar quem pode escrever onde e mais. Por exemplo, você não deseja que outras pessoas que não sejam root modifiquem o executável.Aqui, a atualização fica um pouco mais complicada, pois você precisa gravar em mais de um diretório. Eu recomendaria empacotar a coisa toda e deixar o gerenciador de pacotes lidar com o resto.
A parte
O
share
diretório em si é para arquivos independentes de arquitetura como observado no de Faheem ligação e os arquivos dependentes de arquitetura deve ir paralib
,lib32
,lib64
, etc.fonte