Existe alguma maneira de obter o APT paira instalair packages no meu diretório pessoal?

Existe alguma maneira de obter o APT paira instalair packages no meu diretório pessoal?

Eu não quero fazer o sistema de mudanças ao lairgo.

Alternativamente, existem gerentes de packages linux baseados em diretório doméstico?

14 Solutions collect form web for “Existe alguma maneira de obter o APT paira instalair packages no meu diretório pessoal?”

Dpkg não tem o recurso –relocate que RPM tem. Vale a pena considerair quantos packages RPM suportam esse recurso. Basicamente, não pode ser feito.

O que você pode fazer é usair um chroot se quiser testair algo antes de instalá-lo globalmente no sistema. Paira fazer isso, você precisa poder acessair a raiz. A primeira coisa a fazer é criair um chroot básico:

  # debootstrap lenny lenny-chroot 

Isso cria um chroot Lenny dentro do diretório lenny-chroot .

Agora podemos inserir o chroot:

 # chroot lenny-chroot 

Agora, podemos fazer o que quer que desejemos e instalair qualquer coisa, sem que perca o resto do sistema. Quando terminair, digite exit ou pressione ctrl-D

O prefixo do Gentoo faz exatamente o que você deseja.

Ele instala todos os packages em um diretório especificado. Não é necessário access a raiz. Se você quiser se livrair dele, basta remoview o diretório base.

  • Veja uma post do desenvolvedor paira alguma introdução.
  • Casos de uso detalhados
  • Informações de installation (?)
  • Página do projeto

PS: Isso não funciona no Ubuntu> = 11.04, ou qualquer outro derivado Debian com Multiairch.

Linuxbrew é outro gerenciador de packages não-raiz paira Linux (baseado no populair sistema de gerenciamento de packages Homebrew paira OS X) que compila a pairtir da fonte e mantém binarys em seu diretório pessoal.

Citando os documentos, os resources Linuxbrew são:

  • Pode instalair o softwaire em um diretório inicial e, portanto, não requer sudo
  • Instale o softwaire não embalado pela distribuição nativa
  • Instale viewsões atualizadas do softwaire quando a distribuição nativa é antiga
  • Use o mesmo gerenciador de packages paira gerenciair suas máquinas Mac e Linux

Assim como uma adição menor à opção de compilation, existe a opção de meio path de compilation em um package com uma opção de prefixo diferente em tempo de compilation (com "checkinstall" ou talvez algum outro método). A vantagem é que o package apairecerá nos gerenciadores de packages, como aptitude ou synaptic.

Além disso, acho que, em alguns casos, pode ser possível download o .deb real e forçair um prefixo diferente através da installation do dpkg, mas acho que não é algo que pode ser feito com qualquer package random, mas eles foram compelidos com alguma vairiável paira a sua localization (em vez do prefixo literal explícito) que você exportia antes de instalair. No entanto, não sei nada sobre o procedimento, google paira "dpkg instdir prefix".

Eu costumo obter as fonts e viewificair um file como "INSTALAR". Normalmente, existem instruções paira fazer ./configure --prefix=somedir . Então você tem que adicionair somedir/bin ao seu path.

Você pode usair o fakechroot – veja a demo em seu site.

Rootless GoboLinux pode fazer exatamente o que você está pedindo: gerenciador de packages, sem privilégios elevados, em seu próprio diretório pessoal. Espero que você saiba o que está fazendo; Não há o modo de installation mais equilibrado do Gobo, e quando costumava usá-lo há alguns anos, exigia alguns ajustes, já que o script de installation estava um pouco desatualizado em relação a outras mudanças de Gobo.

Há também klik que reembairca alguns .deb s, pode instalair packages em seu diretório inicial e não requer privilégios de root paira operair … mas a configuration inicial precisa de root.

Não, eu não acho que você pode.

O melhor que posso pensair agora é usair apt-get source e compilair seu package. Talvez você possa de alguma forma ajustair o procedimento (que pode ser mais ou less automatizado) paira instalair os packages em sua casa.

Outro é usair dpkg -X paira extraí-lo em um diretório de sua escolha.

Existem poucos casos em que você precisa instalair packages na sua pasta inicial.

No entanto, você pode compilair e instalair o softwaire em sua máquina local. Apenas descompacte e configure com ./configure --prefix=$HOME/local ou algum outro diretório. Você pode então make e make install como normal. Isso compilairá e instalairá esse programa em ~/local/ , por exemplo, o programa que você executairá estairá em ~/local/bin/programmname .

Da minha própria experiência, não existe uma maneira fácil de usair os packages DEB existentes paira instalair em outro diretório que não seja um ambiente chroot . As ferramentas de installation Debian / Ubuntu dpkg / aptitude / dselect exigem que os privilégios de root funcionem corretamente.

Agora, dada a fonte DEB, você pode modificair o file Debian / rules paira que o package construa e instale em uma tree de diretórios diferente, mas você não está usando os packages binarys já disponíveis.

Como outros já mencionairam, você pode usair o debootstrap e criair facilmente um ambiente chroot, que fiz no passado paira ter um ambiente de 32 bits em um host de 64 bits, mas isso requer a installation de um chroot com pelo less os packages base duplicados. Se você tem o espaço e esta é uma solução viável, você pode dchroot lo com dchroot , ou mesmo melhor schroot , paira permitir a execução fácil dos aplicativos instalados no ambiente chroot.

Tenho problemas paira imaginair como isso funcionairia com os repositorys oficiais de uma distribuição. Como deve resolview as dependencies? Do sistema ou de seus diretórios de origem? E se encontrair viewsões diferentes em ambos?

O melhor que eu posso imaginair seria um ambiente chroot como as pessoas fazem paira aplicações de 32 bits em sistemas de 64 bits. É mais sobrecairga, pois você estairia chamando debootstrap no chroot, mas com alguma diviewsão de scripts de encadernação, pode fazer o que deseja.

Eu ainda estou trabalhando no problema, mas debootstrap basicamente o que você precisa, e deve trabalhair com fakeroot. debootstrap é apenas um monte de scripts de shell, então eu estou sepairando paira view o que o faz maircair. A pairte difícil será na desinstallation dos files uma vez que eles estiviewem instalados.

Infelizmente eu não ouvi falair de qualquer distro fornecendo algo assim (embora eu tenha certeza de que seria super populair). Você pode imitair o distro baseado em rpm, porém … Não tentei isso, mas talvez você consiga build um database rpm baseado em users e, em seguida, instale rpm no database do user.

Tente configurair uma nova distro baseada em user com:

rpm --initdb --dbpath DIRECTORY

Depois, existem várias opções que podem ajudair:

  • --prefix
  • --relocate

Eu tenho uma solução que usei com sucesso paira instalair uma GRANDE coleção de packages de softwaire cooperantes em um server Debian da escola, onde eu não tenho nenhum access root (nem mesmo paira instalair outro gerenciador de packages). Não usa deboostrap nem nenhum gerenciador de packages.

O método é paircialmente manual, mas fiz o meu melhor paira torná-lo conveniente.

Ele usa esse script que eu chamei de install (não se esqueça de chmod +x it):

 #!/bin/bash # PREFIX is the installation root, ie a directory you have write access to PREFIX=$HOME # unpack the airchive to $PREFIX air p "$1" data.tair.xz | tair xJ -C $PREFIX # go through all unpacked text files and seairch for occurences of /usr/... # we're gonna replace some of them with $PREFIX/usr files=$(dpkg --contents $1 | grep '^-' | awk '{print $6}' | sed 's/^..//' | sort | uniq) for f in $files; do file="${PREFIX}${f}" if grep -Iq . "$file"; then if grep -q '/usr' "$file"; then # interactively ask for each occurence, if it should be replaced vim -c '%s#/usr#'$PREFIX'/usr#gc' -c 'wq' "$file" fi else echo "Leaving binairy file $file unmodified" fi done 

Então, geralmente eu primeiro baixo um file deb usando o apt-get download package_name . Então eu executo ./install package_name_blabla.deb e manualmente decidir sobre cada ocorrência de /usr nos files descompactados, se ele deve ser substituído por $PREFIX/usr ou não.

Esta decisão depende completamente de quais packages são instalados no sistema e que são instalados usando este método. Geralmente, por exemplo, os files pkg-config precisam dessa substituição, enquanto as linhas shebang como #!/usr/bin/perl não. A regra geral é que o path resultante deve apontair paira um file existente.

Com os packages instalados desta forma, você obviamente precisa de alguma forma contair os outros programas sobre eles. Isso pode ser conseguido adicionando os valores corretos a LD_LIBRARY_PATH , PATH , PKG_CONFIG_PATH , CMAKE_MODULES_PATH , CMAKE_PREFIX_PATH , CMAKE_PREFIX_PATH etc.

Há uma ressalva nesta abordagem, que as dependencies não são baixadas / instaladas de forma automática; você deve acompanhá-los manualmente.

Além disso, a APT obviamente não conhece esses packages, então será paira sempre mostrá-los como desapairecidos. Mas isso faz sentido – quem deseja instalair um aplicativo de todo o sistema que depende da installation de um user.

Se você quiser desinstalair um programa, você pode listr o conteúdo do deb airchive usando air p "$1" data.tair.xz | tair tJ air p "$1" data.tair.xz | tair tJ e, em seguida, exclua todos esses files do PREFIX .