Em qual diretório devo instalar programas no Linux?

28

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

Na web, descobri que / opt é para "addon apps opcionais", enquanto / usr é para "user programs". Achei um tutorial sugerindo / opt enquanto o outro sugested / usr.

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

    
por Eiver 29.04.2014 / 13:09

6 respostas

18

O "mais correto" depende da sua distribuição. Você deve verificar as diretrizes de 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, o TeamSpeak apenas coloca tudo em uma pasta (e pode não ser fácil de 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 em /opt .)

Também as distribuições geralmente tentam seguir o Padrão de hierarquia do sistema de arquivos , então é onde procurar por uma convenção mais genérica.

    
por 29.04.2014 / 13:55
4

A Base Padrão do Linux e o Filesystem Hierarchy Standard são discutivelmente os padrões de onde e como você deve instalar o software em um sistema Linux e sugeriria colocar software que não esteja incluído em sua distribuição em /opt ou /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 para a sua distribuição, por exemplo, os formatos dpkg ou rpm. Isso facilitará a geração de relatórios, atualização e remoção limpa do software.

    
por 29.04.2014 / 14:13
3

Se você estiver compilando seu próprio software, você controlará o local de 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 em /usr/local . Alguns pacotes (programas) criarão um subdiretório em /usr/local para armazenar todos os arquivos relevantes, como /usr/local/openssl . Outros pacotes instalarão seus arquivos necessários em diretórios existentes, como /usr/local/sbin e /usr/local/etc . Estes são simplesmente locais padrão e podem ser alterados durante a compilação.

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

Também deve ser notado que, embora você possa armazenar software em qualquer lugar, de acordo com a FHS , o código-fonte para software instalado localmente deve ser armazenado em /usr/local/src Padronizar onde você armazena suas árvores de origem permitirá localizar facilmente uma árvore se precisar copiar um arquivo de configuração de estoque ou binário. Mesmo que alguns pacotes o usem, seu código-fonte não deve ser armazenado em /usr/src , como é designado para o software do 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 seu pacote em /opt , mas ele não estiver no seu $PATH , seu shell não encontrará os executáveis e você terá que usar o caminho absoluto para invocar seus programas. Aqui estão algumas grandes discussões de AU sobre como configurar seu $PATH

Leitura adicional: man hier

    
por 29.04.2014 / 16:49
1

Os binários vão na pasta bin por convenções comuns, como você organizaria sua estrutura de pacotes, você pode pensar em /opt/<prog_name>/ se for apenas uma lista de binários.

    
por 29.04.2014 / 13:14
0

Eu tive a mesma pergunta ao instalar o eclipse através do instalador do eclipse. Notei que o gimp, perl e vim estão instalados na pasta / usr / share e decidiram instalá-lo lá.

    
por 03.04.2016 / 19:58
0

Existem duas maneiras de instalar programas, dependendo de como eles são empacotados.

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

  2. Você faz o download de 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 /opt ou /usr/bin e poderia, se as permissões permitirem ser usado por qualquer usuário. Eu mesmo coloquei as pastas com arquivos binários em minha pasta pessoal para ~/bin . Agora você deve poder executar o programa invocando seu arquivo bin.

por 04.11.2016 / 04:51