welche Perl-Module nutzt meine Installation

Begonnen von Muschelpuster, 07 Oktober 2017, 13:53:53

Vorheriges Thema - Nächstes Thema

Muschelpuster

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

fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

viegener

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
--> 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
--> 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...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

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...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

igami

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 ::)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Christoph Morrison

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'

Benni

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#

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Kai-Alfonso

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.

Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Otto123

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,
|grep ^ii|grep -vi raspberry | ... aber ohne Pakete die was mit raspberry im Namen oder Beschreibung haben.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz