Signiertes APT Repository erstellen: Unterschied zwischen den Versionen

Aus Gemini-Wiki
Wechseln zu: Navigation, Suche
 
(5 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 3: Zeile 3:
 
  |[[Bild:english.png]] - [[Create Signed APT repository|in English]]
 
  |[[Bild:english.png]] - [[Create Signed APT repository|in English]]
 
  |}
 
  |}
 +
{{Baustelle|An diesem Artikel wird derzeit gearbeitet. Achtung: Der Artikel kann unvollständig und fehlerhaft sein!}}
 +
 
{{Achtung| Dieser Artikel erfordert mehr Erfahrung im Umgang mit der Dreambox / Linux und ist daher nur für fortgeschrittene Benutzer gedacht.}}
 
{{Achtung| Dieser Artikel erfordert mehr Erfahrung im Umgang mit der Dreambox / Linux und ist daher nur für fortgeschrittene Benutzer gedacht.}}
  
Wenn jemand erfolgreich ein Dreambox SDK eingerichtet hat, z.B. für [[OE 2.2]], dann ist dieser Artikel sicherlich interessant. Er beschreibt das einrichten eines signierten [[APT]] Repositories. So könnt ihr eure gebauten Pakete via Paketverwaltung (APT) der Dreambox installieren.
+
Wenn jemand erfolgreich ein [[Images erstellen und Programme kompilieren unter OE 2.2|Dreambox SDK]] eingerichtet hat, z.B. für [[OE 2.2]], dann ist dieser Artikel sicherlich interessant. Er beschreibt das einrichten eines signierten [[APT]] Repositories. So könnt ihr eure gebauten Pakete via Paketverwaltung (APT) der Dreambox installieren.
  
Basis des hier beschriebenen Artikels ist eine DEB basierende Distribution (z.B. Ubuntu, Mint, Debian, usw.) die auch eurem Rechner mit dem Dreambox SDK läuft. Eine Webserver brauchen wir auch, welcher die Daten für die Dreambox bereitstellen wird.
+
Basis des hier beschriebenen Artikels ist eine DEB basierende Distribution (z.B. Ubuntu, Mint, Debian, usw.) die auf eurem Rechner mit dem Dreambox SDK läuft. Eine Webserver brauchen wir auch, welcher die Daten für die Dreambox bereitstellen wird.
  
 
== Repository erstellen ==
 
== Repository erstellen ==
Zeile 29: Zeile 31:
  
 
==== Public Key exportieren/speichern ====
 
==== Public Key exportieren/speichern ====
Erstellt nun den Öffentlichen Schlüssel mit dem folgenden Befehl und speicher die Ausgabe in eine Datei (z.B. <code>mein_public.key</code>). Der Schlüssel muss im root Verzeichnis des Webservers platziert werden und wird später von den Client-Dreamboxen geladen, damit Pakete installiert werden können.
+
Erstellt nun den Öffentlichen Schlüssel mit dem folgenden Befehl. Der Schlüssel (<code>keyFile.key</code>) muss im root Verzeichnis des Webservers platziert werden und wird später von den Client-Dreamboxen geladen, damit Pakete installiert werden können.  
 
<syntaxhighlight>
 
<syntaxhighlight>
gpg --output keyFile --armor --export eureid_oder_name
+
gpg --output keyFile.key --armor --export eureid_oder_name
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Zeile 74: Zeile 76:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
root@dm8000:~# cat /etc/apt/sources.list.d/all-feed.list  
 
root@dm8000:~# cat /etc/apt/sources.list.d/all-feed.list  
deb http://1server_ip/repository/dm8000/all ./
+
deb http://server_ip/repository/dm8000/all ./
 
root@dm8000:~# cat /etc/apt/sources.list.d/dm8000-feed.list  
 
root@dm8000:~# cat /etc/apt/sources.list.d/dm8000-feed.list  
 
deb http://server_ip/repository/dm8000/dm8000 ./
 
deb http://server_ip/repository/dm8000/dm8000 ./
Zeile 88: Zeile 90:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Anschliessend könnt ihr die verfügbaren Pakete vom Feed installieren, usw.
 
Anschliessend könnt ihr die verfügbaren Pakete vom Feed installieren, usw.
 
== Tipps & Tricks ==
 
=== Script zum Erstellen eines signierten Repositories ===
 
{{Achtung| Dieser Abschnitt ist ein Beispiel, wie ein signiertes Repsitory erstellt werden kann.}}
 
Am einfachstes ist es sicherlich ein Script zu erstellen, welches die Daten für ein Repository der Dreambox bereitstellt. Z.B kann ein solches Script wie folgt ausschauen, um die einzelnen Schritte zeigen. Ist aber nicht zum Copy & Pasten empfohlen, und dient nur als grobe Vorlage für das erstellen eines Repos für die Dreambox.
 
<syntaxhighlight>
 
#!/bin/bash
 
#Webserver dirs erstellen
 
mkdir -p /var/www/html/repository/dm8000/{all,dm8000,mips32el}
 
 
#Pakete nach webserver dir kopieren
 
cp -u /media/oe/oe2.2/opendreambox/build/dm8000/tmp-eglibc/deploy/deb/all/* /var/www/html/repository/dm8000/all
 
cp -u /media/oe/oe2.2/opendreambox/build/dm8000/tmp-eglibc/deploy/deb/dm8000/* /var/www/html/repository/dm8000/dm8000
 
cp -u /media/oe/oe2.2/opendreambox/build/dm8000/tmp-eglibc/deploy/deb/mips32el/* /var/www/html/repository/dm8000/mips32el
 
 
#Pakete signieren
 
dpkg-sig -s -p builder /var/www/html/repository/dm8000/all/*.deb
 
dpkg-sig -s -p builder /var/www/html/repository/dm8000/dm8000/*.deb --batch
 
dpkg-sig -s -p builder /var/www/html/repository/dm8000/mips32el/*.deb --batch
 
 
#Alte Sachen entfernen
 
rm -f /var/www/html/repository/dm8000/all/Packages Packages.gz Packages.xz Release.gpg
 
rm -f /var/www/html/repository/dm8000/dm8000/Packages Packages.gz Packages.xz Release.gpg
 
rm -f /var/www/html/repository/dm8000/mips32el/Packages Packages.gz Packages.xz Release.gpg
 
 
#Indexen
 
dpkg-scanpackages -t deb /var/www/html/repository/dm8000/all/ ./ | tee Packages | gzip -9c > Packages.gz
 
dpkg-scanpackages -t deb /var/www/html/repository/dm8000/dm8000/ ./ | tee Packages | gzip -9c > Packages.gz
 
dpkg-scanpackages -t deb /var/www/html/repository/dm8000/mips32el/ ./ | tee Packages | gzip -9c > Packages.gz
 
 
#Indexen
 
cd /var/www/html/repository/dm8000/all && apt-ftparchive packages . &gt; Packages && gzip -c Packages &gt; Packages.gz
 
cd /var/www/html/repository/dm8000/dm8000 && apt-ftparchive packages . &gt; Packages && gzip -c Packages &gt; Packages.gz
 
cd /var/www/html/repository/dm8000/mips32el && apt-ftparchive packages . &gt; Packages && gzip -c Packages &gt; Packages.gz
 
 
#Repo signieren
 
cd /var/www/html/repository/dm8000/all && apt-ftparchive release . &gt; Release && gpg --clearsign -o InRelease Release && gpg -abs -o Release.gpg Release
 
cd /var/www/html/repository/dm8000/dm8000 && apt-ftparchive release . &gt; Release && gpg --clearsign -o InRelease Release && gpg -abs -o Release.gpg Release
 
cd /var/www/html/repository/dm8000/mips32el && apt-ftparchive release . &gt; Release && gpg --clearsign -o InRelease Release && gpg -abs -o Release.gpg Release
 
</syntaxhighlight>
 
  
 
== Weblinks==
 
== Weblinks==

Aktuelle Version vom 7. Oktober 2014, 21:04 Uhr

Deutsch.png - in Deutsch English.png - in English
Baustelle.png An diesem Artikel wird derzeit gearbeitet. Achtung: Der Artikel kann unvollständig und fehlerhaft sein!
Ambox attention.png Dieser Artikel erfordert mehr Erfahrung im Umgang mit der Dreambox / Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Wenn jemand erfolgreich ein Dreambox SDK eingerichtet hat, z.B. für OE 2.2, dann ist dieser Artikel sicherlich interessant. Er beschreibt das einrichten eines signierten APT Repositories. So könnt ihr eure gebauten Pakete via Paketverwaltung (APT) der Dreambox installieren.

Basis des hier beschriebenen Artikels ist eine DEB basierende Distribution (z.B. Ubuntu, Mint, Debian, usw.) die auf eurem Rechner mit dem Dreambox SDK läuft. Eine Webserver brauchen wir auch, welcher die Daten für die Dreambox bereitstellen wird.

Inhaltsverzeichnis

Repository erstellen

Abhängigkeiten installieren

sudo apt-get install dpkg-dev apache2 dpkg-sig

GPG Schlüssel erstellen

Jetzt erstellen wir einen GPG Schlüssel für das signieren der Pakete und des Repositories.

 gpg --gen-key

Die einzelnen Abfragen werde ich hier nicht genauer beschreiben. Funktioniert mit den Standard Abfragen. Gebt am Schluss eine Passphrase ein und wartet bis das erzeugen erfolgreich abgeschlossen ist. Einfach geduldig sein und mit der Maus / Keyboard ein bisschen herumfuchteln.

Abfragen des Schlüssels

Informationen über den erstellen Schlüssel könnt ihr mit folgendem Befehl abfragen.

gpg --list-keys

Public Key exportieren/speichern

Erstellt nun den Öffentlichen Schlüssel mit dem folgenden Befehl. Der Schlüssel (keyFile.key) muss im root Verzeichnis des Webservers platziert werden und wird später von den Client-Dreamboxen geladen, damit Pakete installiert werden können.

gpg --output keyFile.key --armor --export eureid_oder_name

Webserver einrichten

Die Dateistruktur des Webservers habe ich wie folgt eingerichtet für eine DM 8000 HD PVR. Beim Erstellen der Pakete via Dreambox SDK erhält man z.B folgende Verzeichnisse all, dm8000, mips32el. So habe ich hier unter dem vorkonfiguriertem Webroot Verzeichnis des Webservers die Pakete abgelegt. Z.B. unter:

/var/www/html/repository/dm8000/all
/var/www/html/repository/dm8000/dm8000
/var/www/html/repository/dm8000/mip32el

Pakete signieren

Die Pakete in den Verzeichnissen könnt ihr mit dem folgenden Befehl signieren.

dpkg-sig --sign *.deb

Repository Index-Dateien erzeugen

Erstellt mit den folgenden Befehlen die benötigte Packages Index-Datei und komprimiert sie. Eine unkomprimierte Datei muss auch enthalten sein.

apt-ftparchive packages . &gt; Packages
gzip -c Packages &gt; Packages.gz

Release, InRelease, and Release.gpg Datei erstellen

Release Dateien erstellen.

apt-ftparchive release . &gt; Release
gpg --clearsign -o InRelease Release
gpg -abs -o Release.gpg Release

Dreambox einrichten

Public Key imporieren

Auf der Dreambox muss der Öffentliche Schlüssel importiert werden mit dem folgenden Befehl. Server Ip-Adresse und Verzeichniss muss sicherlich angepasst werden.

wget -O - http://server_ip/mein_public.key | apt-key add -

Paketlisten anpassen

Nun müsst ihr auf der Dreambox im Verzeichnis /etc/apt/sources.list drei Dateien erstellen für die verfügbaren Feeds (z.B. all, dm8000, mips32el). Die folgenden Befehlen zeigen den Inhalt der Dateien.

root@dm8000:~# cat /etc/apt/sources.list.d/all-feed.list 
deb http://server_ip/repository/dm8000/all ./
root@dm8000:~# cat /etc/apt/sources.list.d/dm8000-feed.list 
deb http://server_ip/repository/dm8000/dm8000 ./
root@dm8000:~# cat /etc/apt/sources.list.d/mips32el-feed.list 
deb http://server_ip/repository/dm8000/mips32el ./
root@dm8000:~#

Paketliste aktualisieren / Pakete installieren

Ist alles eingerichtet könnt ihr von der Dreambox die Paketlisten aktualisieren mit dem Befehl:

apt-get update

Anschliessend könnt ihr die verfügbaren Pakete vom Feed installieren, usw.

Weblinks