web-dev-qa-db-fra.com

Installation de packages dans le répertoire local?

J'aimerais installer des progiciels similaires à apt-get install <foo> mais:

  1. Sans Sudo, et
  2. Dans un répertoire local

Le but de cet exercice est d’isoler les versions indépendantes de mon serveur intégration continue .

Cela ne me dérange pas de compiler à partir des sources, si c'est ce qu'il faut, mais je préférerais évidemment l'approche la plus simple possible. J'ai essayé apt-get source --compile <foo> comme mentionné ici mais je ne peux pas le faire fonctionner pour des paquets comme autoconf. Je reçois l'erreur suivante:

dpkg-checkbuilddeps: Unmet build dependencies: help2man

Help2man a été compilé dans un répertoire local, mais je ne sais pas comment en informer apt-get. Des idées?

UPDATE: J'ai trouvé une réponse qui presque fonctionne à https: // askubuntu.com/a/350/23678 . Le problème avec chroot est qu’il nécessite Sudo. Le problème avec apt-get source est que je ne sais pas comment résoudre les dépendances. Je dois dire que chroot a l'air très attrayant. Existe-t-il une commande équivalente qui ne nécessite pas sudo?

36
Gili

En général, cela n’est pas faisable, car vous fouilleriez avec le système de dépendances d’apt.

Il y a deux solutions:

  1. Installez le package source, accédez au répertoire source, configurez-le et installez-le manuellement, quel que soit le système de conditionnement, dans un répertoire de votre choix.

    apt-get source <package>
    

    Cela n’a pas besoin de root, télécharge la source du paquet, le décompresse dans un répertoire du répertoire en cours. Vous pouvez ensuite accéder à ce répertoire, apporter des modifications à la source, configurer l'installation sur une autre cible, etc.

    La configuration du répertoire d'installation des programmes dépend toutefois du programme en question. De nombreux programmes utilisent le ./configure --prefix localdir pour cibler l’installation sur localdir; mais ce n'est de loin pas toujours le cas.

  2. Créez un environnement chroot dans lequel vous installerez les packages:

    debootstrap precise myfancyinstall
    

    Vous venez de créer une installation factice dans le répertoire myfancyinstall /

    chroot myfancyinstall
    

    Vous pouvez utiliser apt-get install dans la cage de chroot pour installer ce que vous voulez.

20
January

en utilisant un shell bash et en obtenant le fichier "package.deb" (en supposant que le nom du paquet est "package"), vous pouvez exécuter la commande suivante pour accomplir ce que vous voulez - installer le paquet de sorte que votre répertoire personnel soit traité de la même manière "/ "serait traité dans une installation normale.

C'est la commande:

apt-get download package; dpkg -i --force-not-root --root=$HOME package.deb

Vous pourriez être confronté à des erreurs, telles que $ HOME/var/lib/dpkg/lock est manquant; il vous suffit donc de créer tous les fichiers manquants que vous obtiendrez des erreurs. L'installation devrait alors fonctionner sans Sudo.

notez que si "apt-get download" ne fonctionne pas, vous pouvez essayer "apt download" ou "apitutde download package".

si aucune des méthodes ne fonctionne, vous pouvez simplement télécharger le package manuellement à partir de http://packages.ubuntu.com/

une autre méthode consisterait à exécuter la commande chroot avec le paramètre $ HOME, puis à l’installer de la même manière que ci-dessus, mais sans --root = $ HOME. cette commande vous amènerait dans un shell où "/" est votre $ HOME actuel. pour revenir en mode normal, n'oubliez pas de "quitter"

bonne chance.

14
user172681

Si vous êtes sur un hébergeur Web partagé avec un accès ssh mais pas apt-get pas de racine, etc. ou un système similaire restreint, les éléments suivants peuvent fonctionner pour vous. Cela a fonctionné pour moi sur un système où uname -a a retourné quelque chose comme SMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux

# examples tried on a shared hoster with ssh access but no apt-get no root etc.
# http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_AMD64.deb
# https://github.com/dvorka/hstr/releases/download/1.25/hstr_1.25-1_AMD64.deb

debURL="http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_AMD64.deb"
# get the filename only, remove all till last slash "/"
# see http://wiki.bash-hackers.org/syntax/pe#substring_removal
debFile=${debURL##*/}
# change to your desired directory for installation/unpacking; here: $HOME
cd $HOME
# get the .deb file (no dependencies checked or resolved here)
curl -OL $debURL 
# unpack only the data part from the .deb file
# see https://en.wikipedia.org/wiki/Deb_%28file_format%29
ar p $debFile data.tar.xz | tar xJv --strip-components=2 -f - 
rm -v $debFile # clean up
echo "Done unpacking $debFile into $(pwd)"
0
iolsmit