• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Noob-Frage zu Perl/Script

mr44er

Well-Known Member
Themenstarter #1
Zwecks Rückwärtssuche/Namenauflösung von Telefonnummern gegen öffentliche Telefonbucher an meinem Asterisk habe ich mir ein Script eingebunden. Das ganze AGI-Gedöhns ist Neuland für mich, bisher hatte ich Klickibunti über Superfecta, aber das gibts nur (noch) als Modul für z.B. FreePBX. Ich hab mal ins Modul reingeschaut, aber das ist mir zuviel Gefrickel gewesen, zumal ich keine großartigen Programmierkenntnisse besitze.

https://github.com/Superslub/AGI_Reverse_Lookup_DACH <- Das Script

Bevor ich das auf meinen Wählplan losließ, hab ich das Script erstmal auf der Shell getestet.

Zunächst folgende Fehlermeldung:
Code:
Can't locate Asterisk/AGI.pm in @INC (@INC contains:
Intuitiv habe ich dann misc/p5-Asterisk draufgebügelt.

Dann die Fehlermeldung mit "String::Util". Etwas googlen brachte mir dann bei, dass man fehlendes Perl-Zeug so installieren kann.

Code:
cpan install "String::Util"
cpan install "HTML::TreeBuilder"
cpan install "LWPx::ParanoidAgent"
Danach lief das Script.

Meine bescheidene Frage nun: War das richtig so mit cpan...macht man das so? Ich kenne mich mit perl nullkommagurnix aus.
 

pit234a

Well-Known Member
#4
ich hatte das auch mal durchexerziert und sicher noch sehr viel weniger Ahnung davon. Was damals für mich wichtig war zu begreifen: die so installierten Module werden natürlich nicht mit einem üblichen System-Update mitgezogen und es kann leichter zu Versionskonflikten kommen.
 

mr44er

Well-Known Member
Themenstarter #5
Logisch...aber gut, dass du das sagst. Da die Mühle jetzt produktiv läuft und bei asterisk ja mal gern die ein oder andere Funktion rausgetreten wird, muss ich da mein Augenmerk drauf haben und nicht jede Woche updaten.

Zur Not hab ich meine Snapshots.

Wo krieg ich denn zu diesem Perlzeug mehr Hinweise?
 

mr44er

Well-Known Member
Themenstarter #7
Ja...aber wie gehe ich da Konflikten aus dem Weg? Kann ich irgendwo nachlesen, was es bei Updates zu beachten gibt?

Wenn ich jetzt in z.B. sechs Monaten ein 'portmaster -ad' fahre, Asterisk + Perl5 werden dabei geupdatet. Perl5(5.xxx irgendwas oder 6?) hat dann diese alten Module drin, die vllt. mit der neuen Version nicht laufen. -> Konflikt wie pit es beschrieben hat.

Gibts sowas wie 'cpan update'? Wenn ja, mach ich das vorher oder nach den Portupdates?

Oder sehe ich das zu kritisch oder gar falsch? Kommt es nur drauf an, ob Perl up-to-date ist?
 
#8
Entweder nur CPAN oder nur Pkg. Dann gibt's in den seltensten Fällen Probleme. Zumal sich bei Perl auch nicht mehr so wirklich viel tut.
 

bsd4me

Well-Known Member
#10
Entweder nur CPAN oder nur Pkg. Dann gibt's in den seltensten Fällen Probleme. Zumal sich bei Perl auch nicht mehr so wirklich viel tut.
ich hatte bisher nur minimale oder (meistens) keine Probleme, selbst wenn ich pkg und cpan gemixt habe - naja, trotzdem würde ich den Weg über pkg vorziehen, wenn es das Paket da gibt :)

VG Norbert
 
#11
Das ist ja generell bei all den Skriptsprachen so, ob nun Perl, Python, Ruby oder sonst was. Die bringen ihren eigenen Paketmanager mit, man kann den nutzen oder aber eben das Paketmanagement des jeweiligen OS gehen. Wichtig ist, sich bewusst zu machen, welcher Paketmanager wohin installiert. Leider ist es zumindest bei Python so, dass der gerne in die selben Pfade installieren möchte, wie der Paketmanager des OS. Dann hat man also im selben Pfad Pakete von beiden liegen, die wissen nichts voneinander und begreifen im schlimmsten Fall noch nicht mal, das eine Abhängigkeit bereits vom anderen installiert wurde und installieren drüber.

Ich mache das daher so, dass ich alles aus den Ports/Packages installiere und wenn ich dann was via pip, cpan oder dem Ruby Dings installieren möchte, dann installiere ich das Zeug ins Home. Warum das nicht der default ist, wüsste ich auch mal gerne. Ich glaube cpan fragt mittlerweile sogar, pip leider nicht.
 

mr44er

Well-Known Member
Themenstarter #12
Ich glaube cpan fragt mittlerweile sogar, pip leider nicht.
Ich wurde nicht direkt nach dem Installtionspfad gefragt. Beim ersten Aufruf allerdings wurde ich gefragt, ob ich den Auto-Mechanismus haben will mit Nutzerinteraktion NUR, wenn erforderlich.
Schätze mal bei [no] wäre die Frage gekommen.

Ich mache das daher so, dass ich alles aus den Ports/Packages installiere und wenn ich dann was via pip, cpan oder dem Ruby Dings installieren möchte, dann installiere ich das Zeug ins Home.
Guter Ansatz. root-home oder user-home?
 

Athaba

Libellenliebhaber
Mitarbeiter
#15
Für home empfiehlt sich je nachdem wie das Ganze genau funktioniert cpanm(inus) und perlbrew. cpanm wäre generell vielleicht spannend. Damit kann man das trennen und zerhaut sich nicht potentiell Ports.
 

mr44er

Well-Known Member
Themenstarter #17
@oliver:

Ne, das Script wird von Asterisk ausgeführt (starten bei Aktion X, Nummer an Script, Name von Script zurück). Damit das im * rennt, brauchts Perl und Perl, um das Script rennen zu lassen, die Addons.
 
#18
also läuft es unter dem Asterisk Benutzer. Ergo muss das Zeug in dessen home. Perl selber hat kein Home, weil es ja nicht als Dienst läuft.