Devo colocar o aplicativo em / usr / local ou / usr / local / share?

21

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.

greenoldman
fonte
6
Eu acho / opt é mais habitual nesse tipo de contexto.
Faheem Mitha
@ Faaem Mitha, ponto muito bom. Graças a você, encontrei essa explicação "árvore de diretórios" / opt / 'provider', semelhante à maneira pela qual o Windows instalará um novo software em sua própria árvore de diretórios C: \ Windows \ Arquivos de programa \ "Nome do programa" em linuxtopia.org/ online_books / linux_beginner_books / ... você poderia por favor ? enviar seu comentário como resposta, então eu iria marcá-lo como a resposta Obrigado.
greenoldman
@greenoldman: também agradar perceber que manter todos os arquivos em um único dir é não a forma "padrão" para instalar aplicativos em Unix. /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 /usrde/usr/local
MestreLion
Por exemplo, manter todos os executáveis de todas as aplicações em um único /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 Windows
MestreLion

Respostas:

19

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.

As distribuições podem instalar o software em / opt, mas não devem modificar ou excluir o software instalado pelo administrador do sistema local sem o consentimento do administrador do sistema local.

Ational Justificativa O uso de / opt para softwares complementares é uma prática bem estabelecida na comunidade UNIX. A Interface Binária do Aplicativo System V [AT&T 1990], baseada na Definição da Interface System V (Terceira Edição), fornece uma estrutura / opt muito semelhante à definida aqui.

O Intel Binary Compatibility Standard v. 2 (iBCS2) também fornece uma estrutura semelhante para / opt.

Geralmente, todos os dados necessários para suportar um pacote em um sistema devem estar presentes em / opt /, incluindo arquivos destinados a serem copiados em / etc / opt / e / var / opt /, bem como diretórios reservados em / opt.

As pequenas restrições às distribuições que usam / opt são necessárias porque são possíveis conflitos entre o software instalado na distribuição e o instalado localmente, especialmente no caso de nomes de caminho fixos encontrados em algum software binário.

A estrutura dos diretórios abaixo / opt / é deixada para o empacotador do software, embora seja recomendável que os pacotes sejam instalados em / opt // e sigam uma estrutura semelhante às diretrizes para / opt / package. Uma razão válida para divergir dessa estrutura é para pacotes de suporte que podem ter arquivos instalados em / opt // lib ou / opt // bin.

Faheem Mitha
fonte
5

Você deve usar apenas /usr/local/sharearquivos 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/localou se você criar um novo diretório dedicado /usr/local(mas este último vontade não existir no executável PATH, o LD_LIBRARY_PATH, nem a MANPATH).

Veja a ESF

symcbean
fonte
Obrigado. Então, se for uma analogia do Windows, deve ser / usr / local / SPECIAL_APP e dentro deve haver seus subdiretórios, certo?
greenoldman
@greenoldman: não. Nenhuma analogia vai caber porque o Windows e Linux usam modelos diferentes: No Windows, você geralmente manter todos os arquivos em um único dir, onde em Linux você costuma dividir-los bin, share, lib, etc
MestreLion
3

Até que /optse tornou comum, o lugar habitual era /usr/local/lib/<package>.

Teddy
fonte
1
Pelo que li, / opt é bastante comum, mas não é amplamente utilizado, mas isso não é uma surpresa se você pensar na quantidade de pacotes disponíveis nos repositórios.
greenoldman
0

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:

  • simples
  • rápido para configurar
  • sem chance de afetar outras partes do sistema
  • desinstalar é tão fácil quanto instalar

Contras:

  • Torna-se bastante tedioso se o número de pacotes a instalar for grande
  • Faz PATHparecer bagunçado

Para mais de alguns pacotes , eu recomendaria o uso do /usr/local/<your package>e sym-linking do executável de /usr/local/binou /usr/local/sbindependendo 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

  • Não faz PATHbagunça
  • Não afeta o sistema básico
  • Ainda é muito simples remover todos os complementos e retornar a um sistema básico limpo

Contras:

  • Mais trabalho para configurar
  • A remoção de apenas um pacote tem alguma pesquisa a fazer

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 sharediretório em si é para arquivos independentes de arquitetura como observado no de Faheem ligação e os arquivos dependentes de arquitetura deve ir para lib, lib32, lib64, etc.

Lauri Tšili
fonte
Dar conselhos com base no número de pacotes não é útil; como sei a que grupo meu pacote pertence?
Alois Mahdal
Além disso, quando você diz "recomenda-se", fonte de referência ou estado claramente que é a sua recomendação (eu estou supondo que o último ...?)
Alois Mahdal
E, a propósito, não vejo como em / opt haveria menor chance de as coisas atrapalharem seu aplicativo do que quando ele é espalhado para / usr etc. instalar scripts.
Alois Mahdal
Definitivamente, é a nomeação que torna as coisas confusas. É algo que experimentei no passado e é por isso que gosto de manter meus pacotes "extras" longe de todo o resto. Ainda não quero que as coisas pareçam feias.
Lauri Tšili (
E sim, você está correto quanto ao "é recomendado", como pode ver na minha resposta, usei "eu recomendaria" em qualquer outro lugar. Corrigi minha ortografia e esclareci por que recomendaria algo. Novamente, é apenas minha perspectiva e não pretende ser uma resposta definitiva.
Lauri Tšili (