Como posso instalar um pacote sem acesso root?

126

Não tenho acesso root nesta máquina.

Gostaria de saber se existe uma maneira de baixar pacotes do Ubuntu e instalá-los como não raiz?

Provavelmente em minha ~/binou ~/usr/shareou algo parecido? Isso funcionaria?

Weboide
fonte
1
Felizmente, eles o apoiarão em breve.
Domi
4
Você pode usar aplicativos portáteis para linux: sem instalação, sem raiz necessária. Encontre-o em appimage.org . Até Linus Torvalds gosta. Isso é estranho, porque Linus nunca gosta de nada.
Ipse lute
Sugiro tentar fakechroot .
Robert Pollak
Uma combinação dpk -xe mvfuncionou para mim. Ou, se ainda dpknão estiver disponível, are a tubulação / combinação com tarfuncionou para mim em sistemas muito restritos, veja aqui
iolsmit
Relacionado em Unix e Linux : Gerenciadores de Pacotes Não Raiz
Eliah Kagan

Respostas:

107

O Apt não o suporta diretamente, mas existem maneiras de fazê-lo.

Uma é usar schrootpara criar um chroot não raiz. Esse é um processo um pouco complicado , mas você deve encontrar ajuda da comunidade para tantos desenvolvedores que configuram ambientes chroot para compilar código.

A segunda maneira que conheço é instalar a partir de um pacote .deb. Você pode fazer o download disso em um site ou, se estiver nos repositórios do Ubuntu, pode fazer o download.

apt-get download package

Substitua packagepelo nome do pacote

Depois de ter seu arquivo deb chamado dpkgdiretamente da linha de comando. O exemplo a seguir instalará o package.deb no diretório inicial.

dpkg -i package.deb --force-not-root --root=$HOME 

A desvantagem de usar o dpkg assim é que as mensagens de erro provavelmente serão enigmáticas; O dpkg não resolve dependências automaticamente nem cria a estrutura de diretórios que espera.

Por fim, você pode usar o apt-get sourcecomando para buscar a fonte do pacote e configurá-lo para instalar localmente. Normalmente, isso se parece com:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

A desvantagem dessa abordagem é que você precisa do ambiente de desenvolvimento disponível para que essa abordagem funcione e você pode se compilar dezenas de pacotes para resolver todas as dependências.

EDITAR:

Como dpkg -inão funciona (ver comentários), sugiro esta alternativa:

dpkg -x package.deb dir

Isso extrairá o pacote .deb para dir. Em seguida, você pode exportar o CAMINHO onde está o binário. Desde que todas as dependências do binário estejam instaladas, ele deve funcionar normalmente.

jbowtie
fonte
1
Se você possui acesso root, mas simplesmente não deseja instalar um pacote específico globalmente, pode sudo apt-get build-dep packageinstalar tudo o que é necessário para criar um pacote (depois de obter sua fonte apt-get source).
Vladimir Panteleev
19
Esta resposta foi escrita em 2010. Houve alguma mudança em como isso é feito desde então?
becko 16/09/14
36
Mesmo com --force-not-root, recebo "dpkg: error: a operação solicitada requer privilégios de superusuário"
Clément
10
Pessoas --force-not-root --root=$HOMEou variações não funcionarão. Pacotes binários Debian não foram projetados para serem instalados no diretório home, período. Ou, em outras palavras, "O exemplo a seguir instalará o package.deb no seu diretório pessoal." Não, não vai.
Faheem Mitha
1
Infelizmente isso não vai funcionar. Eu tentei #--force-not-root --root=/your/custom/path
226
16

Presumo que você deseja instalar o jedit . Primeiro você precisa encontrar o pacote e fazer o download. Eu apenas pego o arquivo deb de algum espelho e abro um console / terminal:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Cria um novo diretório tmpe muda para ele.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Baixar pacote
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debou, fácil de digitar, ar x *.deb- extrai o conteúdo do arquivo
  4. tar xvzf data.tar.gz- o arquivo data.tar.gztem todo o material necessário para executar o software
  5. usr/bin/jedit abre o editor
  6. feito :-)

Você pode mover os arquivos para algum ponto do diretório inicial e executá-los a partir daí.

qbi
fonte
11
Observe que os scripts de pré e pós-instalação não são executados; você também precisará resolver quaisquer dependências ou caminhos. Mas em uma instalação padrão, isso é suficiente para muitos aplicativos de desktop.
jbowtie
Você também pode baixar o pacote sem procurá-lo, basta fazer apt-get download (ver outra resposta)
lib
Eu acredito que seu link está quebrado.
Winnemucca
9

Eu escrevi um programa chamado JuJu que basicamente permite ter uma distribuição linux realmente minúscula (contendo apenas o gerenciador de pacotes) dentro do diretório $ HOME / .juju.

Ele permite que seu sistema personalizado dentro do diretório inicial seja acessível via proot e, portanto, você pode instalar qualquer pacote sem privilégios de root. Ele funcionará corretamente em todas as principais distribuições do Linux, a única limitação é que o JuJu pode ser executado no kernel do Linux com a versão mínima recomendada 2.6.32.

Por exemplo, depois de instalar o JuJu para instalar o jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
user967489
fonte
Isso funcionará perfeitamente no Ubuntu, certo?
Seth
Sim, se a versão do kernel do linux do ubuntu for maior ou igual a 2.6.32, ela funcionará.
user967489
2
No começo eu pensei que você estava falando sobre isso . O segundo j maiúsculo faz a diferença.
Kon psych
1
A questão era se poderíamos instalar o pacote Ubuntu. Com o junest, só poderemos instalar o pacote ArchLinux e NÃO um pacote Ubuntu. Por exemplo, se o mesmo pacote não estiver disponível para o ArchLinux, isso não ajudará. Dito isto, obrigado por Junest.
22916 Kiran