Turris Omnia: Eigenes PKG Repo

Für Turris OS ≥ 3.9

Alle gewünschten .ipk Dateien irgendwo lokal speichern und dann mit

localrepo add /pfad/zum/package.ipk

zum lokalen Repo hinzufügen (es wird unter /usr/share/updater/localrepo abgelegt). Danach fügt man die Packages in die /etc/updater/conf.d/user.lua wie folgt ein:

/etc/updater/conf.d/user.lua
Install("package", {repository = {"localrepo-user"}})

Lokales Repo für Turris OS < 3.9

  1. Ein Verzeichnis erstellen in dem die Pakete liegen, z.B. /srv/repo.
  2. Die gewünschten Pakete (.ipk Dateien) dort ablegen.
  3. Die Datei ipkg-make-index.sh ins gleiche Verzeichnis.
  4. Ein wrapper script namens makeindex.sh erstellen und ausführbar setzen:
    cat makeindex.sh <<EOF #!/bin/sh DIR="/root/repo" cd "$DIR" sh ./ipkg-make-index.sh . | gzip > Packages.gz EOF chmod +x makeindex.sh
  5. Das wrapper script muss jedes Mal aufgerufen werden, wenn Pakete im Verzeichnis hinzugefügt/entfernt/geändert werden.
  6. Eine respository definiton in die Datei /etc/updater/user.lua aufnehmen, zusammen mit den Installationsbefehlen für die gewünschten Pakete:
    /etc/updater/user.lua
    Repository("local","file:///srv/repo", {verification = "none"}) Install("myownpackage")
  7. Das script pkgupdate (Ältere Versionen: updater.sh) aufrufen. Es sollte das neue Repository erkennen und alle gewünschten Pakete installieren.

Remote Repo für Turris OS < 3.9

Im Grunde gleich wie oben, empfehlenswert ist hier aber Signaturen zu erzwingen:

/etc/updater/conf.d/user.lua
Repository("meinrepo","http://meinserver.domain/repo", {verification="sig", ocsp=false, pubkey="file:///etc/updater/keys/blip.key"}) Install("myownpackage")

oder (mit dem public key embedded - bitte das Komma und %0a beachten)

/etc/updater/conf.d/user.lua
Repository("meinrepo","http://meinserver.domain/repo", {verification="sig", ocsp=false, pubkey="data:,%0aRWQ2DdeqFY/T86Cv/TRXnKq9hEZOYFQaTGmGIgHpc3fJZ/uo1nz+CZwk"}) Install("myownpackage")

Siehe auch die Dokumentation des Updaters.

Signaturen

Um die Datei Packages.gz zu signieren, wird das Tool usign verwendet. Den Source dazu findet man auf git.openwrt.org

usign -S -m Packages -s /pfad/zu/mein_secret.key

Es wird die ungepackte Datei Packages signiert, erst danach die Packages.gz erstellt.