J'aimerais installer des progiciels similaires à apt-get install <foo>
mais:
Sudo
, etLe 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?
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:
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.
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.
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.
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)"