Forum>Entwickler>Perl und CPAN unter MacOSX...

Perl und CPAN unter MacOSX...

sierkb14.05.0922:22
Im Netz gibt es zwar viel, aber nicht unbedingt immer auch Antworten auf die Fragen, die sich mir stellen..., und das Usenet ist bzgl. Mac leider etwas dünn besiedelt...

Deshalb und aus aktuellem Anlass: Gibt es hier jemanden, der/die mir zum Thema Perl unter MacOSX und Nachinstallation von Perl-Moduln aus dem CPAN mal nähere Auskünfte geben kann -- gerade auch im Hinblick auf die diesbzgl. notwendig gewordenen Veränderungen/Korrekturen im Zuge von 10.5.7?

Ich denke da so an _mäuschen und Konsorten, die mir da evtl. weiterhelfen könnten, aber jeder andere diesbzgl. Wissende ist höflich ebenso aufgerufen, mir seinen diesbzgl. Wissenstand mitzueilen, wenn er weiterhelfen kann...
Details zu meiner Frage folgen, wenn jemand "Hier!" geschrieen hat. Gerne auch per PM.

Ich sag' schon mal Danke!
0

Kommentare

HR14.05.0922:36
Zu 10.5.7 kann ich jetzt nichts sagen, aber unter 10.5.6 funktionierte das Nachladen eines Perl Moduls ohne Probleme.

Ich wollte mir in awstats die GeoIPs anzeigen lassen und dazu brauchte ich das Modul.

Erst xCode installieren und dann im Terminal cpan aufrufen

cpan>

Dann auf die Frage

Are you ready for manual configuration? [yes] no

mit "no" antworten, dann wird alles automatisch konfiguriert.

Und dann einfach

cpan> install Geo::IP::PurePerl

und das war es dann. Hat funktioniert.
0
sierkb14.05.0923:07
HR
Zu 10.5.7 kann ich jetzt nichts sagen, aber unter 10.5.6 funktionierte das Nachladen eines Perl Moduls ohne Probleme.

, und . In 10.5.7 ist das anscheinend behoben worden. U.a. existiert jetzt seit 10.5.7 ein bisher nicht dagewesene Verzeichnis /Library/Perl/Updates/5.8.8 incl. zugehöriger ReadMe-Datei, um dem bisherigen Problem, das Apple sich u.a. selber mit dem letzten Security-Update 2009-001 bereitet hat, zu begegnen.
Erst xCode installieren und dann im Terminal cpan aufrufen

cpan>

Dann auf die Frage

Are you ready for manual configuration? [yes] no

mit "no" antworten, dann wird alles automatisch konfiguriert.

XCode IST installiert. Und ein
perl -MCPAN -e shell
ist auch schon durchgeführt. Die Frage "Are you ready for manual configuration? [yes] no habe ich der größeren Kontrolle wegen mit yes beantwortet" Und zwar als Admin-User. Dadurch wurde ~/.cpan/CPAN/MyConfig.pm im Home-Verzeichnis des Admin-Users angelegt. Hätte ich es als root gemacht, würde das im Home-Verzeichnis von root, also im Verzeichnis /var/root/.cpan/CPAN/ abgelegt werden.
Und dann einfach
cpan> install Geo::IP::PurePerl
und das war es dann. Hat funktioniert.

Und genau hier fangen meine Fragen an: ich will NICHT, dass die systemeigene Perl-Installation unter /System/Library/Perl gestört/angerührt wird. Ich will, dass die zu installierenden Perl-Moduln unterhalb der systemweiten (und extra für derlei Zwecke vorhandenen und seit 10.5.7 verbesserten) Location /Library/Perl/Updates/5.8.8/ abgelegt werden.

Erste Frage: ist es korrekt, dass ich obigen Aufruf
perl -MCPAN -e shell
als Admin-User ausgeführt habe? Oder sollte/müsste ich den besser als root durchführen? Oder als Admin via sudo als root (dann wäre $HOME nach wie vor das Home-Verzeichnis von Admin)?

Zweite Frage: Als welcher User muss/sollte ich auf der Shell bzw. am CPAN-Prompt angemeldet sein, um meine zu installierenden Moduln aus dem CPAN so zu installieren, dass sie wirklich unter /Library/Perl/Updates/5.8.8/ abgelegt werden und weder unter /System/Library/Perl noch in einem Verzeichnis des gerade angemeldeten Users (Admin-User oder root oder normaler User) zu liegen kommen?
Als root? Als Admin? Als Admin und dann per sudo in die CPAN-Shell rein und den install-Befehl durchführen?

Wo werden die Manpages dieser neuen nachinstallierten Moduln automatisch abgelegt? Zusammen bei den bisherigen Manpages des Systems unter /usr/share/man, oder kommen sie evtl. unter /usr/local/share/man zu liegen (wäre meiner Ansicht nach besser, da örtlich getrennt von den von Apple abgelegten Manpages).

Desweiteren: ist Perl bzw. das CPAN-Modul unter MacOSX standardmäßig so konfiguriert, dass es gezippte Manpages für Module aus dem CPAN anlegt, oder muss ich da Anpassungen in ~/.cpan/CPAN/MyConfig.pm in der Variable 'makepl_arg' vornehmen?

Fragen über Fragen...
0
HR15.05.0900:27
Ich habe die Installation unter root ausgeführt.

Leider hatte ich cpan das erste mal unter meinem User Account aufgerufen.
jetzt liegt /.cpan/CPAN/MyConfig.pm in meinem home.

Läuft alles bei mir und deswegen habe ich mich um diese Unschönheiten nicht gekümmert.

Viel Ahnung habe ich aber leider nicht davon.
0
sierkb15.05.0900:43
HR
Ich habe die Installation unter root ausgeführt.

Wann? VOR 10.5.7? Wenn ja, in welchem Verzeichnis liegen die von Dir installierten Perl-Moduln (also nicht die MyConfig, sondern die tatsächlichen Moduln)? Unterhalb von /System/Library/Perl/ schön gemischt mit den systemeigenen Moduln? Abgegrenzt davon unterhalb von /Library/Perl? Unterhalb von ~/.cpan?
Leider hatte ich cpan das erste mal unter meinem User Account aufgerufen.

Das ist zulässig und kann gewünscht sein.
jetzt liegt /.cpan/CPAN/MyConfig.pm in meinem home.
Wenn die Config-Datei Deiner Meinung nach durch einen Fehler Deinerseits falsch liegt, warum verschiebst Du sie nicht dorthin, wo sie richtiger liegen sollte oder lässt sie neu erzeugen?
Läuft alles bei mir und deswegen habe ich mich um diese Unschönheiten nicht gekümmert.

Mit sowas gebe ich mich nicht zufrieden. Ich möchte schon gerne VORHER wissen, was passieren wird, um etwaige Fehler zu vermeiden. Habe keine Lust, die Dateien nachher alle einzeln aus dem systemeigenen Repository herauszuprokeln, ich möchte sie getrennt installiert haben. Eine saubere CPAN-Installation MUSS auch unter MacOSX möglich sein. Habe zwar noch MacPorts installiert, und ich kann zur Not darüber auch die Module einpflegen, doch ich brauche für mein Projekt teilweise höchstaktuelle Module aus dem CPAN, teilweise sogar welche aus dem CVS HEAD Tree des betreffenden Moduls. Habe da das eine oder andere Meta-Package, welches andere für das Projekt benötigte Pakete in einem Rutsch aus dem CPAN nachlädt.

Das heißt, da findet dann eine ganze Orgie an nachinstallierten Paketen statt. Und deshalb möchte ich gerne VORHER wissen, wo MacOSX sie ablegt bzw. wie ich sicherstellen kann, dass es sie dort ablegt, dass ich zufrieden sein kann, um vor solchen unangenehmen und schlecht tolerablen Überraschungen geschützt zu sein, wie obig verlinkt Einigen seit dem letzten MacOSX Security-Update passiert.
Viel Ahnung habe ich aber leider nicht davon.

Trotzdem schon mal Danke für Deinen Beitrag.
0
HR15.05.0907:35
Eventuell kannst du hiermit was anfangen.
So lief bei mir die Installation ab.

sudo -s
Password:
cd /
cpan

cpan> install Geo::IP::PurePerl
CPAN: Storable loaded ok
Fetching with LWP:
  ftp://cpan.cpantesters.org/CPAN/authors/01mailrc.txt.gz
Going to read /.cpan/sources/authors/01mailrc.txt.gz
CPAN: Compress::Zlib loaded ok
Fetching with LWP:
  ftp://cpan.cpantesters.org/CPAN/modules/02packages.details.t xt.gz
Going to read /.cpan/sources/modules/02packages.details.txt.gz
  Database was generated on Sat, 09 May 2009 13:29:47 GMT

  There's a new CPAN.pm version (v1.9304) available!
  [Current version is v1.7602]
  You might want to try
    install Bundle::CPAN
    reload cpan
  without quitting the current session. It should be a seamless upgrade
  while we are running...

Fetching with LWP:
  ftp://cpan.cpantesters.org/CPAN/modules/03modlist.data.gz
Going to read /.cpan/sources/modules/03modlist.data.gz
Going to write /.cpan/Metadata
Running install for module Geo::IP::PurePerl
Running make for B/BO/BORISZ/Geo-IP-PurePerl-1.23.tar.gz
Fetching with LWP:
  ftp://cpan.cpantesters.org/CPAN/authors/id/B/BO/BORISZ/Geo-I P-PurePerl-1.23.tar.gz
CPAN: Digest::MD5 loaded ok
Fetching with LWP:
  ftp://cpan.cpantesters.org/CPAN/authors/id/B/BO/BORISZ/CHECK SUMS
Checksum for /.cpan/sources/authors/id/B/BO/BORISZ/Geo-IP-PurePerl-1.23.t ar.gz ok
Scanning cache /.cpan/build for sizes
Geo-IP-PurePerl-1.23/
Geo-IP-PurePerl-1.23/Changes
Geo-IP-PurePerl-1.23/COPYING
Geo-IP-PurePerl-1.23/geoip-lookup
Geo-IP-PurePerl-1.23/geoip-lookup-city
Geo-IP-PurePerl-1.23/geoip-lookup-isp
Geo-IP-PurePerl-1.23/geoip-lookup-netspeed
Geo-IP-PurePerl-1.23/geoip-lookup-org
Geo-IP-PurePerl-1.23/geoip-lookup-region
Geo-IP-PurePerl-1.23/INSTALL
Geo-IP-PurePerl-1.23/lib/
Geo-IP-PurePerl-1.23/lib/Geo/
Geo-IP-PurePerl-1.23/lib/Geo/IP/
Geo-IP-PurePerl-1.23/lib/Geo/IP/PurePerl.pm
Geo-IP-PurePerl-1.23/Makefile.PL
Geo-IP-PurePerl-1.23/MANIFEST
Geo-IP-PurePerl-1.23/META.yml
Geo-IP-PurePerl-1.23/README
Geo-IP-PurePerl-1.23/t/
Geo-IP-PurePerl-1.23/t/0_base.t
Geo-IP-PurePerl-1.23/t/1_lookup.t
Geo-IP-PurePerl-1.23/t/2_namelookup.t

  CPAN.pm: Going to build B/BO/BORISZ/Geo-IP-PurePerl-1.23.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for Geo::IP::PurePerl
cp lib/Geo/IP/PurePerl.pm blib/lib/Geo/IP/PurePerl.pm
cp geoip-lookup blib/script/geoip-lookup
/usr/bin/perl "-MExtUtils::MY" -e "MYfixin(shift)" blib/script/geoip-lookup
Manifying blib/man1/geoip-lookup.1
Manifying blib/man3/Geo::IP::PurePerl.3pm
  /usr/bin/make  -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/0_base..........ok                                                         
t/1_lookup........skipped
        all skipped: No GeoIP.dat found
t/2_namelookup....skipped
        all skipped: No GeoIP.dat found
All tests successful, 2 tests skipped.
Files=3, Tests=1,  0 wallclock secs ( 0.05 cusr +  0.04 csys =  0.09 CPU)
  /usr/bin/make test -- OK
Running make install
Installing /Library/Perl/5.8.8/Geo/IP/PurePerl.pm
Installing /usr/local/share/man/man1/geoip-lookup.1
Installing /usr/local/share/man/man3/Geo::IP::PurePerl.3pm
Installing /usr/bin/geoip-lookup
Writing /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Geo/IP/P urePerl/.packlist
Appending installation info to /System/Library/Perl/5.8.8/darwin-thread-multi-2level/perllo cal.pod
  /usr/bin/make install  -- OK

cpan>  
0
sierkb15.05.0911:33
HR
Eventuell kannst du hiermit was anfangen.


Ja, das sagt mir schon mal was. Danke.
Es sagt mir u.a.

sudo -s

Interaktive Rootshell, $HOME ist $HOME des Admin-Users (da nur er sudo absetzen darf).

Installing /Library/Perl/5.8.8/Geo/IP/PurePerl.pm

Also werden die Moduln an ihren Platz unterhalb von /Library/Perl verfrachtet. Wäre ja gut und in meinem Sinne.

Installing /usr/local/share/man/man1/geoip-lookup.1

Das Verzeichnis für die damit zusammenhängenden Manpages ist also /usr/local/share/man/. Auch gut, so sollte es meiner Meinung nach sein.

Installing /usr/local/share/man/man1/geoip-lookup.1
Offenbar nicht gezipped. Also sollte ich da einen entspr. Parameter mitgeben, damit die Manpages als gezipptes Archiv abgelegt werden...

Installing /usr/bin/geoip-lookup

Wieso nach /usr/bin/ und nicht nach /usr/local/bin/ -- bzgl. der Manpages wird doch auch /usr/local/ angesteuert?

Appending installation info to /System/Library/Perl/5.8.8

Und genau das möchte ich vermeiden. /System/Library/Perl/ sollte unberührt bleiben. Das sollte alles in /Library/Perl/5.8.8/ bzw. dem seit 10.5.7 extra dafür geschaffenen /Library/Perl/Updates/5.8.8/ zu liegen kommen, wenn ich die dort drin liegende ReadMe.txt richtig verstehe:
"In the module search order (@INC), this directory comes before the system
perl directory, so modules installed here can be used to update perl-standard
modules. The installprivlib Config parameter is now set to this directory,
so that (for instance) setting INSTALLDIRS=perl will cause modules to be
install here
".

Oder?
0
HR15.05.0913:41
ups, ich war bisher froh, dass es lieft und auf anhieb funktioniert hat.

Ich muss leider sagen, ich habe wirklich keine Ahnung wie das laufen sollte.
Grundsätzlich gebe ich aber recht, dass man das System Perl nicht anpacken sollte, sondern ein zweites parallel dazu installieren soll.

Und mit dem Update auf 10.5.7 werde ich noch etwas warten. Leider hat 10.5 immer noch zu viele Fehler. Mir hat schon gereicht, dass nach dem Update von 10.5.5 auf 10.5.6 kein WebDAV mehr geht und mir die Dateien auf dem Server zerschießt.
0
sierkb15.05.0913:52
HR
Und mit dem Update auf 10.5.7 werde ich noch etwas warten.

Ich habe genau aus diesem Grund 10.5.7 sofort aufgespielt. Weil ich genau wusste, dass da seit dem letzten Security-Update was Schweres verbockt war -- weil's prinzipiell von Apple bisher nicht so sauber gehandhabt worden ist, sodass so ein Szenario wie im Zuge des letzten Security-Updates überhaupt entstehen konnte. Das scheint Apple aber nun mit 10.5.7 geändert zu haben. Nur WAS GENAU da geändert worden ist und welches NEUE Verhalten aus diesen Änderungen resultiert, das habe ich bisher noch nicht in Erfahrung bringen können. Und einfaches Herumprobieren ist mir dann teilweise doch zu heikel. Zur Not mache ich halt einfach einen 'sudo port install ...' via MacPorts und lasse CPAN CPAN sein. Der Weg via CPAN wäre halt nur für meine Belange doch etwas besser geeignet.

Apple hatte auf diesem Gebiet in der Vergangenheit so manchen Bock geschossen, siehe auch bzw. abweichendes Verhalten gegenüber der restlichen Unix-Welt an den Tag gelegt. Von daher bin ich da eher etwas vorsichtiger und will vorher genau wissen, was da passieren wird.
Leider hat 10.5 immer noch zu viele Fehler. Mir hat schon gereicht, dass nach dem Update von 10.5.5 auf 10.5.6 kein WebDAV mehr geht und mir die Dateien auf dem Server zerschießt.

Sowas, die Geschichte jetzt mit der zerschossenen Perl-Basis durch das Security-Update und wohl auch andere Dinge, sind Dinge, über die man immer wieder lesen darf, wenn verärgerte SysAdmins, welche MacOSX-Server administrieren wollen oder müssen und die den Vergleich zu anderen Unices haben, ihrem Ärger Luft machen und von einem Einsatz von MacOSX als Server-OS sogar abraten...
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.

OK MacTechNews.de verwendet Cookies unter anderem für personalisierte Inhalte, Seitenanalyse und bei der Auslieferung von Google-Anzeigen. Dies war zwar schon immer so, auf Wunsch der EU muss nun jedoch explizit darauf hingewiesen werden. Durch Nutzung der Website erklären Sie sich damit einverstanden. Weitere Informationen