Installer des paquets dans un répertoire local?

28

Je voudrais installer des logiciels similaires à apt-get install <foo> mais:

  1. Sans sudo et
  2. Dans un répertoire local

Cet exercice a pour but d’isoler les versions indépendantes de mon serveur intégration continue .

Cela ne me dérange pas de compiler à partir de sources, si c'est ce que ça prend, mais évidemment je préférerais l'approche la plus simple possible. J'ai essayé apt-get source --compile <foo> comme mentionné ici mais je ne peux pas obtenir cela fonctionne pour des paquets comme autoconf. J'ai l'erreur suivante:

dpkg-checkbuilddeps: Unmet build dependencies: help2man

J'ai help2man compilé dans un répertoire local, mais je ne sais pas comment en informer apt-get. Des idées?

MISE À JOUR : J'ai trouvé une réponse presque à lien . 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?

    
posée Gili 27.09.2012 - 16:19
la source

3 réponses

15

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

Il existe deux solutions:

  1. Installez le package source, accédez au répertoire source, configurez et installez le package indépendamment des systèmes de packaging manuellement dans un répertoire de votre choix.

    apt-get source <package>
    

    Cela ne nécessite pas root, télécharge la source du paquet, la 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 ./configure --prefix localdir pour cibler l'installation sur localdir; mais ce n'est pas toujours le cas.

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

    debootstrap precise myfancyinstall
    

    Vous avez maintenant créé une installation factice dans le répertoire myfancyinstall /

    chroot myfancyinstall
    

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

réponse donnée January 27.09.2012 - 16:42
la source
11

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

Ceci est la commande:

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

Vous pourriez rencontrer des erreurs, telles que $ HOME / var / lib / dpkg / lock est manquant il suffit donc de créer tous les fichiers manquants que vous obtiendrez des erreurs, puis l'installation devrait fonctionner sans sudo.

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

Si aucune de ces méthodes ne fonctionne, vous pouvez simplement télécharger le package manuellement à partir de lien

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

bonne chance.

    
réponse donnée user172681 01.04.2014 - 01:55
la source
0

Si vous êtes sur un hébergeur partagé avec ssh access mais pas apt-get no root etc. Cela a fonctionné pour moi sur un système où uname -a a renvoyé 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)"
    
réponse donnée iolsmit 24.07.2018 - 14:18
la source

Lire d'autres questions sur les étiquettes