it-swarm.dev

Wie kann ich Perl-Module ohne Root-Berechtigungen installieren?

Ich bin auf einer Linux-Maschine, auf der ich keine Root-Berechtigungen habe. Ich möchte einige Pakete über CPAN in mein Home-Verzeichnis installieren, damit ich es per Perl sehen kann.

Ich lief cpan, in dem nach Konfigurationsmöglichkeiten gefragt wurde. Es wurde nach einem Verzeichnis gefragt, in dem ~/Perl "für Benutzer ohne Rootberechtigung" vorgeschlagen wurde. Wenn ich jedoch versuche, ein Paket zu installieren, schlägt es beim make install-Schritt fehl, da ich keinen Schreibzugriff auf /usr/lib/Perl5/whatever habe.

Wie kann ich CPAN so konfigurieren, dass Pakete in meinem Home-Verzeichnis installiert werden können?

36
petersohn

Siehe local :: lib .

Sobald Sie es installiert haben, können Sie Folgendes tun:

Perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

28
Sinan Ünür

In perlfaq8 ist der dokumentierte Weg dokumentiert. Dies ist, was local :: lib für Sie tut.

Es ist auch eine häufig gestellte StackOverflow-Frage:

Kurioserweise wird nichts davon vorgeschlagen, wenn ich Ihren ursprünglichen Fragetitel verwende (was einer der Gründe ist, warum ein guter Titel für das Finden Ihrer Antwort sehr wichtig ist).


Wie behalte ich mein eigenes Modul-/Bibliotheksverzeichnis?

Wenn Sie Module erstellen, teilen Sie Perl mit, wo die Module installiert werden sollen.

Wenn Sie Module für den Eigengebrauch installieren möchten, kann local :: lib der einfachste Weg sein, den Sie von CPAN herunterladen können. Es legt verschiedene Installationseinstellungen für Sie fest und verwendet dieselben Einstellungen in Ihren Programmen.

Wenn Sie mehr Flexibilität wünschen, müssen Sie Ihren CPAN-Client für Ihre spezielle Situation konfigurieren.

Verwenden Sie für Makefile.PL-basierte Distributionen beim Erstellen von Makefiles die Option INSTALL_BASE:

Perl Makefile.PL INSTALL_BASE=/mydir/Perl

Sie können dies in Ihrer CPAN.pm-Konfiguration festlegen, sodass die Module automatisch in Ihrem privaten Bibliotheksverzeichnis installiert werden, wenn Sie die 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 Distributionen die Option --install_base:

Perl Build.PL --install_base /mydir/Perl

Sie können CPAN.pm so konfigurieren, dass auch diese Option automatisch verwendet wird:

% cpan
cpan> o conf mbuild_arg "--install_base /mydir/Perl"
cpan> o conf commit

INSTALL_BASE weist diese Tools an, Ihre Module in/mydir/Perl/lib/Perl5 abzulegen. Siehe Wie füge ich meinem Include-Pfad (@INC) zur Laufzeit ein Verzeichnis hinzu? Weitere Informationen zum Ausführen der neu installierten Module.

Mit INSTALL_BASE gibt es jedoch eine Einschränkung, da sie sich anders als die von älteren Versionen von ExtUtils :: MakeMaker empfohlenen PREFIX- und LIB-Einstellungen verhält. INSTALL_BASE unterstützt nicht die Installation von Modulen für mehrere Perl-Versionen oder verschiedene Architekturen im selben Verzeichnis. Sie sollten überlegen, ob Sie das wirklich wollen, und verwenden Sie die älteren PREFIX- und LIB-Einstellungen. Weitere Informationen finden Sie in der Dokumentation zu ExtUtils :: Makemaker.

25
brian d foy

CPAN Weg

  1. führen Sie den Befehl cpan aus. Wenn Sie kein CPAN konfiguriert haben, tun Sie es zuerst! Andernfalls wird die Eingabeaufforderung cpan angezeigt. In diesem Fall geben Sie look local::lib Ein und Sie erhalten eine neue Shell-Eingabeaufforderung. Führen Sie in dieser neuen Shell den Befehl bootstrap aus, um das Modul zur gleichen Zeit wie im Folgenden zu konfigurieren und zu kompilieren.

    [email protected]:~/.cpan/build/local-lib-1.004003-UyX2wf$ Perl Makefile.PL --bootstrap && make test && make install

  2. Exportieren Sie nun einige Variablen:

    Pfad, in dem local :: lib die Dinge installiert

    echo 'eval $(Perl -I$index.t/Perl5/lib/Perl5 -Mlocal::lib)' >> ~/.bashrc

    Und Perl-Variable, um Benutzereingaben zu vermeiden

    echo 'export Perl_MM_USE_DEFAULT=1' >> ~/.bashrc

  3. Laden Sie nun Ihren bashrc running

    source ~/.bashrc

  4. Versuchen Sie die Installation mit cpan <SOME_VALID_MODULE_NAMESPACE>

Das ist es! Jetzt können Sie Module mit cpan ohne Root-Rechte installieren. Beachten Sie jedoch, dass dies nur für CURRENT USER funktioniert, einschließlich des Root-Benutzers!

cpanminus Weg

Wenn Sie dies installiert haben, verdient Ihr Sys-Administrator ein Bier!

Renn einfach

$ cpanm --local-lib=~/Perl5 local::lib && eval $(Perl -I ~/Perl5/lib/Perl5/ -Mlocal::lib)

Öffnen Sie ein anderes Terminal und führen Sie es aus

$ env |grep Perl

Sie sollten so etwas sehen:

Perl5LIB = $ HOME/Perl5/lib/Perl5 Perl_MB_OPT = - install_base "$ HOME/Perl5"

Perl_LOCAL_LIB_ROOT = $ HOME/Perl5

Perl_MM_OPT = INSTALL_BASE = $ HOME/Perl5

Wenn dies nicht der Fall ist, exportieren Sie Variablen wie folgt:

$ echo "export Perl5LIB=\"$HOME/Perl5/lib/Perl5\"">>~/.bashrc && \ echo "export Perl_MB_OPT=\"--install_base '$HOME/Perl5'\">>~/.bashrc && \ echo "export Perl_LOCAL_LIB_ROOT=$HOME/Perl5">>~/.bashrc

Laden Sie abschließend Ihre bashrc-Datei und versuchen Sie, sie mit Befehlen zu installieren

source ~/.bashrc

und

cpanm <SOME_VALID_MODULE_NAMESPACE>

Fim!

0
Andre Carneiro