2009-04-26 5 views
1

Lorsque je suis sur le serveur de mon service, je ne peux pas utiliser des commandes telles que "apt-get install nethack". Je dois construire le nethack à partir de fichiers binaires pour le faire fonctionner, du moins, on m'a dit. Je ne peux pas comprendre la raison. Pourquoi ai-je besoin de construire des choses à partir de binaires? Pourquoi l'utilisation des commandes, telles que "apt-get", est-elle interdite? Pourquoi n'ai-je pas besoin d'un accès root pour construire à partir de binaires?Pourquoi le bâtiment à partir de fichiers binaires ne nécessite pas d'accès root?

+0

Voulez-vous dire "build from source files"? –

+0

Vous avez peut-être raison. J'ai probablement confondu les termes parce que les gens parlent de binaires quand ils veulent vraiment transformer le code lisible (fichiers source?) En binaires (0 et 1). Mon observation peut être erronée. –

Répondre

2

Lorsque vous compilez un programme à partir de la source, vous pouvez lui donner le '--prefix = ~ /'. Cela l'amène à s'installer par rapport à votre propre répertoire personnel (donc les programmes binaires se retrouvent généralement dans '~/bin', les pages man dans '~/man' etc). Cela ne pose aucun problème car vous avez déjà la permission d'écrire ici. D'autre part, Apt-get installe les paquets dans le système de fichiers global ('/ bin /', '/ usr/bin /', etc), ce qui peut avoir un impact sur les autres utilisateurs et donc, à juste titre, nécessiter un accès administratif .

Si vous voulez installer un programme, vous pouvez utiliser la commande

apt-get source app-name 

Ce va fonctionnera même si vous n'êtes pas racine car il extraient que le code source à l'application nom et le mettre dans le répertoire courant, ce qui est plus facile que de devoir traquer la source et il y a une meilleure chance de le faire fonctionner, puisque vous téléchargez la version qui devrait fonctionner sur votre système.

Vous pouvez également installer votre programme pour installer les programmes dont vous avez besoin, car c'est son travail (et si vous en avez besoin, il est probable que le reste de votre équipe le fasse aussi).

+0

+ un grand merci pour la commande :) –

0

Parce que apt-get va installer un système de programme large.

0

Les emplacements dans lesquels apt-get écrit les fichiers installés (/ bin,/usr/bin, ...) sont limités à l'accès root. J'imagine que lorsque vous construisez à partir de la source, vous n'exécutez pas l'étape d'installation du bulid. Vous allez avoir besoin de définir un préfixe pour l'installation de sorte que les paquets finissent quelque part que vous pouvez écrire. This thread parle un peu sur la définition de préfixes pour apt-get et vous aurez probablement envie de mettre votre préfixe à quelque chose comme

~/software/ 

puis ajoutez les répertoires bin résultant à votre PATH.

4

apt-get est une commande au niveau du système qui installe les packages pour tous les utilisateurs.

Si vous téléchargez et compilez, vous ne créez que des "copies" locales des fichiers binaires, pas du système. Si vous avez essayé de terminer le processus d'installation avec make install cela échouerait probablement car vous n'avez pas les privilèges suffisants pour installer le programme pour l'accès de tous les utilisateurs (même raison que vous ne pouvez pas exécuter apt-get install)

+0

Je suis intéressé d'en savoir plus sur les commandes à l'échelle du système. Cela signifie-t-il que les programmes ne peuvent pas utiliser les commandes système? Prenons une autre perspective, est-il possible de construire un programme à partir de fichiers source pour avoir accès à des commandes système? –

+0

+1 pour commencer à comparer les choses locales et les choses au niveau du système. –

+1

Il s'agit d'autorisations de stockage. Lorsque vous "installez" un programme, vous le copiez dans un emplacement accessible par tous les utilisateurs - très probablement inclus dans l'environnement $ PATH par défaut. variable. Seuls les utilisateurs privilégiés peuvent écrire à cet emplacement. – Andy

Questions connexes