Qual é o local de instalação convencional para aplicativos no Linux?

73

Atualmente, estou instalando o NetBeans, e o diretório de instalação padrão é /home/thomasowens/netbeans-6.8. Eu não sou um fã de esse local, então eu estou olhando /etc, /bin, /usr/bin, e /sbin. O Linux tem um local que, por convenção, é o mesmo que o C:\Program Filesdiretório do Windows ?

Thomas Owens
fonte

Respostas:

99

De acordo com o padrão de hierarquia do sistema de arquivos , existem vários locais aceitáveis, dependendo do aplicativo. Estou citando extensivamente aqui.

  • bin é abreviação de "binário", é claro
  • sbin é a abreviação de "servidor binário", definido de outra forma como:

    Utilitários usados ​​para administração do sistema (e outros comandos somente raiz)

  • /usr é para dados compartilháveis, somente leitura, e deve ser compartilhável entre vários hosts compatíveis com FHS (se você tiver muitas máquinas na rede e todas elas tiverem a mesma arquitetura, poderá compartilhar uma única pasta / usr com todas as máquinas da rede)

  • /usr/local é para ser usado pelo administrador do sistema ao instalar o software localmente (ou seja, para aplicativos instalados somente nesta máquina, não em todas as máquinas da rede).

Tomando estes juntos:

  • /usr/bin é o diretório principal de comandos executáveis ​​no sistema.
  • /usr/sbin é para binários não essenciais usados ​​exclusivamente pelo administrador do sistema.
  • Programas de administração do sistema que são necessários para a reparação do sistema, recuperação do sistema, montagem / usr ou outras funções essenciais devem ser colocadas em /sbinvez (ou seja, as coisas que você precisa acessar para montar /usr/sbinir /sbin)
  • Da mesma forma, os comandos essenciais do usuário que podem ser necessários antes da /usrmontagem são/bin
  • Qualquer coisa instalada apenas na máquina local deve entrar /usr/local/binou/usr/local/sbin

Existe outro uso para / usr / local. A maioria das coisas que você instala através do gerenciador de pacotes da sua distro será colocada em / usr; muitas pessoas colocam as coisas que eles compilaram manualmente em / usr / local. Isso os mantém fora do caminho do sistema de gerenciamento de pacotes e permite que você localize o que instalou da distribuição (e não precisa fazer backup porque pode recuperá-lo novamente) e o que foi compilado manualmente; também permite executar versões diferentes ao mesmo tempo (por exemplo, / usr / bin / firefox vs / usr / local / bin / firefox).


Apenas quando você pensou que as coisas estavam resolvidas, há outro lugar, que provavelmente é o equivalente mais próximo de c:\Program Files- /opt:

/opt está reservado para a instalação de pacotes de software aplicativos complementares.`

/opté provavelmente o equivalente mais próximo c:\program files, na medida em que é o único lugar que você esperaria encontrar uma aplicação com todos os seus arquivos juntos em uma pasta, em vez de espalhados por /usr/bin, /vare /etc. Geralmente é usado apenas por pacotes muito grandes, mas, neste caso, como o Netbeans deseja ter sua própria pasta, provavelmente faz mais sentido colocá-lo em / opt / netbeans

James Polley
fonte
3
interessante. se eu tivesse projetado o Linux, teria colocado os aplicativos compartilhados da rede em / usr / shared e, em seguida, os aplicativos host locais privados em / usr. Dessa forma, eu poderia compartilhar / usr / shared sem também, por herança, compartilhar / usr.
precisa saber é o seguinte
11
Resposta muito boa. Também gosto do comentário sobre como manter as coisas fora do caminho do sistema de gerenciamento de pacotes.
precisa saber é o seguinte
11
Definitivamente / opte por "pacotes completos de terceiros". A maioria das instalações dividirá os vários binários, bibliotecas, arquivos etc. em diretórios diferentes, mas quando você possui um diretório "tudo em um", o / opt facilita o manuseio.
Avery Payne
Faça algumas perguntas rápidas: 1) Se / usr deve ser compartilhável entre todas as máquinas em uma rede, isso não significa que todos os diretórios filhos também seriam compartilháveis, tornando assim / usr / local visível para outras máquinas na rede? 2) O que é o FHS 3) Quando você fala sobre os comandos necessários para montar / usr, está falando sobre como o sistema operacional inicializa, digamos, um desligamento? Peço desculpas pelo bombardeio de perguntas 7 anos depois, mas sou novo no Linux e tive essa mesma pergunta depois de ver os guias de instalação dizerem onde colocar as coisas, mas não por que colocá-las lá. 1 btw
Ungeheuer 23/02
5

Realmente, tudo se resume à preferência pessoal. Vou explicar o meu pelo que vale a pena.

/ usr, / usr / bin geralmente são locais para o software instalado pelo sistema a ser instalado. Quando instalo as coisas pessoalmente, instalo-as em um dos vários locais:

  1. Se for apenas um script ou programa pequeno que eu usarei, eu o instalo em ~ / bin - é aqui que a maioria das minhas coisas acaba.
  2. Se for algo como você descreveu (NetBeans) com uma árvore de arquivos completa própria, eu o instalo em / opt
  3. Se for um único executável, eu o instalo em / usr / local / bin

Por que faço a distinção entre os nºs 2 e 3? Não faço ideia, é apenas um hábito que desenvolvi ao longo do tempo. Dá certo que / opt geralmente acaba se tornando uma árvore profunda de arquivos, mas tem apenas 2 ou 3 'coisas' reais instaladas. Neste momento, tenho notas de lampp e lótus instaladas no opt, 2 diretórios em que cada um tem árvores bastante grandes embaixo deles. Em / usr / local / bin, tenho 20 ou 30 entradas, mas nenhum subdiretório.

Não instalo coisas em / usr / bin ou / usr / sbin porque gosto de manter as coisas adicionadas manualmente (não fazendo parte da simples instalação do repositório padrão) separadas.

DaveParillo
fonte
1

Enquanto o padrão de hierarquia do sistema de arquivos fornece algumas orientações. Eu descobri que a maioria das distribuições gosta de instalar pacotes no /usr/share.

Por isso, adotei a prática de instalar qualquer aplicativo não instalado via gerenciador de pacotes (rpm / apt-get / emerge) no /usr/local. Isso me permite manter aplicativos e bibliotecas que não são gerenciados pelo gerenciamento de pacotes separados dos que são.

É uma técnica que me ajudou a gerenciar meu sistema no Fedora Core e no Gentoo.

Adam Luchjenbroers
fonte
0

Eu teria pensado que o local padrão é /bin, é onde praticamente tudo é instalado por padrão se estiver usando o apt-get ou similar ...

... No entanto, quando se trata de programas mais modernos (ou sem instalador) que possuem muitos arquivos adicionais, eu gosto de colocá-los em seu próprio diretório /bin.

William Hilsum
fonte
3
Qual é a diferença entre / bin, / usr / bin e / sbin? / bin faz mais sentido, pois é para arquivos binários.
Thomas Owens
0

Geralmente eles são instalados em várias pastas, principalmente / usr, / local, / bin, etc. Você pode descobrir para onde o programa é instalado a partir do instalador do GDebi (na guia arquivos). Se você for mover o Netbeans, sugiro movê-lo para / opt, porque é aí que o Google parece instalar suas coisas.

digitxp
fonte
0

Concordando com a resposta de James Polley, mas na verdade o diretório padrão faz muito sentido, a menos que você precise compartilhar o aplicativo entre várias contas. Por exemplo, eu precisava instalar o Eclipse 3.0 (obsoleto) para fazer o Flex funcionar no Linux, e coloquei em $ HOME / eclipse3.

CarlF
fonte
0

Eu gosto de usar / apps para a maioria dos aplicativos complementares que instalo em vários servidores. Eu mantenho uma cópia da pasta em / installs / apps no meu servidor nfs. Quando crio qualquer novo servidor Linux, monto a pasta de instalação e copio / aplicativos e tenho muitos aplicativos comuns diferentes no novo servidor. Excluo as entradas que não preciso para este novo servidor e pronto. Bem, talvez eu precise executar um script ou três para definir variáveis ​​de ambiente ou instruções de caminho, mas é praticamente o que é necessário para configurar muitos novos servidores.

Eu venho de um plano de fundo Windows e .net. Uma das promessas do .net era que a maioria dos aplicativos poderia ser instalada usando o Windows xcopy. Eu procuro a mesma coisa no Linux. Onde disponível, eu escolho o tarball sobre o RPM ou yum, etc. para que eu possa implantar em / apps com cp -r e adicionar o aplicativo ao meu servidor nfs para implantações futuras.

Dale
fonte
2
A pergunta pede a convenção. Você descreveu o que faz, pessoalmente. Você pode pelo menos relacionar isso a uma convenção?
Fixer1234 29/05