Subversion auf Fritzbox

Gerne doch :)

Tja, bis ich es hin bekommen hab, sind einige Tage vergangen. Denn eigentlich hab ich mit Kompilern unter Linux nicht viel am Hut (eher Windoof) Und dann noch Cross-Compilen...

Deine Vermutung ist aber richtig, ich nutze die Toolchain von Freetz. Dann hab ich ein paar configure-Scripts erstellt, in denen die Parameter (hoffentlich) richtig gesetzt werden. Hab leider meine VMs schon runter gefahren, aber ich werde das ganze mal zusammen packen mit einer kleinen Anleitung. Wenn sich da findige Leute mal dran setzen, wird das ganze hoffentlich mal ein Paket in Freetz ;)
 
das freut mich aber, dann werde ich mir das sicher mal anschauen und vielleicht mein 2. paket basteln mit deiner hilfe ;)
Das kreigen wir schon hin :)
 
Sooo, hab es mal zusammen gepackt ;) Hier also mal eine Anleitung, wie ich SVN 1.5.3 kompiliert hab. Als Umgebung hab ich ein StinkyLinux in einer VM am laufen. Darin hab ich bereits schonmal Freetz kompiliert, daher ist also auch die Toolchain vorhanden.

Hier also die nötigen Schritte:

1. Subversion Sourcecode besorgen
Hier werden die folgenden Dateien benötigt:
Code:
subversion-1.5.3.tar.bz2
subversion-deps-1.5.3.tar.bz2
Beide werden entpackt, worauf es ein Verzeichnis subversion-1.5.3 gibt. Bin schreibfaul, deshalb im Folgenden "svn" ;)

2. configure Scripts
Ich hab ein paar Shell-Scripts erstellt, die zunächst ein paar Variablen setzen und dann das eigentliche configure-Script aufrufen.
Code:
configure-zlib (gehört ins svn/zlib/ dir)
configure-apr (gehört ins svn/apr/ dir)
configure-apr-util (gehört ins svn/apr-util/ dir)
configure-subversion (gehört direkt ins svn/ dir)
In den Scripts muss jeweils der Pfad zum Compiler sowie zum Zielordner angepasst werden!

3. zlib kompilieren
Ins svn/zlib/ Verzeichnis wechseln und dann
Code:
./configure-zlib
make
make install

4. apr kompilieren
Ins svn/apr/ Verzeichnis wechseln und dann
Code:
./configure-apr
make
make install

5. apr-utils kompilieren
Ins svn/apr-util/ Verzeichnis wechseln und dann
Code:
./configure-apr-util
make
make install

6. Subversion kompilieren
Ins svn/ Verzeichnis wechseln und dann
Code:
./configure-subversion
make
make install

Im Zielordner finden sich nun die verschiedenen Binaries. Sie beinhalten nur FSFS, keine BerkleyDB. Auch sind noch verschiedene andere Dinge nicht mit einkompiliert. Ein wichtiger Parameter ist das setzen von --with-devrandom auf /dev/urandom (apr), wie in diesem Thread irgendwo erwähnt. Ob alle anderen Parameter tatsächlich nötig und korrekt sind, kann ich leider nicht genau sagen. Aber diese Community hier wird's schon richten :)

Auf ein gutes Gelingen! Ich wäre begeistert, wenn es bald den Weg ins Freetz findet, vielleicht mit ein paar Konfigurationsmöglichkeiten (da kann man sich sicher viel ausdenken).

Markus

Nachtrag:
Hab ich vergessen zu erwähnen, ganz am Ende läuft das make (von svn) auf einen Fehler. Das ist aber ok, da versucht das Script wohl eine der kompilierten Binaries zu starten - was natürlich nicht geht.
 

Anhänge

  • configure-scripts.zip
    2.4 KB · Aufrufe: 58
... Für verschlüsselten zugriff benutze ich svn+ssh://, aber dafür brauchts auf jeden Fall freetz...

Hallo HAL,

du sagst, bei dir lief es mit ssh?
Ich hab es mit der 1.5.3 Version geschafft, ohne ssh problemlos svn zu nutzen, auch mit Daten bis 10MB, größer hab ich noch nicht versucht.
Mit ssh läuft es bei mir einfach nicht, ich sitze schon den ganzen Tag daran. Kann auch leider nichts im Internet finden was mir hierbei helfen könnte.
Das Problem ist, wenn ich es folgendermaßen eingebe: svn+ssh://...
Dann kommt folgender Fehler:
Code:
palsch@xxxxxx:~$ svn list svn+ssh://192.168.178.1 /var/media/ftp/uStor01/FritzBox/svn/svnserve
[email protected]'s password: 
[COLOR="DarkRed"]sh: svnserve: not found
svn: Netzwerkverbindung wurde unerwartet geschlossen[/COLOR]

Ich habe schon versucht eine Symbolic Link von svnserve im "/mod/sbin" verzeichnis zu erstellen, da dieses Verzeichnis in der PATH-Variable gespeichert ist. Und es funktioniert auch, wenn ich mich erst mit ssh an die FritzBox verbinde und dann einfach "svnserve" eingebe. Der findet es sofort. Aber wie gesagt leider nicht direkt mit "svn+ssh://..."

Weiß du oder jemand anderer vielleicht, was man da machen kann?
Und wenn ich kein "ssh" verwende, ist es dann nicht mehr sicher?

Vielleicht weiß einer wie ich in die PATH Variable permanent etwas speichern kann, denn das konnte ich auch nicht rausfinden. Wenn ich das eingebe:
Code:
export PATH=/var/media/ftp/uStor01/FritzBox/svn:$PATH
Dann wird es zwar in die PATH Variable eingetragen, aber wenn ich mich auslogge und wieder einlogge, ist die PATH Variable wieder im Urzustand.

ansonsten super Arbeit,
die FritzBox gefällt mir von Tag zu Tag besser, mit all diesen Möglichkeiten die solche Leute wie Ihr es ermöglicht.

@oidia: Danke für das aktuelle svn
 
Am ssh habe ich zuerst auch eine Weile gesessen. Afaik verbindet der svn-client über ssh und führt auf der Konsole svnserve aus. Das Kommando wird einfach als "svnserve" gesendet, d.h. er muss das Binary im PATH finden. Warum er das bei dir nicht tut weiß ich ehrlich gesagt nicht. Ich habe das so gelöst, dass ich über freetz einen symlink in /usr/bin eingefügt habe. Das eigentliche Binary liegt auf einem USB-Stick und der symlink zeigt drauf. /mod/sbin müsste eigentlich genauso gehen. Müsste...
 
...dass ich über freetz einen symlink in /usr/bin eingefügt habe. Das eigentliche Binary liegt auf einem USB-Stick und der symlink zeigt drauf. /mod/sbin müsste eigentlich genauso gehen. Müsste...

Ja das ist schon komische Sache, wie hast du es geschaft in /usr/bin ein Symlink zu erstellen? bei mir kommt die Meldung:
ln: /usr/bin/svnserve: Read-only file system

ich habe einfach folgendes eingegeben:
ln -s /var/media/ftp/uStor01/FritzBox/svn/svnserve /usr/bin

oder meinst du es geht irgendwie über Freetz anders oder so?

Ist es den sehr unsicher ohne SSH svn zu benutzen?
 
Sicherheit ist relativ :)

Es kommt darauf an, wie du svn nutzen möchtest. Wenn du allen Nutzern im internen Netz vertraust und auch nur von intern auf svn zugreifen möchtest, dann brauchst du kein SSH. Wenn du auf dein svn repository auch aus dem Internet heraus zugreifen möchtest, dann solltest du natürlich irgendwelche Sicherheitsmaßnahmen einrichten. Es sei denn, du möchtest es für allezugänglich machen ;)

Ich persönlich nutze kein SSH für interne Zwecke. Auf meiner FB läuft noch Dropbear, ein SSH Server, über den ich mich von Außen an meine FB verbinden kann. Und da tunnel ich dann ggf. die svn Zugriffe und damit ist's auch sicher.
 
Am ssh habe ich zuerst auch eine Weile gesessen. Afaik verbindet der svn-client über ssh und führt auf der Konsole svnserve aus. Das Kommando wird einfach als "svnserve" gesendet, d.h. er muss das Binary im PATH finden. Warum er das bei dir nicht tut weiß ich ehrlich gesagt nicht. Ich habe das so gelöst, dass ich über freetz einen symlink in /usr/bin eingefügt habe. Das eigentliche Binary liegt auf einem USB-Stick und der symlink zeigt drauf. /mod/sbin müsste eigentlich genauso gehen. Müsste...

Mich würde auch interrisieren wie symbolische links mit freetz anzulegen sind.
Ich habe freetz und folgender Befehl klappt nicht.

ln -s /var/media/ftp/uStor01/svn/svnserve /usr/bin
ln: /usr/sbin/svnserve: Read-only file system

Oder wird vor dem kompilieren von Freetz der Symbolischer Link angelegt? Wenn ja wie?

Danke
 
Einfach auf die Box gehen und einen Symlink anlegen geht nicht, das stimmt. Du must den Link beim compilieren in dein Freetz-Image einbauen und dieses dann auf die Box laden. Genauer gesagt habe ich im freetz-ordner (auf meinem PC) unter root/usr/bin einen Link angelegt, der auf den Pfad zeigt, unter dem svnserve später auf der Box zu finden ist. Das linkziel gibt es in dem Fall natürlich nicht auf deinem PC, allerdings wird der Link 1:1 auf die Box übernommen. Generell kannst du irgendwo unter root/ Dateien hinlegen. Diese werden dann in das nächste freetz-Image, das du baust, übernommen.
 
Sicherheit ist relativ :)...

Ja, ich hatte eigentlich schon vor auf SVN von Internet aus zuzugreifen.
Dropbear hab ich auch, und es läuft super bei mir. Nur wie schon gesagt, findet er svnserve nicht wenn ich ihn ohne den Pfad dazu aufrufe. Ich werde dann mal wie HAL sagt, freetz neu erstellen mit dem Symlink, mal schauen ob es was bringt.

PS: Was mir gerade noch einfällt ist, kann ich irgendwie beim einstellen von Freetz die PATH Variable erweitern? Das wäre wahrscheinlich noch besser als einen Symlink auf eine spezielle Datei zu erstellen, da ich dann meinen Ordner auf dem USB Stick in die Path Variable eintragen würde, und somit alle Programme die sich dort befinden wären einfach aufrufbar. Dann müßte man auch nicht jedesmal bei einem neuen Programm das man einfach auf den USB Stick kopiert, den Freetzmod neu compilieren.

Edit:
So hab es jetzt geschaft, dass mein svnserve gefunden wird mit Hilfe von dem Symlink in "root/usr/bin" beim Compilieren von Freetz. Danke HAL!
Was man hier nicht vergessen darf ist, dass man im gegensatz zu "svn://host"
den vollständigen Pfad zum Repository eingeben muss, und der svnserve Daemon nicht ständig laufen muss, weil er nur bei aktivität von ssh gestartet wird. (svn+ssh://host/var/media/ftp/..../repository/)

Jetzt hab ich aber ein anderes Problem. Wenn ich einen anderen User als "root" benutze, dann bekomme ich ein Fehler: "svn: Authorization failed" mit "root" funktioniert es. Mit anderen Usern kann ich ohne Probleme über ssh auf die Fritzbox zugreifen, und dort auch Dateien anlegen usw. also alles was auch root kann. Ich hab schon alles ausprobiert, aber es klappt nicht. Das einzige was bringt ist, wenn ich in der Datei "authz" aus dem Repository folgendes eintrage:
Code:
[/]
* = rw
Also sozusagen allem den Zugriff auf alles Erlauben.
Falls jemand weiß, wie man es besser machen kann, dann bitte sagen.
Ansonsten werde ich wohl damit weiter leben müssen.

Also, danke nochmal allen, bis dann
 
Zuletzt bearbeitet:
Das kannst du über einen Patch in freetz erreichen. Entweder im freetz-ordner unter patches/ einen neuen erstellen, oder (das hab ich gemacht, aber für was anderes), die Datei 100-profile.patch modifizieren. in 100-profile.patch gibt es schon eine Zeile, die den PATH setzt, das kannst du einfach deinen Bedürfnissen anpassen. Die Änderung landet auf deiner Box in der Datei /etc/profile (bzw. da muss sie hin wenn du einen neuen Patch erstellst).
 
hallo!

kann mir bitte jemand sagen wie der Benutzer angelegt werden soll damit svn+ssh non-root funktionieren kann?

so sieht der eintrag in /etc/passwd zum dem user aus:
Code:
seek:x:2:2:Linux User,,,:/home/seek:/bin/sh

so ist der eintrag in /etc/group zu der Grouppe svnusers
Code:
svnusers:x:2:

einloggen mit dem user seek scheitert. da kommt die Fehlermeldung:

Code:
login: cannot run /bin/sh: Permission denied

svn+ssh spuckt folgende Fehlermeldung aus:

Code:
svn: Netzwerkverbindung wurde unerwartet geschlossen

ich habe auch /etc/passwd geändert und anstatt /bin/sh /bin/false eingegeben. klappte auch nicht. Was mache ich den falsch? Bitte dringend um hilfe!

Danke schon im voraus.
 
...kann mir bitte jemand sagen wie der Benutzer angelegt werden soll damit svn+ssh non-root funktionieren kann?
...

Das funktioniert nicht, hab ich auch erst beim suchen danach, erfahren. Leider wurde dropbear nur auf root zugang beschränkt. Also entweder root, oder garnicht. Das finde ich auch schade, vielleicht gibt es einen anderen dropbear, der das kann, aber der von Freetz mod kann das nicht.
Dropbear ist ein SSH Server und Client + SCP. Es gibt zwei Pakete: dropbear Server, Client und scp und ein auf den dropbear Server beschränktes Paket. Dropbear wurde so modifiziert, dass nur root Logins erlaubt sind.
Quelle: http://wiki.ip-phone-forum.de/software:ds-mod:pakete:dropbear

PS. Danke HAL, werde es mal bei Gelegenheit ausprobieren, im Moment ist keine Zeit dafür, die Hauptsache ist, dass svn funktioniert, auch ohne ssh.
 
auch der dropbear aus freetz kann dass, er wurde nur so gepatch, dass er das nicht soll, wenn ihr euch gerne mit anderen usern einloggen wollt, dann müsste ihr den patch:
Code:
<freetz-dir>/make/dropbear/patches/100-root-login-only.patch
einfach löschen und dann noch ein
Code:
make dropbear-dirclean && make
machen, dann geht das auch :)
 
auch der dropbear aus freetz kann dass, er wurde nur so gepatch, dass er das nicht soll, wenn ihr euch gerne mit anderen usern einloggen wollt, dann müsste ihr den patch:
Code:
<freetz-dir>/make/dropbear/patches/100-root-login-only.patch
einfach löschen und dann noch ein
Code:
make dropbear-dirclean && make
machen, dann geht das auch :)


genauso hab ich es gemacht. Mein Problem kommt nicht von dropbear, weil ich kann mich in dem shell mit dem befehl login also ohne ssh auch nicht einloggen. Da kommt die Fehlermeldung Permission denied.

Deswegen würde ich wissen wie der Eintrag zu dem neu angelegten User in /etc/passwd stehen soll.
 
...
Code:
<freetz-dir>/make/dropbear/patches/100-root-login-only.patch
einfach löschen und dann noch ein
Code:
make dropbear-dirclean && make
machen, dann geht das auch :)

Aha, schon wieder was neues dazu gelernt, werde mal ausprobieren, danke.
 
@seek:
Was meinst du mit wie soll der Eintrag zu dem User in der passwd stehen?

Wie sieht denn deine /etc/passwd und dein /etc/shadow aus? (Beim posten die passwörter und persönlichen sachen XXXen)
Wie hast du den User hinzugefügt?
Hast du seit dem die Box rebootet?
Leider wird die passwd von avm manchmal überschrieben, dazu gibt es ein ticket, existiert denn der User?
 
den user habe ich angelegt durch

Code:
echo seek:x:0:0:seek:/var/root:/bin/sh >> /etc/passwd

da der Patch libfreetz bei mir nicht funktioniert hat.

Siehe bitte dazu mein Eintrag
 
Danke oidia!
 
Kein Problem. Da noch keine Rückfragen bzgl. der Kompilierung gekommen sind, gehe ich mal einfach davon aus, das es überall funktioniert :p

Ist schon jemand fleißig, ein Freetz Paket zu schnüren? Kanns kaum erwarten ;-)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.