52 votes

Existe-t-il un moyen de faire en sorte qu'APT installe des paquets dans mon répertoire personnel ?

Existe-t-il un moyen d'obtenir APT pour installer des paquets dans mon répertoire personnel ?

Je ne veux pas apporter de modifications à l'ensemble du système.

Sinon, existe-t-il des gestionnaires de paquets linux basés sur le répertoire personnel ?

2voto

niutech Points 101

Vous pouvez utiliser fausse racine - Jetez un coup d'œil à la démo sur leur site web.

1voto

shabunc Points 606

GoboLinux sans racine peut faire exactement ce que vous demandez : un gestionnaire de paquets, sans privilèges élevés, dans votre propre répertoire personnel. J'espère que vous savez ce que vous faites ; rootless n'est pas le mode d'installation de Gobo le mieux maintenu, et lorsque je l'ai utilisé il y a quelques années, il a nécessité quelques ajustements car le script d'installation était un peu dépassé par rapport à d'autres changements de Gobo.

Il y a aussi klik qui repackage un certain nombre de .deb peut installer des paquets dans votre répertoire personnel, et ne nécessite pas de privilèges root pour fonctionner... mais l'installation initiale nécessite root.

1voto

mblsha Points 305

Il y a très peu de cas où vous auriez besoin d'installer des paquets dans votre dossier personnel.

Cependant, vous pouvez compiler et installer des logiciels sur votre machine locale. Il suffit de décompresser, puis de configurer avec ./configure --prefix=$HOME/local ou un autre répertoire. Vous pouvez alors make y make install comme d'habitude. Cela compilera et installera ce programme dans ~/local/ par exemple, le programme que vous exécutez sera en ~/local/bin/programmname .

1voto

Anthony K Points 1021

En général, je consulte les sources et je vérifie un fichier comme "INSTALL". En général, il y a des instructions pour faire ./configure --prefix=somedir . Il faut ensuite ajouter somedir/bin sur votre chemin.

1voto

Martin Pecka Points 135

J'ai une solution que j'ai utilisée avec succès pour installer une GRANDE collection de paquets de logiciels coopératifs sur le serveur Debian d'une école, où je n'ai aucun accès root (même pas pour installer un autre gestionnaire de paquets). Cette solution n'utilise pas deboostrap ni aucun gestionnaire de paquets.

La méthode est en partie manuelle, mais j'ai fait de mon mieux pour la rendre pratique.

Il utilise ce script que j'ai appelé install (n'oubliez pas de chmod +x il) :

#!/bin/bash

# PREFIX is the installation root, i.e. a directory you have write access to
PREFIX=$HOME

# unpack the archive to $PREFIX
ar p "$1" data.tar.xz | tar xJ -C $PREFIX

# go through all unpacked text files and search 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 binary file $file unmodified"
    fi
done

En général, je télécharge d'abord un fichier deb en utilisant apt-get download package_name . Ensuite, je lance ./install package_name_blabla.deb et décider manuellement de chaque occurrence de /usr dans les fichiers décompressés, s'il doit être remplacé par $PREFIX/usr ou non.

Cette décision dépend entièrement des paquets qui sont installés par le système et de ceux qui sont installés par cette méthode. Habituellement, par exemple, les fichiers pkg-config ont besoin de cette substitution, alors que les lignes shebang comme #!/usr/bin/perl ne pas le faire. La règle générale est que le chemin résultant doit pointer vers un fichier existant.

Avec des paquets installés de cette manière, vous devez évidemment informer les autres programmes de leur existence. Cela peut être réalisé en ajoutant les valeurs correctes à LD_LIBRARY_PATH , PATH , PYTHONPATH , PKG_CONFIG_PATH , CMAKE_MODULES_PATH , CMAKE_PREFIX_PATH etc.

Cette approche comporte une mise en garde : les dépendances ne sont pas téléchargées/installées automatiquement ; vous devez en assurer le suivi manuellement.

De plus, APT ne connaît pas ces paquets, et les affichera toujours comme manquants. Mais c'est logique - qui voudrait installer une application pour l'ensemble du système qui dépend de l'installation d'un utilisateur.

Si vous souhaitez désinstaller un programme, vous pouvez lister le contenu de l'archive deb en utilisant ar p "$1" data.tar.xz | tar tJ puis supprimez tous ces fichiers de la base de données PREFIX .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X