Em qual diretório devo instalar programas no Linux?

43

Quero instalar um programa no Linux e executá-lo como um daemon. (A equipe fala 3 neste caso, mas a pergunta é de natureza geral). Não há pacote fornecido, apenas binários alcatroados. Onde na estrutura de diretórios devo colocar esse programa por convenção?

Na web, descobri que / opt é para "aplicativos adicionais opcionais", enquanto / usr é para "programas de usuário". Encontrei um tutorial sugerindo / opt enquanto o outro sugeria / usr.

Então, qual é o "mais correto"?

Eiver
fonte
1
O "mais correto" depende da sua distribuição. Você deve verificar as diretrizes da sua distribuição sobre onde colocar software que não é gerenciado pelo gerenciador de pacotes (geralmente /usr/local) OU sobre como criar seu próprio pacote para ele.
Leiaz
Obrigado Leiaz. Seu comentário me ajudou a encontrar a resposta ( askubuntu.com/questions/1148/… ). Então eu acho que deveria ser / opt no meu caso (usando Linux Mint, que é baseado no Ubuntu) e o aplicativo está usando uma única pasta. Se você converter seu comentário em resposta, eu o aceitarei.
eiver

Respostas:

27

O "mais correto" depende da sua distribuição. Você deve verificar as diretrizes da sua distribuição sobre onde colocar software que não é gerenciado pelo gerenciador de pacotes (geralmente /usr/local) OU sobre como criar seu próprio pacote para ele.

Como você disse que o TeamSpeak colocou tudo em uma pasta (e pode não ser fácil reorganizar), sim /opt/é provavelmente o melhor.

(Mas, por exemplo, no Archlinux, o gerenciador de pacotes pode instalar lá, então eu ainda faria um PKGBUILD para instalar /opt.)

Além disso, as distribuições geralmente tentam seguir o padrão de hierarquia do sistema de arquivos , portanto, é aqui que se busca uma convenção mais genérica.

Leiaz
fonte
existe algum alias para saber onde estão localizados cada diretório por uso? (por exemplo, onde colocar configurações de raiz, onde colocar binários, dependências, modelos ...)
Sandburg
5

Se você estiver compilando seu próprio software, controlará o local da instalação. Por convenção, o software compilado e instalado manualmente (não através de um gerenciador de pacotes, por exemplo, apt, yum, pacman) é instalado no /usr/local. Alguns pacotes (programas) criarão um subdiretório dentro /usr/localpara armazenar todos os seus arquivos relevantes, como /usr/local/openssl. Outros pacotes instalarão os arquivos necessários nos diretórios existentes, como /usr/local/sbine /usr/local/etc. Estes são simplesmente locais padrão e podem ser alterados durante a compilação.

Quando você está compilando software, o local da instalação pode ser especificado usando a --prefix=opção ao executar ./configure. É altamente recomendável que você analise todas as opções disponíveis para o seu pacote executando $ ./configure --help | less. Além disso, é uma boa idéia pesquisar os documentos INSTALL e README fornecidos com o seu pacote. Eles tendem a incluir instruções de instalação e informações de dependência específicas do pacote.

Observe também que, embora você possa armazenar software em qualquer lugar, de acordo com a FHS , o código fonte do software instalado localmente deve ser armazenado em /usr/local/src Padronização, onde você armazena suas árvores de origem, permitindo localizar facilmente uma árvore se você precisar copiar um estoque arquivo de configuração ou binário. Mesmo que alguns pacotes o usem, seu código-fonte não deve ser armazenado, /usr/srcpois é designado para software de sistema, como o kernel.

Por fim, você precisa garantir que seu local de instalação esteja incluído no seu $PATH. Se você decidir instalar o seu pacote, /optmas ele não estiver no seu, $PATHo shell não encontrará os executáveis ​​e você precisará usar o caminho absoluto para chamar seus programas. Aqui estão algumas ótimas discussões da UA sobre como configurar seu$PATH

Leitura adicional: man hier

Riacho
fonte
5

O Linux Standard Base e o Filesystem Hierarchy Standard são, indiscutivelmente, os padrões de onde e como você deve instalar o software em um sistema Linux e sugeriria software colocando que não está incluído na sua distribuição seja em /optou /usr/local/ou melhor subdiretórios nele ( /opt/<package> /opt/<provider> /usr/local/bin).

A melhor prática é converter o software baixado em um pacote de software instalável nativo da sua distribuição, por exemplo, formatos dpkg ou rpm. Isso facilitará a geração de relatórios, a atualização e a remoção limpa do software.

HBruijn
fonte
Isso praticamente re-afirma a pergunta em vez de respondê-la. O OP estava ciente disso /opte /usr/local/eram as duas opções disponíveis, mas queria informações específicas sobre qual dessas opções usar. Essa poderia ser uma resposta válida se, em vez disso, alegasse que os dois locais são intercambiáveis ​​(embora eu questionasse que seria uma resposta correta nesse caso).
JBentley 15/02
1

Os binários entram na binpasta por convenções comuns; como você organizaria sua estrutura de pacotes, é com você, posso pensar /opt/<prog_name>/se é apenas uma lista de binários.

bbsanem
fonte
Receio que o pessoal do Team Speak 3 tenha criado o programa de tal forma que tudo o que precisa esteja em apenas uma pasta (binários, arquivos de configuração, logs), portanto, ele não usa / bin ou / etc ou / var / log
Eiver 29/04
1

Eu tive a mesma pergunta ao instalar o Eclipse através do instalador do Eclipse.

Percebi que o Gimp, Perl e Vim estão instalados na /usr/sharepasta e decidimos instalá-lo lá.

senpai
fonte
0

Existem duas maneiras pelas quais os programas podem ser instalados, dependendo de como estão compactados.

  1. Através do gerenciador de software (apt, synaptic, Gdebi etc.) - o programa está em uma forma de pacote, geralmente .deb ou rpm. Na maioria dos casos, os gerentes de software lidam com dependências e instalam binários geralmente em /usr/bin, arquivos de configuração /etce assim por diante. Eles também podem criar um arquivo de configuração para o programa em sua casa, geralmente ~/.foo. Se você pode editar este arquivo, também pode alterar facilmente as configurações da sua sessão dessa maneira. Quando você remove o pacote, o gerente encontra todos os arquivos e os remove de forma limpa (ele armazenava todos os locais em um arquivo de texto especial). Mas isso pode preservar alguns arquivos de configuração, por exemplo, o da sua pasta pessoal.

  2. Você baixa um programa (geralmente compactado) em uma forma de arquivos binários pré-compilados para sua arquitetura. O arquivo executável do programa geralmente está em uma única pasta ao lado de outros arquivos (bibliotecas vinculadas dinamicamente etc.) Essa pasta inteira pode ser copiada, com privilégios de root, para /optou /usr/bine, se as permissões permitirem, podem ser usados ​​por qualquer usuário. Eu mesmo coloquei as pastas com arquivos binários na minha pasta pessoal ~/bin. Agora você deve conseguir executar o programa chamando seu arquivo bin.

Štěpán Doan
fonte