QuoteERROR: Can't create '/usr/local/bin'
Do not have write permissions on '/usr/local/bin'
QuoteERROR: Can't create '/usr/local/lib64/perl5/5.30.1/Test'
mkdir /usr/local/lib64/perl5: Permission denied at /usr/lib64/perl5/5.30.1/ExtUtils/Install.pm line 489.
2020-02-04T21:07:50 bianca
Wie kann ich mir das CPAN Installationsmodul auf einem shared Hosting personalisieren?
2020-02-04T23:23:33 hajdass Du 1) CPAN-Module installieren oder aktualisieren willst, 2) keine root-Berechtigung hast, 3) deshalb die von Dir benötigten Bibliotheken in Pfaden installieren musst, auf die Du Zugriff hast, und 4) trotzdem das vom Hosting gelieferte Perl benutzen willst/musst.
2020-02-04T23:23:33 hajFür solche Szenarien gibt es local::lib - das wäre mal ein Versuch, ob der Hoster dieses Modul anbietet.
Quoteyyyy@xxxx ~ $ perl -MCPAN -Mlocal::lib
Can't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /etc/perl /usr/local/lib64/perl5/5.30.1/x86_64-linux /usr/local/lib64/perl5/5.30.1 /usr/lib64/perl5/vendor_perl/5.30.1/x86_64-linux /usr/lib64/perl5/vendor_perl/5.30.1 /usr/local/lib64/perl5 /usr/lib64/perl5/vendor_perl /usr/lib64/perl5/5.30.1/x86_64-linux /usr/lib64/perl5/5.30.1).
BEGIN failed--compilation aborted.
2020-02-04T23:23:33 hajEs geht mit local::lib auch dann, wenn's der Hoster nicht hat - dafür gibt es den Abschnitt "Bootstrapping" in der Dokumentation.
2020-02-04T23:23:33 hajBei gaaanz einfachen, Pure-Perl-Modulen wie Test::MockModule kannst Du auch die einzelnen Module an die passenden Stellen kopieren.
2020-02-09T12:57:42 Daximverwende den Abschnitt "Bootstrapping" in der Dokumentation.
2020-02-09T08:59:39 bianca...
B. t. w. Ich hatte mal irgend wo perl -MCPAN -Mlocal::lib -e shell aufgeschnappt und auf Windows nutze ich auch immer perl -MCPAN -e shell. In der Doku von local::lib finde ich den Parameter shell aber gar nicht. Was hat es damit auf sich bzw. wieso steht das nicht in der Doku?
perldoc local::lib...
Now we need to setup the appropriate environment variables, so that Perl starts using our newly generated lib/ directory. If you are using bash or any other Bourne shells, you can add this to your shell startup script this way:
Code: (dl )echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bashrc
perl -I$HOME/perl5/lib/perl5 -Mlocal::lib
2020-02-09T18:18:54 LinuxerDer Aufrufsollte Dir eine Liste ausgeben, mit der verschiedene Umgebungsvariablen definiert werden.Code: (dl )perl -I$HOME/perl5/lib/perl5 -Mlocal::lib
QuoteCan't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /home/sites/abc/users/xyz/perl5/lib/perl5 /etc/perl /usr/local/lib64/perl5/5.30.1/x86_64-linux /usr/local/lib64/perl5/5.30.1 /usr/lib64/perl5/vendor_perl/5.30.1/x86_64-linux /usr/lib64/perl5/vendor_perl/5.30.1 /usr/local/lib64/perl5 /usr/lib64/perl5/vendor_perl /usr/lib64/perl5/5.30.1/x86_64-linux /usr/lib64/perl5/5.30.1).
BEGIN failed--compilation aborted.
1
2
PERL_MB_OPT="--install_base \"/home/haj/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/haj/perl5"; export PERL_MM_OPT;
perldoc local::libAfter writing your shell configuration file, be sure to re-read it to get the changed settings into your current shell's environment. Bourne shells use . ~/.bashrc for this, whereas C shells use source ~/.cshrc.
QuoteA typical way to install local::lib is using what is known as the "bootstrapping" technique. You would do this if your system administrator hasn't already installed local::lib. In this case, you'll need to install local::lib in your home directory.
2020-02-09T18:18:54 LinuxerKontrolle mit export oder set
2020-02-09T18:18:54 LinuxerDas ganze hilft nicht weiter, wenn Du über Dein Profil keinen Zugriff auf make, Compiler (z.B. gcc), etc. hast.
Quoteyyyy@xxxx /home/sites/abc/tmp $ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/9.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-9.2.0-r2/work/gcc-9.2.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/9.2.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.2.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.2.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.2.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/9.2.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 9.2.0-r2 p3' --disable-esp --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-altivec --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libmudflap --disable-libssp --disable-systemtap --enable-vtable-verify --enable-lto --without-isl --enable-default-pie --enable-default-ssp
Thread model: posix
gcc version 9.2.0 (Gentoo 9.2.0-r2 p3)
2020-02-09T18:18:54 LinuxerWenn dem so ist, sollte ein perl -Mlocal::lib -MCPAN -e 'shell' funktionieren und das lokale Verzeichnis benutzt werden können.
Quoteyyyy@xxxx /home/sites/abc/tmp $ perl -Mlocal::lib -MCPAN -e 'shell'
Can't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /etc/perl /usr/local/lib64/perl5/5.30.1/x86_64-linux /usr/local/lib64/perl5/5.30.1 /usr/lib64/perl5/vendor_perl/5.30.1/x86_64-linux /usr/lib64/perl5/vendor_perl/5.30.1 /usr/local/lib64/perl5 /usr/lib64/perl5/vendor_perl /usr/lib64/perl5/5.30.1/x86_64-linux /usr/lib64/perl5/5.30.1).
BEGIN failed--compilation aborted.
2020-02-09T20:41:02 hajDas Verzeichnis /home/sites/abc/users/xyz/perl5/lib/perl5 ist vermutlich das Verzeichnis, in dem Du Deine privaten Module ablegen kannst.
2020-02-09T20:41:02 hajDann wäre das auch das Verzeichnis, das Du für den Bootstrap-Schritt 2 verwenden solltest.
2020-02-09T20:41:02 hajWo liegt Dein $HOME?
Quote/home/sites/abc/users/yyyy
2020-02-09T20:41:02 hajWenn Schritt 3 geklappt hat, dann müsste irgendwo in Deinem Verzeichnisbaum local/lib.pm liegen.
2020-02-09T20:41:02 hajein Resultat mit "local" im Directory davor?
2020-02-10T06:09:48 rostiD heißt: local::lib ist Pure Perl und sollte in your home directory installiert sein. Was somit auch möglich ist.
2020-02-09T20:41:02 hajDazu muss man aber natürlich wissen, welche Startup-Datei das sein könnte.
2020-02-09T20:41:02 hajWas sagen make -v und which make?
Quoteyyyy@xxxx ~ $ make -v
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
yyyy@xxxx ~ $ which make
/usr/bin/make
2020-02-09T20:41:02 hajHast Du Module::Build zur Verfügung?
Quote0.4224
2020-02-09T20:41:02 hajWas für eine Shell verwendest Du?
Quote/bin/bash
2020-02-09T20:41:02 hajWas für ein Betriebssystem / Version ist das?
Quotelinux (Kernel: 4.19.89)
echo 'eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"' >>~/.bashrc
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"
perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib
. ~/.bashrc
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"
use lib '/home/sites/abc/perl5/lib/perl5';
2020-02-12T07:25:36 bianca2020-02-09T20:41:02 hajWas meinst du mit "Directory davor"?ein Resultat mit "local" im Directory davor?
2020-02-12T07:25:36 biancaDu hast die Frage schon beantwortet. Die Shell ist bash, eine passende Startup-Datei ist also .bashrc.2020-02-09T20:41:02 hajKann man das abfragen?Dazu muss man aber natürlich wissen, welche Startup-Datei das sein könnte.
QuoteCan't locate local/lib.pm ...
2020-02-13T18:10:40 biancaDas kommt schon ganz gut hin!Was ich verstanden habe ist, dass die .bashrc wohl eine Art Autostart in der Shell ist.
2020-02-13T18:10:40 biancaWenn die Datei dabei erstellt wurde, dann ist schon eher verdächtig, denn normalerweise liefern die Distributionen eine .bashrc mit aus. Möglicherweise ist das System Deines Providers so konfiguriert, dass keine Startup-Prozeduren laufen. Sowas gibt es. In diesem Fall musst Du das Kommando eben nach dem Login von Hand eintuppern:Ich habe das Kommando auch ausgeführt und die .bashrc wurde auch erstellt.
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"
2020-02-13T18:10:40 biancaAber sie wurde scheinbar nicht ausgeführt nach dem Login, denn die Kontrolle mittels perl -I$HOME/perl5/lib/perl5 -Mlocal::lib wirft weiterhin nurQuoteCan't locate local/lib.pm ...
Habe es im Verzeichnis /home/sites/abc (= mein Root) und /home/sites/abc/users/yyyy (= Startverzeichnis beim SSH Login) probiert. Datei hingelegt, SSH Logout und neuer Login, Kontrolle mit perl -I$HOME/perl5/lib/perl5 -Mlocal::lib und Fehler.
Habe ich was falsch gemacht?
perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib
Quoteund zwar mit und ohne .bashrc. Ist das wieder das falsche Kommando?Can't locate local/lib.pm in @INC...
Quotenach wie vor
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"
perl -I/home/sites/abc/perl5/lib/perl5 -MCPAN -Mlocal::lib -e shell
2020-02-05T17:15:24 rostiKurzum: Sofern es zu einem Modul diese .so oder .dll Dateien gibt, ist dieses Modul kein Pure Perl und noch kürzer gesagt, kannst Du solche Module nicht selbst auf einem Shared Host installieren.
2020-02-09T13:00:34 Daximrosti erzählt wieder mal Müll.
QuoteQuote...Auf Dauer hilft da nur Ignorieren.