Entwicklerhandbuch/Paketverwaltung: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(→‎Konfiguration: die source.list.d-Einträge für das lokale und das offz. Repository)
(Kat)
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Hi Leute,
{{EditStatus|2|ThorstenStrusch}}


ich habe mich gestern Abend mit den drei Paketen dput, mini-dinstall
und svn-buildpackage beschäftigt.


= Einführung =
== Paketverwaltung mit dput, mini-dinstall und svn-buildpackage ==
=== Einführung ===
 
Installiere auf deinem debian/lenny Rechner die entsprechenden Pakete mit den folgenden Befehl:
Installiere auf deinem debian/lenny Rechner die entsprechenden Pakete mit den folgenden Befehl:


Zeile 12: Zeile 12:


Arbeitest du unter gnome:
Arbeitest du unter gnome:
<source lang="bash">
<source lang="bash">
   aptitude install ssh-askpass-gnome
   aptitude install ssh-askpass-gnome
</source>
</source>
Arbeitest du unter kde:
Arbeitest du unter kde:
<source lang="bash">
<source lang="bash">
   aptitude install ssh-askpass
   aptitude install ssh-askpass
</source>
</source>


== svn-buildpackage ==
 
=== svn-buildpackage ===
 
Mit svn-buildpackage hast du die Möglichkeit debian Pakete
Mit svn-buildpackage hast du die Möglichkeit debian Pakete
(die wir im SVN vohalten) für die entspr. Architekturen zu bauen.  
(die wir im SVN vohalten) für die entspr. Architekturen zu bauen.  
Zeile 45: Zeile 50:
wie später unten beschrieben mit dem alias svn-b arbeiten.
wie später unten beschrieben mit dem alias svn-b arbeiten.


== dput ==
 
=== dput ===
 
Dieses Programm ermöglicht es die binär- und source-Pakete in ein
Dieses Programm ermöglicht es die binär- und source-Pakete in ein
debian Repository zu laden. Also auf solche 'Server', die du in der
debian Repository zu laden. Also auf solche 'Server', die du in der
Zeile 53: Zeile 60:
sind ftp,ssh/sftp und lokales Kopieren.
sind ftp,ssh/sftp und lokales Kopieren.


== mini-dinstall ==
 
=== mini-dinstall ===
 
dieses Programm erzeugt nun ein Repository mit allen Schickanen:
dieses Programm erzeugt nun ein Repository mit allen Schickanen:


Zeile 82: Zeile 91:
|      `-- Sources.gz
|      `-- Sources.gz
</source>
</source>
* unter delixs/all liegen die architekturunabhängigen binären debian-Pakete (debs)
* unter delixs/all liegen die architekturunabhängigen binären debian-Pakete (debs)
* unter delixs/amd64 liegen die binären amd64 debian-Pakete (debs)
* unter delixs/amd64 liegen die binären amd64 debian-Pakete (debs)
Zeile 87: Zeile 98:
* unter source liegen alle Versionen dieser Pakete im source-Format. Jeweils eine dsc und eine tar.gz Datei
* unter source liegen alle Versionen dieser Pakete im source-Format. Jeweils eine dsc und eine tar.gz Datei


= apt-Konfiguration =
 
== apt-Konfiguration ==
 
Um jetzt auch mit den frisch erstellten Repositories arbeiten zu können, sind zwei Dateien notwendig, die im Folgenden beschrieben werden.
Um jetzt auch mit den frisch erstellten Repositories arbeiten zu können, sind zwei Dateien notwendig, die im Folgenden beschrieben werden.


Der Ausdruck $(ARCH) bewirkt, dass apt sich die PC Architektur selbst sucht. Das delixs-Projekt unterstützt i386 und amd64.
Der Ausdruck $(ARCH) bewirkt, dass apt sich die PC Architektur selbst sucht. Das delixs-Projekt unterstützt i386 und amd64.


== lokales Repository aktivieren ==
 
=== lokales Repository aktivieren ===
 
Erstelle eine Datei /etc/apt/sources.list.d/file.list wie unten angegeben:
Erstelle eine Datei /etc/apt/sources.list.d/file.list wie unten angegeben:
<source lang="apt_sources">
<source lang="apt_sources">
cat /etc/apt/sources.list.d/file.list
cat /etc/apt/sources.list.d/file.list
deb file:/home/thorsten/public_html/debian aramec/all
deb file:/home/thorsten/public_html/debian aramec/all
deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/
deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/
deb-src file:/home/thorsten/public_html/debian aramec/source/
deb-src file:/home/thorsten/public_html/debian aramec/source/
</source>
</source>
Als root führe <code>aptitude update</code> durch und das Repository ist eingebunden und einsatzfähig.
Als root führe <code>aptitude update</code> durch und das Repository ist eingebunden und einsatzfähig.
== offizielles Repository aktivieren ==
 
 
=== offizielles Repository aktivieren ===
 
Erstelle eine Datei /etc/apt/sources.list.d/delixs.list wie unten angegeben:
 
<source lang="apt_sources">
<source lang="apt_sources">
cat /etc/apt/sources.list.d/aramec.list
cat /etc/apt/sources.list.d/aramec.list
deb file:/home/thorsten/public_html/debian aramec/all
deb file:/home/thorsten/public_html/debian aramec/all
deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/
deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/
deb-src file:/home/thorsten/public_html/debian aramec/source/
deb-src file:/home/thorsten/public_html/debian aramec/source/
</source>
</source>
Als root führe <code>aptitude update</code> durch und das Repository ist zwar eingebunden aber wegen eines noch nicht bekannten GPG-Schlüssels wird ihm nicht vertraut.
Als root führe <code>aptitude update</code> durch und das Repository ist zwar eingebunden aber wegen eines noch nicht bekannten GPG-Schlüssels wird ihm nicht vertraut.


=== gpg Schlüssel importieren ===
=== gpg Schlüssel importieren ===
'''XXX''' wird noch im Detail beschrieben
'''XXX''' wird noch im Detail beschrieben
* manuell mit wget http://deb.delixs.de/debian/keyring.asc
* manuell mit wget http://deb.delixs.de/debian/keyring.asc
* automatisch mittels aptitude install delixs-archive-keyring
* automatisch mittels aptitude install delixs-archive-keyring


= Konfiguration =


== alias svn-b ==
== Konfiguration ==
=== alias svn-b ===
 
Wenn du ein Paket bauen und hochladen möchtest, rufst du dafür i.A. svn-buildpackage auf. Folgenden alias solltest du in deine ~/.bashrc packen:
Wenn du ein Paket bauen und hochladen möchtest, rufst du dafür i.A. svn-buildpackage auf. Folgenden alias solltest du in deine ~/.bashrc packen:
<source lang="bash">
<source lang="bash">
alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore"
alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore"
</source>
</source>
Damit reicht ein '''svn-b''' zum Bauen des Pakets. Es wird dann eine Ebene höher im Order '''build-area''' liegen.
Damit reicht ein '''svn-b''' zum Bauen des Pakets. Es wird dann eine Ebene höher im Order '''build-area''' liegen.


== der Benutzer dupload ==
== der Benutzer dupload ==


== dput Konfiguration ==
=== dput Konfiguration ===
 
Mit der folgenden Konfiguration kennt dput zwei Ziele für den Paketupload
Mit der folgenden Konfiguration kennt dput zwei Ziele für den Paketupload
# local  - deinen Rechner
 
# delixs - unser offizielles delixs-Repository
  # local  - deinen Rechner
  # delixs - unser offizielles delixs-Repository


<source lang="properties">
<source lang="properties">
Zeile 144: Zeile 178:
[delixs]
[delixs]
fqdn          = deb.delixs.de
fqdn          = deb.delixs.de
method        = sftp
method        = scp
incoming      = ./
login        = dupload
incoming      = ./incoming
run_dinstall  = 0
run_dinstall  = 0
allow_unsigned_uploads = 0
allow_unsigned_uploads = 0
Zeile 151: Zeile 186:
</source>
</source>


== mini-dinstall Konfiguration ==
=== mini-dinstall Konfiguration ===
 
mini-dinstall soll mir ein Repository unter ~/public_html/delixs/ anlegen. Dafür ist folgende Konfiguration nötig:
mini-dinstall soll mir ein Repository unter ~/public_html/delixs/ anlegen. Dafür ist folgende Konfiguration nötig:


Zeile 176: Zeile 212:
</source>
</source>


==  ssh Clientkonfiguration ==
 
 
===  ssh Clientkonfiguration ===


Damit dput beim Hochladen auf den dev-server (deb.delixs.de) sich gleich mit den korrekten Einstellugnen wie dem Benutzer verbindet, leg dir die Datei ~/.ssh/config mit folgendem Inhalt an:
Damit dput beim Hochladen auf den dev-server (deb.delixs.de) sich gleich mit den korrekten Einstellugnen wie dem Benutzer verbindet, leg dir die Datei ~/.ssh/config mit folgendem Inhalt an:
<source lang="bash">
<source lang="bash">
host deb.delixs.de
host deb.delixs.de
Zeile 188: Zeile 227:
</source>
</source>


'''XXX''' Die Datei id_dsa.dupload bekommst du noch
Die Datei id_dsa.dupload bekommst du per Mail zugeschickt. Die Rechte müssen bei dem privaten key auf 0640 gesetzt werden.
Wenn der key für alle lesbar ist (z.B. 0644), dann funktioniert der Upload nicht, da der key zurückgewiesen wird.


== gpg-Schlüssel ==
=== gpg-Schlüssel ===


Wenn du Pakete auf den dev-Server lädst, muss die Release Datei mit gpg signiert werden. Ansonsten würde jeder Server, der dieses Repository nutzt, über ein unsicheres Archiv meckern.  
Wenn du Pakete auf den dev-Server lädst, muss die Release Datei mit gpg signiert werden. Ansonsten würde jeder Server, der dieses Repository nutzt, über ein unsicheres Archiv meckern.  
Zeile 196: Zeile 236:
Darum musst du dich hier nicht kümmern, das erzeugt das Programm mini-dinstall auf dem Server. Bei dir im lokalen Repository brauchst du den Aufwand nicht treiben, lokal verfügbare Release-Dateien müssen nicht signiert werden.
Darum musst du dich hier nicht kümmern, das erzeugt das Programm mini-dinstall auf dem Server. Bei dir im lokalen Repository brauchst du den Aufwand nicht treiben, lokal verfügbare Release-Dateien müssen nicht signiert werden.


= Beispiel =
 
== Beispiel ==


Nachfolgend ein Beispiel, wo ich das (nicht existierende) Paket delixs-firstrun-config
Nachfolgend ein Beispiel, wo ich das (nicht existierende) Paket delixs-firstrun-config
Zeile 249: Zeile 290:
Successfully uploaded delixs-firstrun-config_0.1-58_i386.changes to localhost.
Successfully uploaded delixs-firstrun-config_0.1-58_i386.changes to localhost.
</source>
</source>
Durch dieses logfile weis dput, dass es die Datei nicht nochmal hochladen muss, wenn du es ein zweites Mal probieren solltest.
Durch dieses logfile weis dput, dass es die Datei nicht nochmal hochladen muss, wenn du es ein zweites Mal probieren solltest.
== Weblinks ==
* [http://wiki.debianforum.de/EigenesRepository wiki.debianforum.de/EigenesRepository]
----
<div align="right">[[Entwicklerhandbuch|zurück]] | [[Hauptseite]]</div>
Thorsten Strusch 2009
[[Kategorie:Entwicklerhinweise]]

Aktuelle Version vom 17. April 2011, 09:38 Uhr

Diese Seite ist momentan eine Baustelle im Zustand: 2

Wird bearbeitet von: ThorstenStrusch
Hilfe zum Bearbeitungsstatus: Hilfe:Status eines Artikels


Paketverwaltung mit dput, mini-dinstall und svn-buildpackage

Einführung

Installiere auf deinem debian/lenny Rechner die entsprechenden Pakete mit den folgenden Befehl:

<source lang="bash">

  aptitude install dput mini-dinstall svn-buildpackage devscripts openssh-client

</source>

Arbeitest du unter gnome:

<source lang="bash">

  aptitude install ssh-askpass-gnome

</source>

Arbeitest du unter kde:

<source lang="bash">

  aptitude install ssh-askpass

</source>


svn-buildpackage

Mit svn-buildpackage hast du die Möglichkeit debian Pakete (die wir im SVN vohalten) für die entspr. Architekturen zu bauen. Wir möchten i386 und amd64 unterstützen. Es werden dabei binäre Debianpakete und source-Pakete erstellt.

Erstere erkennst du an der Dateiendung .deb, letztere bestehen aus zwei Dateien. Eine endet auf dsc, die andere auf tar.gz.

Die source-Pakete kannst du herunterladen, wenn du in deiner sources.list eine Zeile mit deb-src am Anfang stehen hast. Die binären Dateien kannst du herunterladen, wenn du deb als erstes Argument in der Zeile stehen hast.

svn-buildpackage erstellt ausserdem zu jedem Paket eine $PAKETNAME_$VERSION-$UNTERVERSION_$ARCHITEKTUR.changes Datei. (z.B. delixs-firstrun-config_0.1-58_all.deb) Mit dieser Datei kann dput arbeiten.

INFO: Zum Erstellen eines debian-Pakets sollten wir also nicht mehr fakeroot ./debian/rules binary nutzen. Hierbei wird weder die changes Datei noch die source-Dateien erstellt. Lasst uns also wie später unten beschrieben mit dem alias svn-b arbeiten.


dput

Dieses Programm ermöglicht es die binär- und source-Pakete in ein debian Repository zu laden. Also auf solche 'Server', die du in der /etc/apt/sources.list als Installationsquellen eintragen kannst.

dput unterstützt dabei mehrere Verfahren zum Hochladen, die wichtigsten sind ftp,ssh/sftp und lokales Kopieren.


mini-dinstall

dieses Programm erzeugt nun ein Repository mit allen Schickanen:

<source lang="bash"> $\tree |-- delixs1 | |-- all | | |-- Packages | | |-- Packages.bz2 | | |-- Packages.gz | | `-- Release | |-- all.db | |-- amd64 | | |-- Packages | | |-- Packages.bz2 | | |-- Packages.gz | | `-- Release | |-- amd64.db | |-- i386 | | |-- Packages | | |-- Packages.bz2 | | |-- Packages.gz | | `-- Release | |-- i386.db | `-- source | |-- Sources | |-- Sources.bz2 | `-- Sources.gz </source>


  • unter delixs/all liegen die architekturunabhängigen binären debian-Pakete (debs)
  • unter delixs/amd64 liegen die binären amd64 debian-Pakete (debs)
  • unter delixs/i386 liegen die binären i386 debian-Pakete (debs)
  • unter source liegen alle Versionen dieser Pakete im source-Format. Jeweils eine dsc und eine tar.gz Datei


apt-Konfiguration

Um jetzt auch mit den frisch erstellten Repositories arbeiten zu können, sind zwei Dateien notwendig, die im Folgenden beschrieben werden.

Der Ausdruck $(ARCH) bewirkt, dass apt sich die PC Architektur selbst sucht. Das delixs-Projekt unterstützt i386 und amd64.


lokales Repository aktivieren

Erstelle eine Datei /etc/apt/sources.list.d/file.list wie unten angegeben:

<source lang="apt_sources"> cat /etc/apt/sources.list.d/file.list

deb file:/home/thorsten/public_html/debian aramec/all deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/ deb-src file:/home/thorsten/public_html/debian aramec/source/ </source>


Als root führe aptitude update durch und das Repository ist eingebunden und einsatzfähig.


offizielles Repository aktivieren

Erstelle eine Datei /etc/apt/sources.list.d/delixs.list wie unten angegeben:

<source lang="apt_sources"> cat /etc/apt/sources.list.d/aramec.list

deb file:/home/thorsten/public_html/debian aramec/all deb file:/home/thorsten/public_html/debian aramec/$(ARCH)/ deb-src file:/home/thorsten/public_html/debian aramec/source/ </source>

Als root führe aptitude update durch und das Repository ist zwar eingebunden aber wegen eines noch nicht bekannten GPG-Schlüssels wird ihm nicht vertraut.


gpg Schlüssel importieren

XXX wird noch im Detail beschrieben


Konfiguration

alias svn-b

Wenn du ein Paket bauen und hochladen möchtest, rufst du dafür i.A. svn-buildpackage auf. Folgenden alias solltest du in deine ~/.bashrc packen:

<source lang="bash"> alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore" </source>

Damit reicht ein svn-b zum Bauen des Pakets. Es wird dann eine Ebene höher im Order build-area liegen.


der Benutzer dupload

dput Konfiguration

Mit der folgenden Konfiguration kennt dput zwei Ziele für den Paketupload

 # local  - deinen Rechner
 # delixs - unser offizielles delixs-Repository

<source lang="properties"> $ cat ~/.dput.cf [local] method = local hostname = localhost incoming = ~/public_html/debian/mini-dinstall/incoming run_dinstall = 0 allow_unsigned_uploads = 0 verify_sigs = 1 post_upload_command = /usr/bin/mini-dinstall --batch

[delixs] fqdn = deb.delixs.de method = scp login = dupload incoming = ./incoming run_dinstall = 0 allow_unsigned_uploads = 0 verify_sigs = 1 </source>

mini-dinstall Konfiguration

mini-dinstall soll mir ein Repository unter ~/public_html/delixs/ anlegen. Dafür ist folgende Konfiguration nötig:

<source lang="properties"> $ cat ~/.mini-dinstall.conf

  1. Adapted Colin's mini-dinstall.conf
  2. Infos unter /usr/share/doc/dput
  3. und http://debiananwenderhandbuch.de/mini-dinstall.html

[DEFAULT] architectures = all, i386, amd64 archivedir = ~/public_html/delixs/ use_dnotify = 0 verify_sigs = 0

  1. extra_keyrings = ~/.gnupg/pubring.gpg

mail_on_success = 0 archive_style = simple-subdir poll_time = 10 mail_log_level = NONE generate_release = 1 release_description = delixs Packages

  1. Releases:

[aramec] [testing] </source>


ssh Clientkonfiguration

Damit dput beim Hochladen auf den dev-server (deb.delixs.de) sich gleich mit den korrekten Einstellugnen wie dem Benutzer verbindet, leg dir die Datei ~/.ssh/config mit folgendem Inhalt an:

<source lang="bash"> host deb.delixs.de

 CheckHostIP no
 User dupload
 Ciphers arcfour
 Protocol 2
 IdentityFile ~/.ssh/id_dsa.dupload

</source>

Die Datei id_dsa.dupload bekommst du per Mail zugeschickt. Die Rechte müssen bei dem privaten key auf 0640 gesetzt werden. Wenn der key für alle lesbar ist (z.B. 0644), dann funktioniert der Upload nicht, da der key zurückgewiesen wird.

gpg-Schlüssel

Wenn du Pakete auf den dev-Server lädst, muss die Release Datei mit gpg signiert werden. Ansonsten würde jeder Server, der dieses Repository nutzt, über ein unsicheres Archiv meckern.

Darum musst du dich hier nicht kümmern, das erzeugt das Programm mini-dinstall auf dem Server. Bei dir im lokalen Repository brauchst du den Aufwand nicht treiben, lokal verfügbare Release-Dateien müssen nicht signiert werden.


Beispiel

Nachfolgend ein Beispiel, wo ich das (nicht existierende) Paket delixs-firstrun-config in der Version 0.1-58 in das lokale Repository hochlade. Am Ende wird automatisch mini-dinstall ausgeführt.

<source lang="bash"> $ dput local delixs-firstrun-config_0.1-58_i3864.changes $ \tree ~/public_html/debian/delixs1/ /home/thorsten/public_html/debian/delixs1/ |-- all | |-- Packages | |-- Packages.bz2 | |-- Packages.gz | |-- Release | `-- delixs-firstrun-config_0.1-58_all.deb |-- all.db |-- amd64 | |-- Packages | |-- Packages.bz2 | |-- Packages.gz | `-- Release |-- amd64.db |-- i386 | |-- Packages | |-- Packages.bz2 | |-- Packages.gz | `-- Release |-- i386.db |-- delixs-firstrun-config_0.1-58_i386.changes `-- source

   |-- Sources
   |-- Sources.bz2
   |-- Sources.gz
   |-- delixs-firstrun-config_0.1-58.dsc
   `-- delixs-firstrun-config_0.1-58.tar.gz

</source>

Erklärung:

  • Unter all liegt das architekturunabhängige Paket delixs-firstrun-config_0.1-58_all.deb
  • direkt im Ordner delixs1 liegt die changes-Datei.
  • unter source liegen die beiden Dateien delixs-firstrun-config_0.1-58.{dsc,tar-gz}

Im Ordner, von dem du das Paket hochgeladen hast (wahrscheinlich build-area), wurde die Datei delixs-firstrun-config_0.1-58_i386.upload angelegt. Der Inhalt:

<source lang="bash"> $ cat delixs-firstrun-config_0.1-58_i386.upload Successfully uploaded delixs-firstrun-config_0.1-58.dsc to localhost. Successfully uploaded delixs-firstrun-config_0.1-58.tar.gz to localhost. Successfully uploaded delixs-firstrun-config_0.1-58_all.deb to localhost. Successfully uploaded delixs-firstrun-config_0.1-58_i386.changes to localhost. </source>

Durch dieses logfile weis dput, dass es die Datei nicht nochmal hochladen muss, wenn du es ein zweites Mal probieren solltest.


Weblinks



zurück | Hauptseite

Thorsten Strusch 2009