perl - CPAN und Distributionsinstallation
Hallo, vorweg: ich bin kein perl-Entwickler. Ich muss öfters auf diversen SLES 10 Rechnern diverse CPAN-Module für unsere BioInformatiker installieren. Das klappt auch ganz prima, Installation mittels CPAN ist einfach. Ich habe aber gleichzeitig die Perl-Installation von SLES genutzt (ohne die mein Linux auch kaum laufen würde). Nun hat mir neulich ein Patch/Update der Perl-Installation der Distribution diverse Perlmodule downgegradet. Natürlich liefen einige Anwendungen anschließend nicht mehr. Ich habe diese Module mit CPAN neu installiert, jetzt läuft's wieder. Zukünftig möchte ich so was vermeiden. Eine Möglichkeit wäre, keine perl-Installationen mehr mittels zypper zu aktualisieren. Die gefällt mir aber nicht so. Wie habt Ihr das gelöst ? Und warum landen manche perlModule in /usr/lib/perl5/site_perl/5.8.8, andere in /usr/lib/perl5/vendor_perl/5.8.8, und wieder andere in /usr/lib/perl5/5.8.8 ? Was soll das mit den drei Verzeichnissen, welches ist da wofür gut ? Danke. Bernd -- Bernd Lentes Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen bernd.lentes@helmholtz-muenchen.de phone: +49 89 3187 1241 fax: +49 89 3187 3826 http://www.helmholtz-muenchen.de/idg Aufsichtsratsvorsitzende: MinDir'in Bärbel Brumme-Bothe Geschäftsführer: Prof. Dr. Günther Wess und Dr. Nikolaus Blum Registergericht: Amtsgericht München HRB 6466 Der Kopf ist rund, damit die Gedanken die Richtung ändern können -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tuesday, February 01, 2011 19:47:58 Lentes, Bernd wrote:
Eine Möglichkeit wäre, keine perl-Installationen mehr mittels zypper zu aktualisieren. Die gefällt mir aber nicht so. Wie habt Ihr das gelöst ?
Installiere Dein eigenes Perl in /opt, /usr/local oder so. Dann bist Du 1) unabhängig von Suse und 2) kannst Du aktuellere Perl Versionen einsetzen. 5.8.8 ist vom 31.1.2006. Seither gab es 5.8.9, 5.10.0, 5.10.1, 5.12.{0,1,2,3} und für März ist 5.14.0 geplant. Deine User werden's Dir danken. Es gibt bestimmt irgendwelche Repositories mit mehr oder weniger aktuellen Perl Versionen. Wenn Du keine findest, melde Dich nochmal. Ich habe hier das, was ich normalerweise zum Arbeiten brauche als REPO (allerdings nur für 11.1 und 11.3). Ist natürlich weit weniger als CPAN. Mittels CPAN kannst Du aber in jedem Fall mehr installieren.
Und warum landen manche perlModule in /usr/lib/perl5/site_perl/5.8.8, andere in /usr/lib/perl5/vendor_perl/5.8.8, und wieder andere in /usr/lib/perl5/5.8.8 ? Was soll das mit den drei Verzeichnissen, welches ist da wofür gut ?
Alles, was Du normalerweise mit cpan installierst, landet in site_perl, die Pakete von Suse normalerweise in vendor_perl. Das, was Perl als Basis mitbringt, also Module, die zum Perl-Kern gehören, sind in /usr/lib/perl5/5.8.8. Es gibt Ausnahmen. Ein Modul kann verlangen nach /usr/lib/perl5/5.8.8 statt nach site_perl installiert zu werden. Das machen aber sehr selten. Torsten Förtsch -- Need professional modperl support? Hire me! (http://foertsch.name) Like fantasy? http://kabatinte.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Torsten Förtsch schrieb:
Installiere Dein eigenes Perl in /opt, /usr/local oder so. Dann bist Du 1) unabhängig von Suse und 2) kannst Du aktuellere Perl Versionen einsetzen. 5.8.8 ist vom 31.1.2006. Seither gab es 5.8.9, 5.10.0, 5.10.1, 5.12.{0,1,2,3} und für März ist 5.14.0 geplant. Deine User werden's Dir danken.
Am besten wohl dann aus einem .tgz, oder ?
Es gibt bestimmt irgendwelche Repositories mit mehr oder weniger aktuellen Perl Versionen. Wenn Du keine findest, melde Dich nochmal. Ich habe hier das, was ich normalerweise zum Arbeiten brauche als REPO (allerdings nur für 11.1 und 11.3). Ist natürlich weit weniger als CPAN. Mittels CPAN kannst Du aber in jedem Fall mehr installieren.
Und warum landen manche perlModule in /usr/lib/perl5/site_perl/5.8.8, andere in /usr/lib/perl5/vendor_perl/5.8.8, und wieder andere in /usr/lib/perl5/5.8.8 ? Was soll das mit den drei Verzeichnissen, welches ist da wofür gut ?
Alles, was Du normalerweise mit cpan installierst, landet in site_perl, die Pakete von Suse normalerweise in vendor_perl. Das, was Perl als Basis mitbringt, also Module, die zum Perl-Kern gehören, sind in /usr/lib/perl5/5.8.8.
Es gibt Ausnahmen. Ein Modul kann verlangen nach /usr/lib/perl5/5.8.8 statt nach site_perl installiert zu werden. Das machen aber sehr selten.
Aha. Das schafft ja schon mal etwas Klarheit. Jetzt habe ich aber noch einige weitere Fragen: Nehmen wir an, ich kompiliere mir mein perl selbst, z.B. nach /opt. Wie kann ich dann dem cpan-Modul klar machen, weitere Pakete auch dorthin zu installieren ? Und wie mache ich meinem System klar, dort nach perl-Modulen zu suchen, wenn ich diese benutzen will ? Schreibt das selbst kompilierte Perl und die zusätzlich installierten CPAN-Module trotzdem ihre Installation noch nach perllocal.pod ? (Liegt bei mir unter /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi). Diese Datei finde ich nämlich sehr hilfreich. Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Wednesday, February 02, 2011 11:42:47 Lentes, Bernd wrote:
Nehmen wir an, ich kompiliere mir mein perl selbst, z.B. nach /opt. Wie kann ich dann dem cpan-Modul klar machen, weitere Pakete auch dorthin zu installieren ?
export PATH=/opt/perl/bin:$PATH cpan -i ...
Und wie mache ich meinem System klar, dort nach perl-Modulen zu suchen, wenn ich diese benutzen will ?
3 Wege: 1) Du benutzt in den Scripts #!/opt/perl/bin/perl statt #!/usr/bin/perl in der ersten Zeile. 2) Du schreibst in die erste Zeile #!/usr/bin/env perl und setzt $PATH so, dass er /opt/perl/bin vor /usr/bin durchsucht. 3) Du installierst das neue Perl in /usr/bin rm /usr/bin/perl ln -s /opt/perl/bin/perl /usr/bin/perl In den ersten 2 Fällen, musst Du die Scripte anpassen. Im dritten musst Du sicherstellen, dass alle Module installiert sind, die Dein System sonst so braucht. Ich persönlich bevorzuge 2).
Schreibt das selbst kompilierte Perl und die zusätzlich installierten CPAN-Module trotzdem ihre Installation noch nach perllocal.pod
Das hängt vom Perl-Modul ab. Normalerweise benutzt ein Modul entweder ExtUtils::MakeMaker oder Module::Build zum Kompilieren und Installieren. Diese schreiben beim Installieren diese Datei. Es kann aber auch ein ganz verqueres Modul geben, das das nicht macht. Bisher habe ich kein solches gesehen. Torsten Förtsch -- Need professional modperl support? Hire me! (http://foertsch.name) Like fantasy? http://kabatinte.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Wed, 2 Feb 2011 11:42:47 +0100
schrieb "Lentes, Bernd"
Torsten Förtsch schrieb:
Installiere Dein eigenes Perl in /opt, /usr/local oder so. Dann bist Du 1) unabhängig von Suse und 2) kannst Du aktuellere Perl Versionen einsetzen. 5.8.8 ist vom 31.1.2006. Seither gab es 5.8.9, 5.10.0, 5.10.1, 5.12.{0,1,2,3} und für März ist 5.14.0 geplant. Deine User werden's Dir danken.
Am besten wohl dann aus einem .tgz, oder ?
[...]
Aha. Das schafft ja schon mal etwas Klarheit. Jetzt habe ich aber noch einige weitere Fragen: Nehmen wir an, ich kompiliere mir mein perl selbst, z.B. nach /opt. Wie kann ich dann dem cpan-Modul klar machen, weitere Pakete auch dorthin zu installieren ? Und wie mache ich meinem System klar, dort nach perl-Modulen zu suchen, wenn ich diese benutzen will ? Schreibt das selbst kompilierte Perl und die zusätzlich installierten CPAN-Module trotzdem ihre Installation noch nach perllocal.pod ? (Liegt bei mir unter /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi). Diese Datei finde ich nämlich sehr hilfreich.
Ich würde empfehlen, zweite und dritte Installationen mit perlbrew einzurichten, dann gibt es keine Konflikte, weder mit dem Binary perl noch mit cpan. perlbrew off, ermöglicht die Einbindung der Standard-Installation und setzt dementsprechend die Umgebungsvariablen perlbrew switch perl-5.12.3 setzt die Umgebungsvariablen auf die zweite Installation. Zur Installation siehe: http://www.thomas-fahle.de/talks/Foo-Perl-Magazin-21-perlbrew.pdf -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:DA147B05 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Wed, 2 Feb 2011 14:14:53 +0100
schrieb Dieter Kluenter
Am Wed, 2 Feb 2011 11:42:47 +0100 schrieb "Lentes, Bernd"
: Torsten Förtsch schrieb:
Installiere Dein eigenes Perl in /opt, /usr/local oder so. Dann bist Du 1) unabhängig von Suse und 2) kannst Du aktuellere Perl Versionen einsetzen. 5.8.8 ist vom 31.1.2006. Seither gab es 5.8.9, 5.10.0, 5.10.1, 5.12.{0,1,2,3} und für März ist 5.14.0 geplant. Deine User werden's Dir danken.
Am besten wohl dann aus einem .tgz, oder ?
[...]
Aha. Das schafft ja schon mal etwas Klarheit. Jetzt habe ich aber noch einige weitere Fragen: Nehmen wir an, ich kompiliere mir mein perl selbst, z.B. nach /opt. Wie kann ich dann dem cpan-Modul klar machen, weitere Pakete auch dorthin zu installieren ? Und wie mache ich meinem System klar, dort nach perl-Modulen zu suchen, wenn ich diese benutzen will ? Schreibt das selbst kompilierte Perl und die zusätzlich installierten CPAN-Module trotzdem ihre Installation noch nach perllocal.pod ? (Liegt bei mir unter /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi). Diese Datei finde ich nämlich sehr hilfreich.
Ich würde empfehlen, zweite und dritte Installationen mit perlbrew einzurichten, dann gibt es keine Konflikte, weder mit dem Binary perl noch mit cpan.
perlbrew off, ermöglicht die Einbindung der Standard-Installation und setzt dementsprechend die Umgebungsvariablen perlbrew switch perl-5.12.3 setzt die Umgebungsvariablen auf die zweite Installation.
Zur Installation siehe: http://www.thomas-fahle.de/talks/Foo-Perl-Magazin-21-perlbrew.pdf
Ich vergaß zu erwähnen, dass bei einer perlbrew Installation unter openSUSE-11.3 ein Bug in dbm.h enthalten ist, daher muß perlbrew der Parameter -Dnoextension=ODBM_File übergeben werden. -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:DA147B05 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Tue, 1 Feb 2011 19:47:58 +0100
schrieb "Lentes, Bernd"
Hallo,
vorweg: ich bin kein perl-Entwickler. Ich muss öfters auf diversen SLES 10 Rechnern diverse CPAN-Module für unsere BioInformatiker installieren. Das klappt auch ganz prima, Installation mittels CPAN ist einfach. Ich habe aber gleichzeitig die Perl-Installation von SLES genutzt (ohne die mein Linux auch kaum laufen würde). Nun hat mir neulich ein Patch/Update der Perl-Installation der Distribution diverse Perlmodule downgegradet. Natürlich liefen einige Anwendungen anschließend nicht mehr. Ich habe diese Module mit CPAN neu installiert, jetzt läuft's wieder. Zukünftig möchte ich so was vermeiden. Eine Möglichkeit wäre, keine perl-Installationen mehr mittels zypper zu aktualisieren. Die gefällt mir aber nicht so. Wie habt Ihr das gelöst ? Und warum landen manche perlModule in /usr/lib/perl5/site_perl/5.8.8, andere in /usr/lib/perl5/vendor_perl/5.8.8, und wieder andere in /usr/lib/perl5/5.8.8 ? Was soll das mit den drei Verzeichnissen, welches ist da wofür gut ?
Die drei Verzeichnisse sind simple zu erklären: lib/perl5/<version> enthält alle Basis-Module lib/perl5/vendor_perl/<version> enthält alle von openSUSE enthaltenen Module der Basis-Installation. lib/perl5/site_perl/<version> enthält alle zusätzlich installierten Module. Ich bin ganz glücklich mit einer Basis-Installation und anschließendem install per CPAN. Eine ganz ander Möglichkeit bietet perlbrew, damit kannt du diverse Perl Versionen vorzugsweise in $HOME installieren und mittels perlbrew nach Bedarf umschalten. Ich persönlich bin mit perlbrew und seinen Möglichkeiten, auch mcpanm, mehr als zufrieden. Wenn jemand interessiert ist, können wir das gerne ausführlicher diskutieren. -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:DA147B05 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Dieter Kluenter
-
Lentes, Bernd
-
Torsten Förtsch