Cpan auf Fritzbox
CPAN (Comprehensive Perl Archive Network) ist ein Online Repository für Perl-Module. Um dieses Repository nutzen zu können, wird üblicherweise das CPAN-Modul benutzt. Für die Benutzung von CPAN auf der FritzBox wird im Folgenden die Shell Cpanminus verwendet.
CPANMINUS
Mit Cpanminus können die meisten Perl-Pakete auf der FritzBox 7390 installiert werden (z.B. DBI, das für DbLog benötigt wird). Dadurch umgeht man die oft störenden 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 die Mips-Architektur bereitstellt, nachzuinstallieren.
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 sollten ausreichen.
Installationsablauf
Benötigte Pakete herunterladen
Die für die Installation benötigten Pakete werden von debian.org 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
Empfohlenes Werkzeug zum Entpacken: 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.
Entpackte Pakete auf die Fritzbox kopieren
Die Fritzbox mit dem Befehl sshfs 192.168.0.1:/ /mnt/fritz.box
"mounten". Wenn die Fritzbox vor dem Entpacken gemountet wurde, kann auch direkt auf die Fritzbox entpackt werden.
Symlink löschen
Falls miniperl installiert ist, muss ein symbolischer Link wie folgt gelöscht werden:
rm /usr/bin/perl
Pakete in entsprechende Verzeichnisse 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 installieren:
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
Benötigte Perl-Module nachinstallieren
Die folgenden, für normalen Betrieb von FHEM benötigten Module können jetzt nachinstalliert werden
cpanm Net::SSLeay
cpanm IO::Socket::SSL
cpanm --verbose Device::SerialPort
cpanm IO::Uncompress::Gunzip
cpanm HTTP::Request::Common
Module für DbLog:
cpanm DBI
cpanm Class::DBI::SQLite
Weblinks
- debian.org
- App:cpanminus
- MidnightCommander - freier Norton Commander Clone (Dateimanager)