/ usr / local ou / opt?

44

Como você geralmente procede para suas instalações de pacotes no Linux, para pacotes que não fazem parte dos repositórios de distribuição do seu distrib?

Do meu lado, eu estou acostumado a instalar no / opt. Mas desde então, eu vi esse documento na Internet: http://www.pathname.com/fhs/ . Agora estou confuso: aparentemente / usr / local também seria uma possibilidade.

Qual é a diferença entre ambos? Alguma prática recomendada para compartilhar?

obrigado

SirFabel


fonte
Território da guerra santa e não é realmente um tópico de programação para iniciar.
dmckee
1
Pergunta semelhante em Ask Ubuntu , superusuário , unix e linux
kenchew

Respostas:

33
  • Tudo o que precisa ser compilado e instalado no estilo Unix e em conformidade com a FHS ->/usr/local
  • Tudo o resto (por exemplo, um aplicativo da web java que vem com seu próprio servidor de aplicativos e vários recursos em um arquivo zip -> /opt
lajuette
fonte
Lintian não permitem pacotes que serão instalados em / opt nem / usr / local mais
Cristiano
24

Informações adicionais interessantes: o significado original /usr/localé que, se /usrfor montado em rede ( /usrcompartilhado único em vários computadores), /usr/localseria um sistema de arquivos separado local para o computador (partição no disco local).

E enquanto estiver nesse tópico, mesmo que não esteja de acordo com a pergunta: se houver vários computadores com arquiteturas diferentes, naturalmente haveria um /usrpara cada arco, mas /usr/sharehaveria outro sistema de arquivos separado compartilhado entre arquiteturas (daí 'compartilhamento') .


fonte
5
Não ... historicamente (sim, eu estava lá!) / Usr et al tinha o material fornecido pelo fornecedor, / usr / local era um material instalado localmente (ou seja, bash, gcc e outras coisas interessantes).
vonbrand
@vonbrand Você está realmente contradizendo a resposta? Parece que tudo o que precisa ser compartilhado entre o host seria / usr e o que não for necessário também estaria em / usr / local
Didier A.
@Didier A., ​​quando comecei a usar o Unix (anos 80), havia uma máquina, sem rede ... e eles tinham / usr e / usr / local.
vonbrand 18/10
@ vonbrand Oh, eu vejo, interessante. Então parece que a intenção original de ter / usr e / usr / local ainda é um mistério.
Didier A.
@Didier A., ​​novamente: / usr foi o que foi enviado com o sistema operacional, as coisas "padrão", / usr / local foram adições locais (homebrewed, saiu da Usenet, retirado de um colega amigável em uma convenção, ...) . Não é padrão, apenas uso comum.
vonbrand 19/10
7

A maneira como faço é que, se exigir um prefixo para si mesmo OU for um pacote binário, eu opto por / opt (que é basicamente o modo Solaris). Se eu estou compilando a partir da fonte / usr / local é como eu vou.

Lee
fonte
6

Coloquei tudo em um diretório privado e depois uso o GNU stow .

Então, instalarei o pacote X.ver no /BASE/stow/X.ver. GNU Stow, então, combinar todos os pacotes (com links simbólicos) em /BASE/bin, /BASE/lib, etc.

Conflitos e remoção de pacotes são muito mais fáceis de lidar.

R Samuel Klatchko
fonte
Normalmente, usei / usr / local / stow / <packagename> como o local para armazenar "pacotes" e sinto que é uma boa prática - se alguém procurar em / usr / local, fica óbvio o que está acontecendo e o que sistema está mantendo os links simbólicos.
Stephanie
3

Aqui está como eu interpreto o padrão FHS:

/ usr / local é para arquivos criados localmente ou instalados localmente, empacotados ou não que se tornam parte da instância do sistema operacional.

/ opt é um local para instalar pacotes "estrangeiros" que não fazem parte do sistema operacional.

Contanto que você use apenas arquivos no sistema único em que os cria, / usr / local é adequado e, portanto, é o diretório base padrão da grande maioria dos softwares de código aberto.

Se você planeja redistribuir seu pacote, eu recomendaria o uso de um diretório base personalizado como / opt / myPackage.

jlliagre
fonte
2

O Solaris usou / optou muito. Muitas distribuições modernas de Linux agora esperam pacotes em / usr / local /. A idéia é a mesma - um lugar para colocar o software que faz essa máquina fazer o que faz, em oposição ao sistema operacional. É aproximadamente análogo a "Arquivos de Programa" em um sistema Windows.

Escolha um e cumpri-lo. É fácil o suficiente para ligar / optar por / usr / local.

Kyle Hodgson
fonte
Eu gosto do comentário de Lee, uma boa maneira de pensar sobre o problema. Seria um pouco estranho para mim ter um / opt em uma máquina Debian, mas isso provavelmente é apenas uma preferência pessoal.
Kyle Hodgson
Por favor não. O ESF pode ser um pouco datado, mas o raciocínio em / usr vs / usr / local vs / opt é sólido: padrão, distribuição fornecida; instalado localmente, como homebrew ou material experimental no github; material não padrão fornecido pelo fornecedor.
vonbrand 19/10
0

Se você recompilar um software fornecido pela distribuição do sistema operacional, para aproveitar várias vantagens da arquitetura específicas da sua própria máquina, use / usr / local.

Se você adicionar um software de outras fontes, além da distribuição do sistema operacional, coloque-o em / opt.

cp7781
fonte