Gostaria de instalar pacotes de software, semelhantes a apt-get install <foo>
mas:
- Sem
sudo
e - Em um diretório local
O objetivo deste exercício é isolar compilações independentes no meu servidor de integração contínua .
Não me importo de compilar a partir do código-fonte, se é isso que é preciso, mas obviamente prefiro a abordagem mais simples possível. Eu tentei apt-get source --compile <foo>
como mencionado aqui, mas não consigo fazê-lo funcionar em pacotes como o autoconf. Estou tendo o erro a seguir:
dpkg-checkbuilddeps: Unmet build dependencies: help2man
Eu tenho o help2man compilado em um diretório local, mas não sei como informar o apt-get disso. Alguma ideia?
ATUALIZAÇÃO : Encontrei uma resposta que quase funciona em https://askubuntu.com/a/350/23678 . O problema chroot
é que ele requer sudo. O problema apt-get source
é que não sei resolver dependências. Devo dizer, chroot
parece muito atraente. Existe um comando equivalente que não exija sudo?
sudo
e em um diretório que não seja do sistema.Respostas:
Isso geralmente não é possível, porque você mexeria no sistema de dependências do apt.
Existem duas soluções:
Instale o pacote de origem, mude para o diretório de origem, configure e instale o pacote, independentemente dos sistemas de empacotamento manualmente, em um diretório de sua escolha.
Isso não precisa de raiz, baixa a fonte do pacote, descompacta-a em um diretório dentro do diretório atual. Você pode então mudar para esse diretório, fazer modificações na fonte, configurar a instalação para outro destino etc.
A configuração para qual diretório de instalação os programas devem ir depende, no entanto, do programa específico. Muitos programas usam o
./configure --prefix localdir
para direcionar a instalação ao localdir; mas esse nem sempre é o caso.Crie um ambiente chroot no qual você instalará os pacotes:
Agora você criou uma instalação fictícia no diretório myfancyinstall /
Você pode usar o apt-get install dentro do compartimento chroot para instalar o que quiser.
fonte
apt-get source
sem--compile
parece suprimir o aviso sobre dependências não satisfeitas (permitindo-me para resolvê-los eu mesmo)ar vx mypackage.deb
. Em seguida, analise o conteúdo do pacote e descubra como instalá-lo manualmente.usando um shell bash e adquirindo o arquivo "package.deb" (assumindo que o nome do pacote seja "package"), você pode executar o seguinte comando para realizar o que deseja - instalar o pacote para que seu diretório pessoal seja tratado da mesma maneira "/ "seria tratado em uma instalação normal.
Este é o comando:
Você pode enfrentar alguns erros, como falta de $ HOME / var / lib / dpkg / lock, então crie todos os arquivos ausentes que você obterá com os erros e a instalação deverá funcionar sem o sudo.
observe que se "apt-get download" não funcionar, você pode tentar "apt download" ou "apitutde download package".
se nenhum dos métodos funcionar, basta baixar o pacote manualmente em http://packages.ubuntu.com/
outro método seria executar o comando chroot com o parâmetro $ HOME e, em seguida, instalar da mesma maneira como acima apenas sem --root = $ HOME. esse comando levaria você a um shell em que "/" é seu $ HOME atual. para retornar ao modo normal, não se esqueça de "sair"
boa sorte.
fonte
Se você estiver em um host da Web compartilhado com
ssh
acesso, masapt-get
sem raiz, etc. ou um sistema restrito da mesma forma, o seguinte poderá funcionar para você. Funcionou para mim em um sistema ondeuname -a
retornava algo comoSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux
fonte