Por que meu pacote foi instalado em / opt?

8

Um tempo atrás eu instalei o couchdb da fonte na minha máquina debian. Parecia instalar bem e tudo funcionou.

Algumas semanas depois, eu queria atualizar e instalar a partir de um .deb usando o dpkg. Tudo agora parece ter sido instalado em /opt. Tudo parece funcionar bem, mas eu realmente não entendo por que tudo foi instalado no /opt. Não parece tão "suave" como quando as coisas foram instaladas diretamente no /usr/local/bine /etce /var/log. É mais complicado de configurar do que quando eu acabei de editar os arquivos de configuração que foram instalados em / etc / couchdb

Alguém se importaria de me explicar por que a instalação /opté "uma coisa boa" e por que essa é uma maneira melhor de fazer as coisas do que a instalação anterior que era da fonte?

Sei que essa é uma pergunta bastante vaga, mas sou apenas competente com o Linux, não um especialista e não entendo o pensamento por trás da instalação no /opt

Mikel
fonte
Talvez haja uma tag / debian ausente?
D4RIO
Você está dizendo que um pacote Debian instalado em / opt? Nesse caso, está fazendo a coisa errada. Também tenho um aplicativo do Google Chrome (atualmente não instalado) instalado em / opt. Tudo o que é gerenciado pelo sistema de pacotes deve ir para o sistema principal.
Faheem Mitha 26/03
Ao olhar isso com mais cuidado, não consegui encontrar uma declaração clara na política de que a instalação do pacote Debian (independentemente de ser oficial ou não) não deve ser instalada no / opt, embora eu tenha a forte impressão de que isso não deve ser feito, e existe Existem vários comentários na rede que fazer isso é a coisa errada. Se eu encontrar algo mais definitivo, eu o publicarei. AFAIK, o Debian não espera ou requer que pacotes não oficiais sejam instalados em um local diferente dos pacotes oficiais.
Faheem Mitha 26/03

Respostas:

10

O padrão de hierarquia do sistema de arquivos fornece estas definições:

  • /opt : Pacotes de aplicativos complementares
  • /usr/local : Hierarquia local (para uso do administrador do sistema ao instalar o software localmente)

A maneira que eu li isso:

  • Os aplicativos de sistema padrão devem entrar /bine /usr/bin(implícitos)
  • Pacotes de terceiros devem ser enviados /opt
  • Algo só deve ser instalado /usr/localse o administrador do sistema desejar

Por extensão, se o sysadmin instala algo usando dpkgor rpm, não deve entrar /usr/localpor padrão.

Portanto, é possível que esteja fazendo a coisa certa.

Mikel
fonte
O servidor de aplicativos Websphere da IBM entra em / opt. Além disso, quando instalo algo como o IBM JDK, coloco-o em / opt / java.
djangofan
5

A política Debian diz

9.1.2 Programas específicos do site

Conforme exigido pelo FHS, os pacotes não devem colocar nenhum arquivo /usr/local, colocando-os no arquivo do sistema de arquivos para serem descompactados pelo dpkg ou manipulando-os em seus scripts de mantenedor.

Não existe essa proibição específica contra /opt. A política também adiciona

A localização de todos os arquivos e diretórios instalados deve estar de acordo com o Padrão do Sistema de Hierarquia de Arquivos (FHS), versão 2.3, com as exceções mencionadas abaixo, e exceto onde isso violaria outros termos da Política Debian.

e o File Hierarchy Standard diz

Os diretórios /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, e /opt/mansão reservados para uso administrador do sistema local.

e depois mais abaixo

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

Note que Policy é para o próprio Debian, mas geralmente corresponde a uma recomendação de melhores práticas. O resultado, se eu estiver lendo isso corretamente, é que não é permitido instalar pacotes binários (deb) /usr/local, mas é aceitável instalar /optdesde que não interfira no uso do espaço pelo sysadmin.

Minha opinião pessoal é que é uma má idéia ter pacotes deb em um /usr/localou outro /opt. Eu discordo do D4RIO quando ele diz:

Existe um pacote Couchdb para o Debian (quero dizer, oficial), portanto, se você baixou outro, está tudo bem, ele deve estar instalado no /optou /usr/local/bin.

Geralmente, você não deseja instalar dois pacotes deb diferentes, correspondentes ao mesmo software, e se eles tiverem o mesmo nome de pacote, o dpkg não o permitirá de qualquer maneira. Pacotes Debian não oficiais de software disponíveis como pacote oficial geralmente (mas nem sempre) têm o mesmo nome que os oficiais; você acabou de instalar um ou outro, não os dois.

Pelo que vale, acho que colocar pacotes de deb /opté uma péssima idéia, e a única ocorrência recente disso que vi foi no Google Chrome. No entanto, o Google nem sempre segue as práticas recomendadas.

Faheem Mitha
fonte
Concordo totalmente que um pacote não deve ser instalado em / opt, especialmente se ele colocar arquivos em outros lugares também como em / usr / bin. Imho / opt deve conter um software completamente independente, para que você possa tirá-lo da órbita simplesmente excluindo-o de / opt.
Arrowmaster 26/03
Ok, ótimas respostas, obrigado, mas ele está instalado em / opt por padrão. Se não for / opt, então para onde devo instalá-lo? E como fazer isso usando o dpkg?
@Duke: Se você pode obter a fonte do pacote deb, você pode reconstruir o deb para instalar no sistema como pacotes regulares. Isso exigirá um pouco de trabalho se você ainda não estiver familiarizado com o procedimento, mas imo é a coisa correta a ser feita aqui.
Faheem Mitha 27/03
1
não concorde com esta resposta. Existem muitas situações em que você deseja instalar duas versões do software; você pode facilmente querer um python específico para um aplicativo específico. Um administrador de sistema local pode querer empacotar esse python, para onde deveria ir? O software instalado localmente (make install) entra em / usr / local, o terceiro pacote de software entra em / opt / - a definição de pacotes é mantida ampla: via dpkg, via installers, via PIP, via (insira o sistema de empacotamento de sua escolha). Concordo que é uma boa prática de "fornecedor / pacotes" independentes.
Ashwoods
4

/opté para software de terceiros. Existe um pacote couchdb para o debian (quero dizer, oficial), então se você baixou outro, está tudo bem, ele deve estar instalado no /optou /usr/local/bin.

D4RIO
fonte
2

Mesmo que não seja o Debian, as Diretrizes de Empacotamento do Fedora são bem claras sobre isso:

… Nenhum pacote Fedora pode ter arquivos ou diretórios em / opt ou / usr / local…

A razão para os pacotes não colocarem as coisas em / opt é bastante simples: Como foi apontado anteriormente, o Padrão de Hierarquia de Arquivos declara que…

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.

Isso é algo que não pode ser garantido pelos pacotes, pois uma instalação ou atualização pode modificar esses dados.

Eu sei que o Fedora não é o Debian, mas acho que, neste caso, eles são bem parecidos. Especialmente porque o Lintian, a ferramenta de verificação de pacotes do Debian, tem um erro especial para isso: dir-or-file-in-opt

Lars Kiesow
fonte