2010-01-09 15 views
10

J'ai installé Perl de la source dans/usr/local et ajusté mon chemin en conséquence, à la suite brian d foy's suggestion here.Comment puis-je éviter le sudo-ing lors de l'installation de modules Perl avec 'cpan'?

Je suis sûr que je manque quelque chose, mais, maintenant, je suis en train d'installer des trucs avec les « CPAN 'command et il échoue parce qu'il ne peut pas écrire dans/usr/local. Je dois utiliser sudo, ce qui me semble faux. Est-ce que CPAN devrait aller à un autre endroit? Est-ce normal d'utiliser sudo?

Répondre

9

L'arbre /usr/local est protégé. Il est parfaitement normal d'utiliser sudo pour y installer un logiciel.

L'installation dans un emplacement de bibliothèque distinct est une question fréquemment posée. Voir "How do I keep my own module/library directory?" à la section 8.

extrait clé:

Vous pouvez définir dans votre configuration CPAN.pm si les modules installent automatiquement dans votre répertoire de bibliothèque privée lorsque vous utilisez le shell CPAN.pm:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

Pour les distributions basées sur Build.PL, utilisez l'option --install_base:

perl Build.PL --install_base /mydir/perl 

Vous pouvez configurer CPAN.pm utiliser automatiquement cette option aussi:

% cpan 
cpan> o conf mbuild_arg "--install_base /mydir/perl" 
cpan> o conf commit 
+1

Je pense qu'il le fait déjà. Le conseil dans la FAQ est insuffisant pour cela. Il y a une commande mbuild_install_build_command et une option make_install_make_command où vous pouvez définir sudo comme une commande à utiliser dans l'étape d'installation. –

11

Si cela vous dérange vraiment utiliser sudo, vous pouvez utiliser local::lib et installer les modules dans votre répertoire personnel - où vous n'avez pas besoin privilèges de super-utilisateur.

Cela dit, cela ne devrait pas vous déranger pour utiliser sudo. Il n'y a rien de mal à cela. Comme le dit Gbacon, vous avez besoin si vous voulez installer dans /usr/local parce /usr/local est partagée par tous utilisateurs sur le système (et donc ses autorisations reflètent que):

 
    telemachus ~ $ ls -ld /usr/local/ 
    drwxr-xr-x 17 root wheel 578 Jan 8 20:00 /usr/local/ 
+1

Le problème avec local :: lib est de maintenir des perls distincts en même temps. Si vous voulez isoler complètement les installations comme je le suggère, vous ne voulez pas installer les modules pour les différents perls dans le même répertoire. –

9

Le /usr/ répertoire local ne devrait pas être inscriptible par un utilisateur normal, mais l'installation d'Unix a beaucoup de dispositifs pour manipuler ceci.

Dans mon conseil, je suggère la mise en place /usr/local/Perls. Vous pouvez donner à ce répertoire toutes les autorisations que vous voulez. N'appliquez pas d'autorisations à plus de répertoires que nécessaire.

Je propose la mise en place d'un groupe perl, vous ajouter à ce groupe, et de faire le inscriptible groupe répertoires bibliothèque Perl. Une fois l'installation terminée, vous n'avez pas besoin de sudo parce que vous avez des permissions de groupe. Au-delà, vous pouvez ajuster votre configuration CPAN.pm pour utiliser sudo pendant les phases d'installation. Consultez les commandes make_install_make_command et mbuild_install_build_command dans la documentation. Recherchez simplement "sudo", et vous les trouverez.

Bonne chance, :)

6

Dans votre shell CPAN, le configurer pour exécuter les make et build étapes sudo:

o conf make_install_make_command 'sudo make' 
o conf mbuild_install_build_command 'sudo ./Build' 
o conf commit 
quit 

(je trouve ces here - Je ne suis pas gourou CPAN