Instalando pacotes Debian como usuário não privilegiado

1

Eu tenho um software que gostaria de instalar em uma hierarquia separada abaixo de $HOME/local em uma máquina Ubuntu 16.04.

O software é distribuído como um pacote Debian, e o código-fonte não está disponível (eu ficaria feliz em ter baixado e compilado por mim mesmo).

Eu não tenho (e não deveria ter) sudo acesso na máquina em que estou tentando fazer isso. O software não deve ser instalado em todo o sistema, mas apenas para meu uso pessoal.

Eu tentei

$ dpkg --root="$HOME/local" -i package_x.y.z_x86_64.deb

mas eu recebo

dpkg: error: requested operation requires superuser privilege

Depois de tentar com --force-all e criar todos os arquivos e diretórios necessários para satisfazer dpkg ( local/usr/bin , local/var/dpkg com os subdiretórios info , triggers e updates , juntamente com uma% vazia arquivostatus em local/var/dpkg ), fico preso com

$ dpkg --root=$HOME/local -i --force-all package-x.y.z_x86_64.deb
dpkg: could not open log '/var/log/dpkg.log': Permission denied
(Reading database ... 0 files and directories currently installed.)
Preparing to unpack package_x.y.z_x86_64.deb ...
Unpacking package (1:x.y.z) ...
dpkg: error processing archive package_x.y.z_x86_64.deb (--install):
 error setting ownership of './usr/bin/application': Operation not permitted
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 package_x.y.z_x86_64.deb

Obviamente, ele não está conseguindo chown dos arquivos para os usuários corretos, de acordo com a especificação do pacote.

O próximo passo para mim seria provavelmente ter uma conversa com os administradores nesta máquina para ver se eles poderiam instalar este software para mim, mas eu me pergunto se há algo que eu perdi que teria me permitido ter o meu raiz de instalação do próprio pacote local?

    
por Kusalananda 13.06.2017 / 19:15

2 respostas

4

Não, você não perdeu nada. O melhor que você pode fazer nessas circunstâncias é usar dpkg-deb para extrair o conteúdo do pacote e esperar que eles funcionem:

dpkg-deb -x package_x.y.z_x86_64.deb my-private-root

Isso não executará nenhum dos scripts de mantenedor contidos no pacote; você pode extrair aqueles usando

dpkg-deb -e package_x.y.z_x86_64.deb my-private-control
    
por 13.06.2017 / 19:19
0

Permitir que os usuários instalem software usando o gerenciador de pacotes do sistema, causaria muitos problemas, o que é fácil de perceber é a manutenção de dependências. Embora as dependências do pacote que você deseja instalar estejam satisfeitas hoje, elas podem não ser satisfeitas amanhã quando os administradores de sistemas reais tiverem feito alguma alteração - sua instalação deve impedir o trabalho deles (não são muitos os que acreditarão), caso seu software seja desinstalado ou apenas deixado quebrado?

Os pacotes Debian são apenas ar -arquivos que contêm dois tarballs, então devem ser fáceis de extrair em qualquer sistema unix, mas se você estiver em um Debian (ou um derivado que não o remove) é mais fácil usar dpkg-deb como Stephen sugere em sua resposta. Observe que, além dos scripts do mantenedor não serem executados ao extrair o conteúdo do pacote manualmente, as dependências não são verificadas. É simples verificar as dependências (mas, como as circunstâncias observadas podem mudar), fazer o que os scripts do mantenedor fariam pode ser simples, mas também pode ser difícil. Você precisará ler o roteiro e descobrir o que eles fazem e como fazê-lo em seu ambiente limitado.

    
por 13.06.2017 / 22:34