C'est probablement une question stupide, mais j'ai récemment réalisé que je n'ai aucune idée pourquoi il n'y a pas de fonctionnalité mono-utilisateur avec apt-get.
Des réponses que je ne cherche pas:
- Msgstr "C'est parce qu'apt écrit dans les répertoires au niveau du système". C'est le niveau de la surface pourquoi, mais je cherche un niveau plus profond. Y a-t-il quelque chose qui bloque fondamentalement un environnement mono-utilisateur (à la pip + virtualenv)?
- "Vous pouvez simplement construire à partir de la source". Il s'agit d'une solution de contournement, mais ne répond pas à ma question. Je ne veux pas résoudre un problème à court terme et j'ai quand même un accès root sur toutes mes machines.
Réponses:
Pas toujours. Vous pouvez parfaitement l'utiliser
apt-get
sanssudo
. Il y a des cas où vous n'en avez pas du tout besoinsudo
, comme utiliserapt-get download
qui télécharge un paquet dans votre répertoire actuel ,apt-get source
qui télécharge les fichiers sources debian dans votre répertoire actuel,changelog
qui télécharge et imprime le journal des modifications d'un paquet donné, et toute commande qui a le--simulate
/--dry-run
/--no-act
(dans le cas oùinstall
vous en avez besoin également--no-download
).En effet, ces actions / commandes ne nécessitent pas d'écrire des répertoires système.
Maintenant, pourquoi a-t-on
apt-get
besoinsudo
? En fait, ce n'est pas le cas. Vous pouvez abandonner apt-get, télécharger un package avecwget
et utiliserdpkg --extract
et extraire le package dans le répertoire de votre choix. Il y a aussi--instdir
ce qui devrait fonctionner pour le paquet binaire uniquement.Maintenant, pourquoi ce n'est pas la valeur par défaut? Parce que c'est une douleur. Pour faire ce que vous voulez, nous aurions besoin de reconditionner chaque paquet deux fois, un pour la bonne façon et un autre pour faire ce que vous voulez. Lors de la construction, les binaires doivent normalement savoir où se trouvent les fichiers et les bibliothèques dont ils ont besoin (dans certains cas, ils sont codés en dur lors de la compilation).
Maintenant, que pouvez-vous faire à la place? Il suffit de chrooter un environnement à la virtualenv, où vous pouvez installer des packages sans root.
Résumé, ce n'est pas la façon dont apt-get était censé être utilisé, et je ne connais pas d'autre gestionnaire de paquets similaire à apt-get qui vous permette de le faire. À la fin de la journée,
apt-get
c'est juste un frontal pour dpkg qui pourrait faire une partie de cela.la source
Les informations contenues dans le package lui-même déterminent l'emplacement d'installation des fichiers. Vous devez donc à la
sudo
fois écrire dans/
et modifier la base de données du package.Lorsque vous installez des packages, vous installez des fichiers binaires précompilés et des fichiers de configuration et de méta et des scripts associés qui sont des parties essentielles du package. Ces scripts et fichiers de configuration sont étroitement liés aux dépendances et au reste du système. Vous ne voudriez pas les changer à la légère à moins de savoir exactement ce que vous faites.
Si vous êtes sur un système, par exemple au travail, où vous n'avez pas
sudo
accès, vous pouvez compiler à partir de la source et définir le répertoire d'installation sur votre domicile. Ensuite, ce n'est pas nécessairesudo
. Lorsque vous installez à partir de la source, vous ne modifiez généralement pas la base de données du package.la source
Ce n'est pas une question stupide.
Niveaux de privilège dans un système d'exploitation
Ubuntu - et en fait tout système d'exploitation moderne - a le concept de différents niveaux de privilèges pour différents logiciels. Les logiciels lancés par les utilisateurs s'exécutent généralement sous un niveau de privilège basé sur l'utilisateur qui, pour des raisons de sécurité, n'a pas l'accès requis pour modifier le système - il ne peut modifier que les fichiers appartenant à cet utilisateur.
Afin d'effectuer toute modification du système d'exploitation qui pourrait avoir un impact sur le système dans son ensemble, plutôt que seulement sur les fichiers de l'utilisateur, un niveau de privilège plus élevé est requis, ce qui sous Linux est appelé privilèges de "superutilisateur" (ou couramment appelé "root"). Ce niveau de privilège a un accès illimité à l'ensemble du système d'exploitation lui permettant de modifier - ou détruire - tous les fichiers pour tous les utilisateurs.
Le rôle d'apt-get
Lorsque vous installez un logiciel via apt-get, vous installez un logiciel qui sera disponible à l'échelle du système . Autrement dit, le logiciel ne sera pas simplement placé dans le répertoire de base d'un utilisateur pour être exécuté uniquement par cet utilisateur, mais il sera installé dans un répertoire d'application à l'échelle du système (comme dans / usr, / etc, / var, etc.) ) pour être exécuté par tous les utilisateurs. Pour modifier ces répertoires, vous avez besoin des privilèges de superutilisateur. Aucun utilisateur non privilégié ne peut modifier ces répertoires, sinon des logiciels non privilégiés pourraient perturber le système.
Si vous essayez d'installer quelque chose en utilisant apt-get sans donner les privilèges de super-utilisateur apt-get, le premier obstacle qu'il ne parviendra pas à surmonter est d'obtenir un verrou pour écrire dans son propre catalogue de logiciels. Étant un utilitaire à l'échelle du système, apt-get maintient un catalogue de logiciels installés, qui nécessite naturellement des privilèges de superutilisateur pour éditer afin qu'un logiciel non privilégié ne puisse pas jouer avec. Mais même si vous pouviez en quelque sorte surmonter cet obstacle (par exemple, en modifiant les autorisations de fichier), de nombreuses étapes supplémentaires lors de l'installation du logiciel échoueront toujours, car la routine d'installation dépendra de l'écriture dans plusieurs répertoires système.
En utilisant Linux, il est possible d'installer un logiciel sans privilèges de superutilisateur, mais vous devez l'écrire vous-même (par exemple, des scripts shell) ou le compiler vous-même et exécuter directement les exécutables compilés. Il est plus facile de l'installer à l'échelle du système en utilisant apt-get (et d'autres utilitaires basés sur APT comme aptitude, synaptic ou le centre de logiciels Ubuntu) si vous y avez accès.
la source
Pourquoi apt-get s'installe par défaut dans les répertoires / (ou similaires)?
La raison simple est que
apt-get
cela ne décide pas où installer le logiciel. Il est décidé par les développeurs et codé à l'intérieur de l'application elle-même.Puis-je installer dans d'autres répertoires?
Oui, vous pouvez installer dans d'autres répertoires. Pour les logiciels open source, obtenez la source, changez le répertoire d'installation, compilez, compilez et installez-le. Il y a généralement une option dans le
configure
script inclus qui vous permet de spécifier où installer. C'est généralement le cas--prefix
.Mais j'insiste sur l'utilisation d'apt-get. Que faire maintenant?
D'ACCORD. Il existe toujours un moyen de le faire avec apt-get, bien que ce soit trop pour un utilisateur final. Suis les étapes.
$HOME
.sudo apt-get update
.apt-get install package
.C'était trop facile / difficile, est-il possible de sélectionner un répertoire lors de l'installation?
Oui et non.
Oui car c'est possible, certains logiciels utilisent cette méthode, la seule que je connaisse est
Qt5
.Il a un fichier .run qui, une fois exécuté, demande un répertoire d'installation parmi de nombreuses autres entrées.Non car cette méthode n'utilise pas
apt-get
.Puis-je le faire facilement un jour, avec
apt-get
?Je ne pense pas que les développeurs
apt-get
et / ou les développeurs de logiciels seraient intéressés à le faire, mais certains logiciels peuvent être développés qui effectueront automatiquement les étapes de source, de modification, de compilation, de construction et d'installation en ne demandant que le répertoire d'installation.Mon 6ème sens me dit que la commande serait
la source
apt-get
. En outre, de nombreux programmes existants dépendent d'autres programmes et les recherchent dans le répertoire / usr. La mise en œuvre d'une telle fonctionnalité nécessiterait des modifications dans tous les logiciels existants qui ont des dépendances (cela ne va pas par milliers)./opt/package
et chmodez le répertoire à la place.$HOME/opt/
s'ils n'ont pas le privilège requis pour installer des packages dans/opt/
..Parce qu'il édite des fichiers qui sont modifiés afin que vous ne puissiez pas les utiliser. Vous pourriez être en mesure de les modifier afin que vous ne puissiez pas, je ne le recommande pas
la source