Ao instalar aplicativos de usuário, onde as “melhores práticas” sugerem que eles estejam localizados?

210

Ocasionalmente, instalo aplicativos manualmente, em vez de usar aptou outro gerenciador de pacotes.

Que local ( /usr/, /usr/local/, /opt/, /home/, etc.) é sugerido por "melhores práticas" para a instalação de aplicativos do usuário?

citadelgrad
fonte
Gostando de instalar coisas do código de vez em quando, escrevi uma pequena ferramenta para fazer isso, que faz as alterações no arquivo de inicialização do shell por conta própria (e também modifica o prefixo da biblioteca, se você o solicitar, para programas que dependem de bibliotecas compartilhadas ) Não é muito rico em recursos, mas funciona 99% do tempo.
precisa saber é o seguinte
Post relacionado: askubuntu.com/q/138547/62483
Lucio
1
Grande discussão sobre a distinção entre /opte /usr/local: unix.stackexchange.com/q/11544/11917
blong

Respostas:

184

Isso depende mesmo. Se o aplicativo possui um makefile ou, por exemplo, para aplicativos python, se ele usa distutils (por exemplo, possui um setup.pyarquivo) ou um sistema de compilação / instalação similar, você deve instalá-lo /usr/local/. Esse é geralmente o comportamento padrão.

Pelo que entendi, /usr/local/tem uma hierarquia que é semelhante a /usr/. No entanto, diretórios como /usr/bin/e /usr/lib/geralmente são reservados para instalação de pacotes via apt. Portanto, um programa que espera ser "instalado" /usr/deve funcionar bem /usr/local/.

Se você só precisa extrair um tarball e executar diretamente (por exemplo, Firefox), coloque-o no /opt/. Um programa que precisa apenas de um diretório e obtenha todos os arquivos / bibliotecas relativos a esse diretório pode obter um diretório para si /opt/.

Umang
fonte
24
Parece que muitas pessoas esquecem opt/- na minha opinião, você acertou na cabeça como se fosse um propósito.
Marco Ceppi
3
Faça um link simbólico de / usr / bin ou adicioná-la a PATH em ~ / .bashrc
Alex
1
Que tal ~/.local/share? @Marco
ultimatex
1
Você pode instalar coisas dentro ~(seu diretório inicial), mas isso tornará um aplicativo acessível apenas a um usuário. Outros usuários do seu sistema precisarão instalar e manter suas próprias instalações desse software. Quanto às práticas recomendadas para instalar aplicativos, instale seu diretório pessoal, acredito que não haja diretrizes tão fortes, porque você não interferirá nos pacotes do sistema.
Umang 10/02
1
É errado instalar aplicativos que são 'descompactados do tar' em / home / ubuntu / myapp - que diferenças isso fez em comparação com / opt / myapp?
JARC
116

É bom lembrar que /usrisso não significa usuário, mas recursos do sistema unix .

Como tal, costumo concluir que qualquer distribuição tem o direito de atrapalhar todo o conteúdo /usr,e que minhas adições específicas ao sistema são inseridas /usr/local, o que preservo antes de fazer uma atualização.

Enquanto isso, aplicativos e outras coisas entram /opt.

Algumas pessoas se sentem confortáveis ​​colocando coisas /home, embora eu raramente siga essa convenção.

Tudo isso dito, deixei o gerente do pacote de distribuição fazer as coisas do seu jeito primeiro e depois fazer o que precede ao rolar manualmente.

Walt Stoneburner
fonte
35
Vale lembrar que 'unix system resources' é uma renomeação executada APÓS '/ home' foi adicionado. Nos velhos tempos, velhos tempos (Unix Versão 6 et.al.) você veria diretórios como / usr / jimmy, / usr / siobhan, / usr / ahmed, etc. porque os diretórios "user" estavam armazenados em / usr .
Mark Leighton Fisher
5
OK, vou morder: o que significa opt?
Seth
3
@ Seth Eu acho que é 'opcional' - era originalmente para software que não fazia parte de uma instalação padrão.
22715 Carl H das
5
/ usr é User. Isso ocorreu porque os usuários do Linux eram desenvolvedores. Primeiro, quando começou a se transformar em desenvolvedores e usuários, o /homedir foi introduzido. E então alguém teve a idéia de dizer isso significa Unix System Resources, o que realmente não faz sentido, porque temos a Unix system Resourcesem/dev
Informações-Screen
2
Correto, / usr é um sobrenome. O objetivo mudou desde os dias em que o Unix estava rodando em um PDP-7 em 1969.
Walt Stoneburner
34

Instale programas instáveis ​​como o firefox devel em / home / user / opt / facilita muito a remoção e não há confusão para outros usuários quanto à versão que eles devem usar ... Portanto, se não for um programa para uso global, instale em uma subpasta no seu diretório pessoal.

Nunca instale programas em / usr /, é provável que cause caos, as coisas instaladas em / usr / devem ser apenas para pacotes de distribuição. / usr / local / é para pacotes compilados localmente. E a estrutura funciona exatamente da mesma maneira! os arquivos em / usr / local / terão prioridade sobre os arquivos em / usr /

/ opt / deve ser usado para a instalação de pacotes pré-compilados (binários) (Thunderbird, Eclipse, Netbeans, IBM NetSphere, etc) e similares. Mas se eles são apenas para um único usuário, devem ser colocados no diretório inicial.

Se você deseja executar um programa instalado em um local "estranho" (como / home / user / opt / firefox /) sem digitar todo o caminho, é necessário adicioná-lo à sua variável $ PATH, você pode fazer isso adicionando uma linha como esta em seu /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

O nome da pasta deve ser aquele em que o arquivo executável que você precisa executar está localizado.

LassePoulsen
fonte
26

O padrão de hierarquia do sistema de arquivos do Linux indica /usr/local.

Em http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

A idéia original por trás de '/ usr / local' era ter um diretório ('local') '/ usr' separado em todas as máquinas, além de '/ usr', que pode ser montado somente para leitura em outro lugar. Ele copia a estrutura de '/ usr'. Atualmente, '/ usr / local' é amplamente considerado um bom lugar para manter programas auto-compilados ou de terceiros. A hierarquia / usr / local é para ser usada pelo administrador do sistema ao instalar o software localmente. Ele deve ser protegido contra substituição quando o software do sistema for atualizado. Pode ser usado para programas e dados compartilháveis ​​entre um grupo de hosts, mas não encontrados em / usr. O software instalado localmente deve ser colocado em / usr / local em vez de / usr, a menos que esteja sendo instalado para substituir ou atualizar o software em / usr.

popey
fonte
1
Parece contradizer esse material / usr / local com as informações na página opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Este diretório está reservado para todos os softwares e pacotes complementares que não fazem parte da instalação padrão. Por exemplo, os pacotes StarOffice, Kylix, Netscape Communicator e WordPerfect são normalmente encontrados aqui. Para estar em conformidade com o FSSTND, todos os aplicativos de terceiros devem ser instalados neste diretório. "..." (semelhante à maneira como o Windows instalará o novo software em sua própria árvore de diretórios C: \ Windows \ Progam Files \ "Nome do Programa ")"
Pod
6

Normalmente, tenho uma pasta chamada "Programas" em minha casa, onde instalo esses programas; por estranho que pareça (ou não), todos eles são coisas de Java agora.

Ele tem uma grande vantagem para mim: quando eu reinstalo ou troco de computador, eles são movidos pelo resto da minha casa. Ele tem uma clara desvantagem: esses aplicativos estão disponíveis apenas para o meu usuário.

Javier Rivera
fonte
Como posso reinstalar o Ubuntu 16.04 sem perder dados na pasta pessoal? Eu tentei fazer pelo /diretório de formato apenas e digite o mesmo nome de usuário e senha antigos, mas descobri que o Ubuntu cria outra pasta pessoal.
Ibrahim Disouki
1

Use "checkinstall" para converter seu pacote alienígena em um deb para que seja desinstalável usando o gerenciador de pacotes.

Observe que os arquivos de configuração geralmente não serão tratados como arquivos de configuração (talvez ignorados ou talvez tratados como parte do aplicativo), e que os scripts de pré e pós-instalação às vezes são confusos, embora geralmente avise quando você achar que o O deb terá um script ruim de pré ou pós-instalação.

Um estudante em uma universidade
fonte