Suponha que eu tenha acesso ssh a algum servidor Ubuntu como usuário e que algumas ferramentas do sistema não sejam instaladas por conveniência (mc, rtorrent, mcedit). Não quero incomodar os administradores desses pequenos programas.
Existe uma maneira de instalá-los (fazê-los funcionar) sem usar algo parecido sudo apt-get install
?
Respostas:
Compile e instale em
~/bin
(e edite seu.bashrc
para definir oPATH
para incluí-lo). bibliotecas podem ser compiladas e instaladas da mesma forma~/lib
(configuradasLD_LIBRARY_PATH
para apontar para ela) e cabeçalhos de desenvolvimento podem ser instalados, por exemplo~/includes
.Dependendo dos detalhes específicos dos programas que você deseja instalar e das bibliotecas das quais eles dependem, você pode baixar os arquivos .deb e usar '
dpkg-deb -x
' para extraí-los sob o diretório inicial. Então você vai ter um monte de "diversão" definindo oPATH
,LD_LIBRARY_PATH
e outrosvariables
. Quanto mais complexo o programa ou aplicativo que você estiver instalando, mais divertido você terá :)Obviamente, você não poderá instalar
setuid
binários dessa maneira - eles serão instalados, mas (já que você não tem permissão para exibi-los como root ou definir asetuid
parte deles), eles serão binários normais de sua propriedade. .Da mesma forma, daemons e serviços do sistema que esperam estar em execução como certo
UID
ou têm a capacidade de alterar o uid, ou esperam que os arquivos estejam em/etc
vez disso~/etc
e assim por diante, provavelmente não funcionarão, se for o caso.A maioria dos administradores de sistemas consideraria
mc
emcedit
seria "principalmente inofensiva", programas inócuos.Muito poucos, no entanto, considerariam a instalação de um cliente de torrent inofensiva, especialmente se eles tiverem que pagar pela largura de banda ou acabarem sendo legalmente responsáveis. A maioria dos administradores de sistemas provavelmente não ficaria muito feliz se os usuários finais instalassem esse software sem permissão. Eles podem dizer "claro, vá em frente, se nocauteie" ou podem não ... mas você deve perguntar sobre qualquer coisa que possa causar problemas para os proprietários / administradores da máquina.
fonte
LD_LIBRARY_PATH
é um truque do mal . Isso se aplica aqui também, ou eu entendi errado?dpkg-deb -x
para um diretório local). Funcionou como um encanto. Eu não tive que fazer nenhumLD_LIBRARY_PATH
hacks. Mesmo que eu precise, eu faria na mesma linha de comando para não afetar as configurações globais (por exemplo$ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher
).Você precisa compilá-los da fonte. Deve ser apenas uma questão de
O binário seria então localizado em
~/myapps/bin
. Então, adicioneexport PATH="$HOME/myapps/bin:$PATH"
ao seu.bashrc
arquivo e recarregue o.bashrc
arquivo comsource ~/.bashrc
. Obviamente, isso pressupõe que o gcc esteja instalado no sistema.fonte
Você pode usar o JuNest , que cria um pequeno contêiner Linux no diretório do usuário, onde você pode instalar qualquer pacote.
fonte
Eu enfrentei o mesmo problema, eis como o corrigi rapidamente, supondo que você tenha um servidor Linux com o mesmo sistema operacional e arquitetura.
Instale o software no sistema que você controla
Encontre o exemplo executável
which python
e copie-o para~/
Copie as bibliotecas com:
Transfira o executável e as bibliotecas para o outro sistema em que você possui apenas privilégios locais e execute o seguinte:
Isso criará uma pasta
~/lib
para armazenar as bibliotecas, adicioná-lo ao seu caminho e dizer ao LD para examinar as bibliotecas lá; basta adicionar seus executáveis e as bibliotecas lá, agora você pode executá-lo como faria em outro lugarIsso pode ser muito hacky, mas é muito portátil, rápido e ainda não encontrei algo que não possa ser executado dessa maneira, é claro, o software não pode tentar fazer coisas que precisam de acesso root, como vincular a uma porta inferior 1024, etc.
fonte
Estou tendo o mesmo problema que você. Ainda não tentei, mas parece que o Linuxbrew pode ser útil nessa questão.
fonte