Cpan auf Fritzbox
Cpan (genauer Cpanmin) auf FritzBox 7390 einrichten
Mit Cpanmin können die meisten Perl-Pakete auf der FritzBox installiert werden (z.B. DBI das für DbLog benötigt wird). Dadurch umgeht man die oft störende Einschränkungen der FritzBox. Die Installation auf anderen FritzBox-Typen wurde bis jetzt nicht getestet, könnte aber auch funktionieren. Für die Installation werden Debian-mips-Pakete von debian.org verwendet. Die Pakete werden einfach entpackt und auf der FritzBox in entsprechenden Verzeichnissen verteilt. Es müssen selbstverständlich Abhängigkeiten von den Paketen erfüllt sein. Dadurch ist es möglich die meisten Pakete die Debian für mips-Architektur bereitstellt nach zu installieren.
Voraussetzungen
- FritzBox 7390 mit Freetz als USB-Root
- Da die Pakete einiges an Speicher benötigen, sollte die rootfs-Partition ausreichende Größe haben. 512MB reichen bei mir locker.
grober Installationsablauf
- Benötigte .deb Pakete von debian.org besorgen
- Pakete entpacken und auf die FritzBox kopieren
- Pakete in entsprechende Verzeichnisse auf der FritzBox verteilen
- Cpanmin einrichten
ausführlicher Installationsablauf
Benötigte Pakete runterladen
Für die Installation benötigte Pakete werden von http://www.debian.org/distrib/packages heruntergeladen.
- libc6_2.13-38_mips
- libc6-dev_2.13-38_mips
- perl-base_5.14.2-20_mips
- perl_5.14.2-20_mips
- perl-modules_5.14.2-20_all
- make_3.81-8.2_mips
- cpp-4.6_4.6.3-14_mips
- cpp_4.6.3-8_mips
- gcc-4.6-base_4.6.3-14_mips
- gcc-4.6_4.6.3-14_mips
- gcc_4.6.3-8_mips
- binutils_2.22-8_mips
- libmpc2_0.9-4_mips
- libmpfr4_3.1.0-5_mips
- libgmp10_5.0.5+dfsg-2_mips
- openssl_1.0.1e-2_mips
- libssl1.0.0_1.0.1e-2_mips
- libssl-dev_1.0.1e-2_mips
- grep_2.6.3-3_mips
- linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips
Benötigte .deb Pakete entpacken
Ich verwende dazu MidnightCommander, damit werden Symlinks auch als solche entpackt (dpkg -x macht die zu Hardlinks). In MidnightCommander auf die .deb Datei gehen, mit Enter die Datei öffnen und Dateien einfach rauskopieren.
Enpackte Pakete auf die Fritzbox kopieren
Ich mounte dazu einfach die Fritzbox mit sshfs "sshfs 192.168.0.1:/ /mnt/fritz.box". Wenn man die Fritzbox vor dem Entpacken gemountet hat, kann auch direkt auf die Fritzbox entpackt werden.
Symlink falls miniperl installiert ist löschen
rm /usr/bin/perl
Pakete in entsprechenden Verzeichnissen auf der FritzBox verteilen
Für Perl wird libc6 benötigt
cp -rd libc6_2.13-38_mips/CONTENT/etc/. /etc/. cp -rd libc6_2.13-38_mips/CONTENT/lib/. /lib/. cp -rd libc6_2.13-38_mips/CONTENT/usr/lib/. /usr/lib/.
cp -rd libc6-dev_2.13-38_mips/usr/include/. /usr/include/. cp -rd libc6-dev_2.13-38_mips/usr/lib/. /usr/lib/. Perl insatllieren
mkdir /usr/share/perl cp -rd perl-base_5.14.2-20_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd perl-base_5.14.2-20_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd perl-base_5.14.2-20_mips/CONTENT/usr/share/perl/. /usr/share/perl/.
cp -rd perl_5.14.2-20_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd perl_5.14.2-20_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd perl-modules_5.14.2-20_all/CONTENT/etc/. /etc/. cp -rd perl-modules_5.14.2-20_all/CONTENT/usr/share/perl/. /usr/share/perl/. Außerdem wird Make benötigt
cp -rd make_3.81-8.2_mips/CONTENT/usr/bin/. /usr/bin/. mkdir -p /usr/share/locale/de cp -rd make/usr/share/locale/de/. /usr/share/locale/de/.
Kompiler installieren
cp -rd cpp-4.6_4.6.3-14_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd cpp-4.6_4.6.3-14_mips/CONTENT/usr/lib/. /usr/lib/.
cp -rd cpp_4.6.3-8_mips/CONTENT/usr/bin/. /usr/bin/. ln -s /usr/bin/gcc /usr/bin/cc cp -rd gcc-4.6-base_4.6.3-14_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd gcc-4.6_4.6.3-14_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd gcc-4.6_4.6.3-14_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd gcc_4.6.3-8_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd binutils_2.22-8_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd binutils_2.22-8_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd binutils_2.22-8_mips/CONTENT/usr/share/locale/de/. /usr/share/locale/de/. cp -rd libmpc2_0.9-4_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd libmpfr4_3.1.0-5_mips/CONTENT/usr/lib/. /usr/lib/. cp -rd libgmp10_5.0.5+dfsg-2_mips/CONTENT/usr/lib/. /usr/lib/. ln -s /usr/bin/gcc /usr/bin/cc ln -s /usr/lib/gcc/mips-linux-gnu/4.6/cc1 /usr/bin/cc1 OpenSSL installieren
cp -rd openssl_1.0.1e-2_mips/CONTENT/etc/. /etc/. cp -rd openssl_1.0.1e-2_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd openssl_1.0.1e-2_mips/CONTENT/usr/lib/. /usr/lib/.
cp -rd libssl1.0.0_1.0.1e-2_mips/usr/lib/. /usr/lib/. cp -rd libssl-dev_1.0.1e-2_mips/CONTENT/usr/include/. /usr/include/. cp -rd libssl-dev_1.0.1e-2_mips/CONTENT/usr/lib/. /usr/lib/. Grep ersetzen da Cpan bei Installation von manchen Paketen Probleme damit hat
cp -rd grep_2.6.3-3_mips/CONTENT/bin/. /bin/. cp -rd grep_2.6.3-3_mips/CONTENT/usr/bin/. /usr/bin/. cp -rd grep_2.6.3-3_mips/CONTENT/usr/share/locale/de/. /usr/share/locale/de/.
Includes kopieren
mkdir /usr/include/linux cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/linux/param.h /usr/include/linux cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/linux/limits.h /usr/include/linux cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/linux/errno.h /usr/include/linux
mkdir /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/ioctls.h /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/ioctl.h /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/socket.h /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/param.h /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/sockios.h /usr/include/asm cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/arch/mips/include/asm/errno.h /usr/include/asm mkdir /usr/include/asm-generic cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/asm-generic/ioctl.h /usr/include/asm-generic cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/asm-generic/socket.h /usr/include/asm-generic cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/asm-generic/param.h /usr/include/asm-generic cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/asm-generic/sockios.h /usr/include/asm-generic cp -rd linux-headers-2.6.32-5-common_2.6.32-48squeeze1_mips/CONTENTS/usr/src/linux-headers-2.6.32-5-common/include/asm-generic/errno-base.h /usr/include/asm-generic
Cpan installieren
Als Ersatz für Cpan wird Cpanminus verwendet. Normales Cpan benötigt zu viel Arbeitsspeicher, die Fritzbox hängt sich auf.
rm /usr/bin/cpan wget http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.6103.tar.gz tar -xzvf App-cpanminus-1.6103.tar.gz mkdir -p /usr/local/bin cp App-cpanminus-1.6103/bin/cpanm /usr/local/bin chmod 755 /usr/bin/cpanm ln -s /usr/local/bin/cpanm /usr/bin/cpanm
Der Script muss gepatcht werden da wget von Freetz nicht alle Parameter kennt
patch /usr/local/bin/cpanm < /var/media/ftp/uStor12/temp/cpanm.patch
Jetzt noch noch einmal sauber installieren
cpanm App::cpanminus
Jetzt können benötigte Perl-Module eifach nachinstalliert werden
Die werden für normalen betrieb von FHEM benötigt:
cpanm Net::SSLeay cpanm IO::Socket::SSL cpanm --verbose Device::SerialPort cpanm IO::Uncompress::Gunzip cpanm HTTP::Request::Common
und die für DbLog:
cpanm DBI cpanm Class::DBI::SQLite