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