Por que usuário comum não consegue rodar aplicativo? [RESOLVIDO]

13. Re: Por que usuário comum não consegue rodar aplicativo?

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/02/2015 - 11:41h


Ru4n, eu fiz o que você disse, porém para rodar o make && make install, foi preciso sudo su.
Enquanto estava com # o comando funcionava, quando digitei exit, para voltar ao usuário comum, o comando não rodou mais.
Eu não quero colocar o programa em opt, não. É que estive lendo sobre procurar um lugar para instalar os programas no Slackware. Eu baixo e todos ele ficam em /home/usuário/Downloads acho que a pasta Download está ficando muito cheia, por isso, procuro mover o pacote de instalação para uma pasta (discos de instalação) .
O que devo fazer? Rodar tar -xzvf programa.tar.gz >./configure>make>make install a partir da própria pasta Downloads? E o sistema se encarrega de mandar os aplicativos para os lugares certos?


Entendi, você quer fazer a instalação com user normal, sem usar root para nada. Isso é bem simples, basta direcionar o DESTDIR para uma pasta local dentro de $HOME e setar em seu ~/.bash_profile o local de instalação. Por ex:

Eu costumo usar as pastas ocultas de dentro do home, mas você pode usar outro lugar.

./configure --prefix=/usr
make && make install DESTDIR=$HOME/.local


Assim, seus programas ficam instalados em ~/.local/{,usr/{,bin,share,man}}, etc.

Para setar o PATH/MANPATH faz o seguinte:

PATH=~/.local/usr/bin:$PATH
MANPATH=~/.local/usr/share/man:$MANPATH
export PATH MANPATH


Em seu ~/.bash_profile

Pra fazer tudo isto não é necessário root.

Você pode mover os arquivos .tar.gz (antes da compilação) para a pasta ~/.local/src (se não existir, crie) e descompactá-los lá, e a partir dai faz a compilação & instalação.

-----------------------------------------------------------------------------
Uma vida não questionada não merece ser vivida - Platão


  


14. Re: Por que usuário comum não consegue rodar aplicativo?

Antonio Thomacelli
tonnytg

(usa Outra)

Enviado em 13/02/2015 - 15:29h

Opa,

li brevemente os comentários acima,
vamos tentar identificar seu problema pois ele não ficou claro.


$ which pwgen


O comando acima irá procurar o local onde este binário está.
Repare que usei o $, tente executar com seu usuário.
Caso ele não encontre nada, use o sudo

Perceba que o usuário comum tem acesso somente a pasta /bin
Caso este binário tenha sido instalado na /sbin, ai não é problema e sim questão de acesso,
já que de acordo com a FHS( File System Hierarchy ) está pasta é para grupos admistrativos ( root )


Dei uma olhada aqui na documentação e o local correto deste programa é na pasta abaixo

usr/bin/
usr/bin/pwgen


Caso, realmente esteja neste caminho você pode adicionar ela dentro da sua $PATH como os amigos acima, indicaram.
Dentro do /etc/profile tem uma checagem qual é o PID do usuário, se for 0 = root, ele carrega uma PATH
Caso seja PID != 0 carrega outra PATH

Então basta adicionar na sua PATH

$echo "PATH=$PATH:/usr/bin" >> ~/.bashrc


Pronto, assim toda vez que o Bash do seu usuário for carregado o PATH irá saber que deve mostrar para você os binários que estão dentro da pasta /usr/bin


Abraço e boa sorte.
Att. Antonio Thomacelli Gomes
http://www.tonnytg.com.br


15. Re: Por que usuário comum não consegue rodar aplicativo?

andre luiz
xiloba

(usa Slackware)

Enviado em 13/02/2015 - 15:38h

tonnytg escreveu:

Opa,

li brevemente os comentários acima,
vamos tentar identificar seu problema pois ele não ficou claro.


$ which pwgen


O comando acima irá procurar o local onde este binário está.
Repare que usei o $, tente executar com seu usuário.
Caso ele não encontre nada, use o sudo

Perceba que o usuário comum tem acesso somente a pasta /bin
Caso este binário tenha sido instalado na /sbin, ai não é problema e sim questão de acesso,
já que de acordo com a FHS( File System Hierarchy ) está pasta é para grupos admistrativos ( root )


Dei uma olhada aqui na documentação e o local correto deste programa é na pasta abaixo

usr/bin/
usr/bin/pwgen




Oi, Tonnytg. Vamos por partes. Olha a saída do primeiro comando:

bash: wich: comando não encontrado
bash-4.2$ which pwgen
/usr/local/bin/pwgen

Repare que ele não está dentro de /usr/bin/pwgen. Existe uma pasta /local entre /usr/ e /bin.

Então, eu deveria adaptar o comando que você postou e acrescentar a pasta local a ele?É isso?

echo "PATH=$PATH:/usr/bin/local" >> ~/.bashrc



16. Re: Por que usuário comum não consegue rodar aplicativo? [RESOLVIDO]

andre luiz
xiloba

(usa Slackware)

Enviado em 13/02/2015 - 16:05h

ru4n escreveu:

O "/usr/bin" é padrão para os pacotes prontos como .rpm, .deb, .txz. Em /usr/local é onde vai programas compilados sem opções adicionais.

Para o ~/.bashrc ser lido, tem que criar o ~/.bash_profile com o seguinte cabeçalho:

# ~/.bash_profile
[[ -f ~/.bashrc ]] && source ~/.bashrc


PS: o Slackware não cria o ~/.bash_profile por padrão, fica a critério do usuário se precisa ou não deste arquivo.
PS2: o ~/.bashrc é apenas uma convenção; pode-se adotar outro nome de arquivo ou usar apenas o ~/.bash_profile.
-----------------------------------------------------------------------------
Uma vida não questionada não merece ser vivida - Platão


No final do arquivo ~/.bashrc está assim:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/bin/local

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/bin

Eu tinha digitado o comando do jeito que perguntei ao tonny. Acho que por isso, ele ficou terminando com a palavra local.
Na segunda linha, ele acaba em /usr/bin. Sem o local. Posso apagar a primeira linha?
Funcionou depois que criei o /etc/profile do jeito que você falou.





17. Re: Por que usuário comum não consegue rodar aplicativo? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/02/2015 - 16:11h

No final do arquivo ~/.bashrc está assim:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/bin/local

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/lib64/kde4/libexec:/usr/lib64/qt/bin:/usr/share/texmf/bin:/usr/bin

Eu tinha digitado o comando do jeito que perguntei ao tonny. Acho que por isso, ele ficou terminando com a palavra local.
Na segunda linha, ele acaba em /usr/bin. Sem o local. Posso apagar a primeira linha?
Funcionou depois que criei o /etc/profile do jeito que você falou.


Na realidade você inverteu o /usr/local/bin por /usr/bin/local (arquivo inexistente). O correto é: /usr/local/bin
Essas duas linhas são desnecessárias, afinal você definiu o mesmo caminho contido em /etc/profile. :-)

-----------------------------------------------------------------------------
Uma vida não questionada não merece ser vivida - Platão



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts