2010-01-09 9 views
10

Ich habe Perl von der Quelle in/usr/local installiert, und meinen Pfad entsprechend angepasst, nach brian d foy's suggestion here.Wie kann ich vermeiden, dass bei der Installation von Perl-Modulen mit 'cpan' sudoing wird?

Ich bin sicher, dass ich etwas fehle, aber jetzt versuche ich Sachen mit dem ‚cpan zu installieren 'Befehl und es scheitert, weil es nicht in/usr/local schreiben kann. Ich muss Sudo benutzen, was sich für mich falsch anfühlt. Sollten CPAN-Sachen an einen anderen Ort gehen? Ist es normal, Sudo zu benutzen?

Antwort

9

Der Baum /usr/local ist geschützt. Es ist völlig normal, sudo zu verwenden, um Software dort zu installieren.

Die Installation in einer separaten Bibliothek ist eine häufig gestellte Frage. Siehe "How do I keep my own module/library directory?" in Abschnitt 8

Key Auszug:

Sie können diese Einstellung in Ihrer CPAN.pm Konfiguration so Module automatisch in Ihrem privaten Bibliotheksverzeichnis installieren, wenn Sie den CPAN.pm Shell verwenden:

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

Verwenden Sie für Build.PL -basierte Verteilungen die Option --install_base:

perl Build.PL --install_base /mydir/perl 

Sie können CPAN.pm konfigurieren automatisch auch diese Option zu verwenden:

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

Ich denke, er macht das schon. Der Hinweis in den FAQ reicht hierfür nicht aus. Es gibt einen Befehl mbuild_install_build_command und einen Befehl make_install_make_command, in dem Sie sudo als Befehl für den Installationsschritt festlegen können. –

11

Wenn es stört Sie wirklich sudo zu verwenden, Sie local::lib und installieren Sie Module in Ihrem Home-Verzeichnis verwenden können - wo Sie nicht brauchen, Super-Benutzer-Privilegien.

Das sagte, es sollte Sie nicht stören, sudo zu verwenden. Es ist nichts notwendigerweise falsch damit. Wie Gbacon sagt, müssen Sie es, wenn Sie in /usr/local installieren wollen, weil /usr/local von alle Benutzer auf dem System gemeinsam genutzt wird (und so die Berechtigungen widerspiegeln, dass):

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

Das Problem mit local :: lib besteht darin, verschiedene Perls gleichzeitig zu verwalten. Wenn Sie die Installationen vollständig isolieren möchten, wie ich es vorschlage, möchten Sie die Module für die verschiedenen Perls nicht in demselben Verzeichnis installieren. –

9

Die /usr/local Verzeichnis sollte nicht von einem normalen Benutzer geschrieben werden können, aber das Unix-Setup hat viele Funktionen, um damit umzugehen.

In meinem Rat schlug ich vor, /usr/local/perls einzurichten. Sie können diesem Verzeichnis die gewünschten Berechtigungen geben. Übernehmen Sie keine Berechtigungen für mehr Verzeichnisse, als Sie benötigen.

Ich schlage vor, eine Gruppe einzurichten, sich selbst zu dieser Gruppe hinzuzufügen und die Perl-Bibliotheksverzeichnisgruppe beschreibbar zu machen. Nach der Einrichtung müssen Sie nicht mehr sudo ausführen, da Sie über Gruppenberechtigungen verfügen.

Darüber hinaus können Sie Ihre CPAN.pm-Konfiguration anpassen, um während der Installationsphasen sudo zu verwenden. Überprüfen Sie die Befehle make_install_make_command und mbuild_install_build_command in der Dokumentation. Suchen Sie einfach nach "sudo", und Sie werden sie finden.

Viel Glück :)

6

In Ihrem CPAN-Shell, so konfigurieren, dass die make und build Schritte unter sudo auszuführen:

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

(Ich fand diese here - ich kein CPAN Guru bin .)