FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Muschelpuster am 07 Oktober 2017, 13:53:53

Titel: welche Perl-Module nutzt meine Installation
Beitrag von: Muschelpuster am 07 Oktober 2017, 13:53:53
Moin zusammen,

Ich möchte mein FHEM auf eine neue Hardware umziehen. Die neue Hardware läuft mit Debian Stretch, FHEM ist installiert und auf ConfigDB (MariaDB) umgestellt (wie das bisherige System auf Raspbian auch, nur MySQL). Ich weiß, was noch nebenbei installiert ist und nach dem Umzug nicht funktionieren wird, aber eigentlich könnte ich jetzt den Hebel umlegen, indem ich die DB-Inhalte kopiere, das alte FHEM stoppe und das Neue nutze.
Doch halt! Diverse Devices brauchen diverse Perl-Module. Gibt es da irgendwo eine Möglichkeit zu ermitteln welche das sind? Mir fällt da so nur der Befehl 'version' und das Abklappern der Commandref ein. Aber vielleicht geht es auch einfacher?...

gepackte Grüße
Niels

Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: viegener am 07 Oktober 2017, 15:03:29
Ich kenne Möglichkeiten alle vorhandenen perl-module heruaszufinden --> http://perldoc.perl.org/perlfaq3.html#How-do-I-find-which-modules-are-installed-on-my-system%3F (http://perldoc.perl.org/perlfaq3.html#How-do-I-find-which-modules-are-installed-on-my-system%3F)
--> Das heisst aber nicht, dass diese auch benutzt werden

Oder statisch den Codescannen http://search.cpan.org/~rschupp/Module-ScanDeps-1.24/lib/Module/ScanDeps.pm (http://search.cpan.org/~rschupp/Module-ScanDeps-1.24/lib/Module/ScanDeps.pm)
--> Was aber mehr Module einschliesst als bei Dir vermutlich laufen

Es gibt auch die Möglichkeit den Code zur Laufzeit in eine Datenbank schreiben zu lassen und das aufzusammeln (z.B: nach einiger Zeit des Laufens)

Aber wirklich elegant ist nichts davon, am ehesten wahrscheinlich das erste, denn die installierten Module haben zumindest irgendwann evrmutlich mal einem Zweck gedient...
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: viegener am 07 Oktober 2017, 15:04:39
ich befürchte aber das dies auch keine Anfängerfrage ist, vermutlich gehört sie am ehesten ins Developerforum, denn dort sind wohl die Perl-Experten unterwegs, zu denen ich mich nicht zählen möchte...
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Muschelpuster am 07 Oktober 2017, 15:53:54
Danke Viegner,

Ich hatte schon befürchtet, dass es nicht so einfach ist. Aber gleich entwicklerforum  ::)
Unterm Strich ist es nahezu noch komplexer, denn man muss wohl noch immer schauen, wie die Module installiert wurden. Ich hatte mich da auf dem alten System auch mal mit CPAN versucht, aber für mich ist eher die Installation apt-get install was. Nun geben einige Devices aber den CPAN-Modulnamen an, andere den apt-get-Namen. Das muss am auch immer noch 'konvertieren'.
Ich hätte wirklich nichts gegen einen reinigenden Regen, von daher ist der Zugriff auf die installierten Module evtl. nicht optimal. Dazu hatte ich schon folgendes versucht:dpkg-query -S *perl*
Ich werde mich da wohl doch in der Einzelrecherche üben. Das dauert ein vielfaches länger als der komplette bisherige Installationsvorgang, aber irgendetwas ist ja immer  8)
Wo gibt es denn eine gute Übersetzung von CPAN auf apt-get?

handgearbeitete Grüße
Niels
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: igami am 07 Oktober 2017, 16:42:47
Meist ist es lib<MODUL>-[<MODUL>-]perl. Also statt HTTP::Request libhttp-request-perl.
Das habe ich aber nur für mich mal so festgestellt, ob das tatsächlich immer so ist weiß ich nicht ::)
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Muschelpuster am 07 Oktober 2017, 17:20:42
Zitat von: igami am 07 Oktober 2017, 16:42:47ob das tatsächlich immer so ist weiß ich nicht ::)
Nein, leider nicht. Zu LWP::UserAgent gibt es 'nur':liblwp-useragent-chicaching-perl - LWP::UserAgent with caching based on CHI
liblwp-useragent-determined-perl - LWP useragent that retries errors
liblwp-useragent-progressbar-perl - LWP user agent that can display a progress bar
libtest-lwp-useragent-perl - module for simulating and testing network calls
Und schon schaut der Perl-&Linux-Dummie doof  8)

unklare Grüße
Niels
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Christoph Morrison am 07 Oktober 2017, 19:23:43
Zitat von: Muschelpuster am 07 Oktober 2017, 13:53:53
Diverse Devices brauchen diverse Perl-Module. Gibt es da irgendwo eine Möglichkeit zu ermitteln welche das sind? Mir fällt da so nur der Befehl 'version' und das Abklappern der Commandref ein. Aber vielleicht geht es auch einfacher?...

Versuch mal
dpkg -l |grep -i '\-perl'
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Benni am 07 Oktober 2017, 20:01:57
Zitat von: Muschelpuster am 07 Oktober 2017, 17:20:42
Nein, leider nicht. Zu LWP::UserAgent gibt es 'nur':liblwp-useragent-chicaching-perl - LWP::UserAgent with caching based on CHI
liblwp-useragent-determined-perl - LWP useragent that retries errors
liblwp-useragent-progressbar-perl - LWP user agent that can display a progress bar
libtest-lwp-useragent-perl - module for simulating and testing network calls
Und schon schaut der Perl-&Linux-Dummie doof  8)

unklare Grüße
Niels

Ich hatte da mal was ausgegraben: https://forum.fhem.de/index.php/topic,61370.msg527931.html#msg527931

liefert auf meinem System für LWP::UserAgent folgendes Ergebnis:


LWP::UserAgent is in libwww-perl package


gb#
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Muschelpuster am 07 Oktober 2017, 20:52:17
Zitat von: Christoph Morrison am 07 Oktober 2017, 19:23:43
Versuch mal
dpkg -l |grep -i '\-perl'
Danke, das sieht deutlich übersichtlicher aus als meine Abfrage.

Zitat von: Benni am 07 Oktober 2017, 20:01:57
Ich hatte da mal was ausgegraben: https://forum.fhem.de/index.php/topic,61370.msg527931.html#msg527931
Das hat doch was! Damit komme ich voran!

dankbare Grüße
Niels
Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Kai-Alfonso am 04 März 2019, 12:55:55
Ich hole das noch mal hoch, weil ich das grade gebraucht habe und für mich einen guten Workflow gefunden habe. Das geht auch alles als Oneliner, aber die Mühe wollte ich mir nicht machen ;-)

Auf dem alten Fhem System die Module in eine Datei schreiben.

dpkg -l |grep -i '\-perl' | awk '{ print $2 }' > /tmp/perl_modules

Dann die Datei /tmp/perl_modules per scp/sftp etc auf das neue System bringen (sagen wir auch nach /tmp/)

Dann auf dem neuem System die Module installieren mit

apt-get install $(awk '{print $1'} tmp/perl_modules)


Hat bei mir wunderbar geklappt.

Titel: Antw:welche Perl-Module nutzt meine Installation
Beitrag von: Otto123 am 11 Juli 2019, 19:44:54
Zitat von: Kai-Alfonso am 04 März 2019, 12:55:55
Das geht auch alles als Oneliner, aber die Mühe wollte ich mir nicht machen ;-)
ich habe es mal gemacht: ;)
Auf dem neuen System. Als Testlauf
ssh pi@oldhost "dpkg -l " | grep -i '\-perl'| awk '{ print $2 }' |sed 's/^\(.\)/apt-get -y install \1/'
Und als scharfe Sache:
ssh pi@oldhost "dpkg -l " | grep -i '\-perl'| awk '{ print $2 }' |sed 's/^\(.\)/apt-get -y install \1/'|bash -
Vielleicht braucht es ja mal einer.

Den grep kann man natürlich noch anpassen und auch mehrfach anwenden (und sicherlich verrückte Dinge tun) :)
|grep ^ii| für alle vollständig installierten Pakete (https://wiki.ubuntuusers.de/dpkg/#dpkg-query),
|grep ^ii|grep -vi raspberry | ... aber ohne Pakete die was mit raspberry im Namen oder Beschreibung haben.

Gruß Otto