Somente para o software que você precisa, use seu diretório pessoal em vez de /usr/local
.
Em vez de alterar a propriedade /usr/local
ou ter que executar comandos como root quando não quiser, basta configurar suas construções para que sejam instaladas no diretório inicial em vez de /usr/local
. Isso aborda todos os possíveis problemas com a alteração da propriedade /usr/local
, incluindo como seus subdiretórios bin
e sbin
estão no root
caminho.
Se você precisar permitir que outros usuários executem seu software, poderá conceder acesso a eles. De fato, eles provavelmente já poderão, porque, por padrão, seu diretório pessoal tem acesso permissivo de leitura e execução . (Se você não quer isso, pode alterá-lo facilmente, apenas usando os chmod
arquivos ou diretórios que deseja tornar privados e, possivelmente, também alterando o seu umask
.)
Com o software instalado em seu diretório pessoal, os binários que seriam inseridos /usr/local/bin
serão inseridos . Você receberá outros subdiretórios do diretório inicial correspondentes aos subdiretórios dos quais o software que você instala precisa. Isso normalmente acontece automaticamente quando você instala o software a partir do código fonte./home/username/bin
/usr/local
Configurando suas compilações
A maioria dos softwares que você cria a partir do código fonte possui uma etapa em que você executa:
./configure
Para a grande maioria dos softwares fornecidos com um configure
script que pode ser executado dessa maneira, o padrão é configurar a compilação para instalação interna /usr/local
quando você eventualmente executar sudo make install
a instalação. O motivo é que é implicitamente equivalente à execução:
./configure --prefix=/usr/local
Para configurar uma compilação para instalação em seu diretório pessoal, use isto:
./configure --prefix="$HOME"
Na prática, no Ubuntu, os caminhos do diretório inicial não contêm espaços, outros espaços em branco ou outros caracteres que serão tratados especialmente pelo shell *
, portanto, a menos que você configure sua conta de usuário de maneira bastante estranha, basta digitar:
./configure --prefix=$HOME
( Porém, não recomendo o hábito de escrever scripts . Além disso, em alguns outros sistemas operacionais - como o macOS - é menos incomum que os caminhos para os diretórios pessoais dos usuários contenham espaços.)
Ou, se preferir, digite o caminho completo do diretório inicial:
./configure --prefix=/home/username
(Substitua username
pelo seu nome de usuário real, é claro. Se, por algum motivo, seu diretório pessoal não estiver, /home
então você precisará ajustar em conformidade.)
Instalando suas compilações
Depois de executar make
, você pode estar acostumado a executar sudo make install
, mas quando instala em seu próprio diretório inicial, não é necessário executá-lo como root, para que você possa - e deva - omitir sudo
. Apenas corra:
make install
Da mesma forma, para software que suporta um uninstall
destino:
make uninstall
Isto é exatamente o que você estava pedindo ... apenas no seu diretório pessoal, não /usr/local
.
Executando seus programas
Provavelmente, o bin
subdiretório do diretório inicial é:
- já está no seu
$PATH
, ou
- estará no seu
$PATH
se você simplesmente sair e entrar novamente.
O motivo é que o .profile
arquivo no diretório inicial, que contém comandos executados quando você faz login, contém isso por padrão para contas de usuário criadas na maioria das versões do Ubuntu (incluindo a conta de administrador inicial criada quando você instala o sistema operacional):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Esse código é executado quando você faz login (porque está dentro .profile
) e coloca seu bin
diretório pessoal $PATH
somente se ele existir naquele momento. É por isso que você pode precisar sair e entrar novamente.
Versões mais antigas como o Ubuntu 14.04, assim como versões mais recentes como o Ubuntu 17.10, vêm com isso. No entanto, o Ubuntu 16.04, que é provavelmente o lançamento mais popular até agora, tem o seguinte:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Isso simplesmente adiciona o bin
subdiretório do seu diretório pessoal - assim como o .local/bin
subdiretório - ao seu $PATH
, sem verificar se esses diretórios realmente existem. Portanto, se você usa o 16.04, ou se atualizou de um sistema que era 16.04 quando a sua conta de usuário foi criada, o bin
subdiretório do diretório inicial provavelmente já está no seu $PATH
.
Seu .profile
arquivo é copiado do /etc/skel
diretório quando sua conta de usuário é criada. Se sua conta de usuário foi criada em uma versão mais antiga do Ubuntu, ela recebeu essa versão .profile
e não foi alterada - para sua conta de usuário - atualizando para uma versão mais recente.
Uma vez que o bin
subdiretório do seu diretório pessoal esteja no seu $PATH
, você poderá executar programas cujos arquivos executáveis estão instalados lá apenas digitando seus nomes, assim como você faria com os programas instalados pelo gerenciador de pacotes do Ubuntu ou instalados dentro dele /usr/local
.
A .local
Opção
Você deve ter notado que o .profile
arquivo padrão para contas de usuário criadas em algumas versões do Ubuntu, incluindo no 16.04, conforme descrito acima, não apenas adiciona $HOME/bin
ao seu caminho, mas também $HOME/.local/bin
. Se você .profile
não adicionar isso, mas quiser , basta editá-lo.
Embora geralmente seja usado para armazenar configurações e dados em cache , você também pode instalar o software dentro do .local
subdiretório do diretório inicial. Você deve se sentir desinibido ao fazê-lo, pois, do ponto de vista da usabilidade e segurança, --prefix="$HOME/.local"
é semelhante a --prefix="$HOME"
.
Lembre-se de que os arquivos e diretórios iniciados com .
não são mostrados por padrão nos navegadores gráficos (use Ctrl+ Hpara mostrar e reexibir) ou pelo ls
comando (passe o sinalizador -A
ou -a
para mostrá-los). Pode não ser o que você deseja ou pode ser exatamente o que você deseja. Esta é uma questão de preferência pessoal.
No entanto, observei que alguns gerenciadores de pacotes automatizados baseados em fontes que criam e instalam software no diretório pessoal de alguém usam $HOME/.local
. Na verdade, eu não sei o quão comum isso é - espero investigar melhor e atualizar esta resposta - mas você pode preferir usar apenas as $HOME
coisas que compila manualmente. Dessa forma, ficará claro de onde as coisas vieram. E se houver uma colisão, é provável que o software coexista de forma aceitável.
Você também pode instalar deliberadamente algum software dentro $HOME/.local
e outro software dentro $HOME
. Você decide. O bin
diretório que aparecer primeiro na $PATH
variável de ambiente é aquele a partir do qual um comando será executado, caso existam comandos com o mesmo nome em ambos.
Os créditos são atribuídos a Zanna e Videonauth por apontar erros em uma versão anterior desta resposta, sobre quais versões do Ubuntu possuem qual código padrão .profile
e me ajudar a corrigi- los (veja também aqui ).