No Linux, de acordo com o Filesystem Hierarchy Standard , /opt
é o local designado para pacotes de software de aplicativos complementares. Assim, ao desenvolver meu próprio pacote de software, que não depende de mais nada, eu colocaria isso em /opt/somepackage
, com uma hierarquia de minha escolha abaixo.
O FreeBSD, de acordo com o link acima, não segue estritamente o FHS, mas instala pacotes de terceiros no /usr/local
. OPNsense, que é baseado no FreeBSD, instala seu próprio código (pelo menos em parte) no /usr/local/opnsense
. A hier
página de manual do FreeBSD não faz menção a isso /opt
- portanto, é improvável que um pacote que se instale naquele local colida com qualquer outro, mas introduziria um caminho de nível superior que é quase tão exótico quanto instalar diretamente em /somepackage
.
Qual seria o local de instalação apropriado no FreeBSD? /usr/local/somepackage
em vez de /opt/somepackage
, novamente com uma hierarquia de minha escolha abaixo?
Observe que vi as seguintes postagens, que fornecem algumas dicas, mas não respondem totalmente à minha pergunta:
- No Linux eu usaria "/opt" para software personalizado. No FreeBSD? – pergunta especificamente sobre software não gerenciado pelo gerenciador de pacotes, enquanto estou perguntando sobre o desenvolvimento do meu próprio
.pkg
. - O que pode ser equivalente ao Linux /opt/ no OpenBSD? – pergunta sobre o OpenBSD, que pode ser diferente do FreeBSD
Você instala programas de usuário em formato
/usr/local/
. Não há nenhum/opt
na instalação padrão ou mencionado nahier
página de manual.Na página de manual:
E:
E:
Se você estiver instalando um executável que inclua outras coisas como documentação, dados, arquivos auxiliares, etc., eu colocaria isso
/usr/local/$package
porque é um pacote de coisas. Se for apenas o executável, ele deve entrar/usr/local/bin
porque é um binário.O uso de
/usr/local
vs./opt/
transcende o BSD e é anterior ao Linux.Normalmente, ambos os diretórios são usados para instalar software que não vem com o sistema operacional. A citação sobre software "não instalado pelo gerenciador de pacotes" realmente significa que não vem dos repositórios e pacotes fornecidos pelo sistema operacional. Muitos gerenciadores de pacotes e repositórios de terceiros serão instalados em /opt.
Historicamente, todos os pacotes instalados localmente (não distro) eram despejados
/usr/local
normalmente no{bin,sbin,man,lib}
tipo de hierarquia.Mas isso fica confuso rapidamente, já que os arquivos de vários pacotes ficarão todos misturados, possivelmente pisando uns nos outros e tornando os caminhos de atualização pouco claros.
Então foi iniciada uma prática para instalar coisas
/usr/local/$packagename/{bin,lib,man}
que estavam melhores, mas ainda assim bagunçadas. Para corrigir isso, o uso de /opt foi incentivado para isso, deixando/usr/local/
ainda uma bagunça, mas pelo menos alguns dos pacotes estavam fora dessa bagunça.Mas, na verdade, no final, você pode instalar software em qualquer lugar, inclusive
$HOME/mysillyapps/$package/{bin,man,lib}
e o único requisito é que você adicionebin
($PATH
embora outros ambientes também ajudem), então usar/usr/local/
ou/opt
é uma coisa agnóstica, funciona em qualquer lugar.A esperança é que, ao adicionar $packagename (ou $packagename-$version ) ao nome do diretório, o risco de colisões com aplicativos instalados no gerenciador de pacotes seja reduzido, não importa onde ele seja instalado. (Certamente você não está instalando manualmente e o gerenciador de pacotes instalando o mesmo pacote!)
A única coisa relevante do tipo de sistema operacional aqui é que /usr/local/bin já pode ser adicionado ao PATH por padrão.
Pelo menos no OpenBSD (e acho que o mesmo se aplica ao FreeBSD),
/usr/local
é essencialmente gerenciado pelo sistema de pacotes do sistema operacional. Se o seu "pacote de software personalizado" não for tratado pelo sistema de pacotes, existe a possibilidade de conflitos - por exemplo, arquivos com o mesmo nome - com outros pacotes que o sejam. Então, a menos que você esteja construindo um pacote para ser instalado através do sistema de pacotes do sistema operacional, eu continuaria colocando-o em/opt
, para ter certeza de que ele não interferirá em outros pacotes (ou sofrerá interferência).