0B 40
[krt-msg] / 2016-04-30T15:06:38Z.msg
1 From: Boris Kraut <krt@nurfuerspam.de>
2 To: undisclosed-recipients: ;
3 Date: Sat, 30 Apr 2016 17:06:38 +0200
4 Message-ID: <20160430170638.Vmuscy@ubuntu.local>
5 Reply-To: Boris Kraut <krt@nurfuerspam.de>
6 Subject: [.plan] F-Droid Binary Repo
7
8 Es ist schon fast beschaemend, dass jemand der doch shcon relativ viel Zeit in
9 das F-Droid Projekt gesteckt hat, noch nie ein eigenes Repo betrieben hat --
10 dabei hatte ich schon einige Ideen, was man denn in so einem unoffiziellen
11 Repo veroeffentlichen koennte: Entwicklungs-Schnappschuesse, "tainted builds"
12 (Apps die nicht-freie Abhaengigkeiten wie Google's play-services oder Crash-
13 lytics nutzen), oder offizielle Binaries (vom jeweiligen Upstream-Entwickler
14 signiert). Und jedes mal, wenn im IRC Fragen dazu aufkamen, musste ich passen,
15 an andere Entwickler verweisen oder ein "ja, muesste man mal tun" los werden.
16
17 Nach einer kurzen Diskussion, habe ich mir dann doch endlich mal ein Herz ge-
18 fasst und mir die Doku durchgelesen -- eigentlich nur 2-3 Absaetze -- und das
19 umgesetzt. Das schoene ist, dass F-Droid eigentlich nur einen normalen Web-
20 Server braucht. Was aus einem Webserver ein F-Droid-Repo macht, sind die APKs
21 und ein paar Metadaten. Letztere werrden vom `fdroid` Tool des eigentlichen
22 fdroidserver-Pakets vorausgefuellt, genauso wie man sich einen Signier-
23 Schluessel fuer den Index erzeugen lassen kann. Sind alle Abhaengigkeiten
24 installiert, sieht der Verlauf ungefaehr so aus:
25
26 $ git clone https://gitlab.com/fdroid/fdroidserver.git
27 $ mkdir -p binaryrepo/{metadata,repo}
28 $ cp fdroidserver/examples/config.py binaryrepo/
29 $ cp whatever.apk binaryrepo/repo/
30 $ cd binaryrepo
31 $ vim config.py
32 $ ../fdroidserver/fdroid update --create-key
33 $ ../fdroidserver/fdroid update -c
34
35 Die Metadaten koennen mit einem beliebigen Texteditor veraendert werden. Ob
36 die Aenderungen erlaubt sind, sagt einem `fdroid lint -f` und etwaige Fehler
37 lassen sich haeufig mit `fdroid rewritemeta package.id` automatisch beheben.
38
39 Nach jeder Aenderung oder neuen App muss `fdroid udpate` ein weiteres Mal
40 ausgefuehrt werden, um den Index zu aktualisieren. Ausserdem muessen -- wie
41 ich eingangs erwaehnt habe -- die noetigen Dateien auf einen "normalen" Web-
42 server kopiert werden: Einfach das komplette `repo` Verzeichnis irgendwo
43 hochladen -- fertig. Ich habe dazu kurzerhand GitHubs Homepoage-Hosting
44 verwendet. Wer will kann also im F-Droid-Client folgende Quelle hinzufuegen,
45 um (derzeit) den aktuellen Firefox vorzufinden: https://krt16s.github.io/repo/
46
47 Zum aktualisieren des Repos nutze ich folgendes Skript [0]:
48
49 $ cd repo
50 $ wget -O firefox_arm.apk -c "https://download.mozilla.org/?product=fennec-latest&os=android&lang=multi"
51 $ wget -O firefox_x86.apk -c "https://download.mozilla.org/?product=fennec-latest&os=android-x86&lang=multi"
52 $ cd ..
53 $ ~/tmp/fdroid/fdroidserver/fdroid update -c
54 $ git add -f repo/*
55 $ git commit -m "Update Firefox"
56 $ git push origin master
57
58
59 [0] https://github.com/krt16s/krt16s.github.io/blob/master/ffupdater.sh
60 [1] https://f-droid.org/manual/fdroid.html#Simple-Binary-Repository