APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann? [Gelöst]
APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann? [Gelöst]
Hallo zusammen
Ich sollte ein APT-Repo erstellen, welches immer nur eine Version des Pakets beinhaltet, wo also immer nur über "apt-get install xyz" eine Vollinstallation oder ein Update* vorgenommen werden kann.
* Ist es überhaupt möglich, später, bei einer neueren Paket-Version, die bereits installierte und ältere Version per "apt-get install xyz" zu updaten?
Das Kreieren der .deb-Dateien klappt soweit gut. Was mir dabei aufgefallen ist, ist dass sich in der Datei "DEBIAN/control" die Versionsinformationen befinden. ("Version: 1.1.1-2") Nun sind aber in der APT-Repo-Verzeichnisstruktur unter der Datei "conf/distributions" auch noch irgendwelche Informationen enthalten, bei uns steht aktuell dort drin jedoch nix zur Version...
Fürs .deb-File nehme ich "dpkg -b ...", zu erstellen des APT-Repos das Tool "reprepro". (Kann ich soweit nur empfehlen, scheint relativ einfach zu sein damit: https://blog.packagecloud.io/eng/2017/0 ... -reprepro/)
...wie gesagt soll jeder Installer gleichzeitig ein Full-Installer (für die erste Installation) sein, und gleichzeitig auch als Updater fungieren können. Beim Update wird dann einfach die alte Version komplett mit der neuen ersetzt. (Vorher werden noch irgendwelche Dienste heruntergefahren etc.)
Gibt es zu diesem Fall irgendwelche best-practise-Ansätze? Evtl. kann mir jemand ein bisschen auf die Sprünge helfen damit...?
Für ein paar Tipps zum Thema wäre ich sehr dankbar.
Ich sollte ein APT-Repo erstellen, welches immer nur eine Version des Pakets beinhaltet, wo also immer nur über "apt-get install xyz" eine Vollinstallation oder ein Update* vorgenommen werden kann.
* Ist es überhaupt möglich, später, bei einer neueren Paket-Version, die bereits installierte und ältere Version per "apt-get install xyz" zu updaten?
Das Kreieren der .deb-Dateien klappt soweit gut. Was mir dabei aufgefallen ist, ist dass sich in der Datei "DEBIAN/control" die Versionsinformationen befinden. ("Version: 1.1.1-2") Nun sind aber in der APT-Repo-Verzeichnisstruktur unter der Datei "conf/distributions" auch noch irgendwelche Informationen enthalten, bei uns steht aktuell dort drin jedoch nix zur Version...
Fürs .deb-File nehme ich "dpkg -b ...", zu erstellen des APT-Repos das Tool "reprepro". (Kann ich soweit nur empfehlen, scheint relativ einfach zu sein damit: https://blog.packagecloud.io/eng/2017/0 ... -reprepro/)
...wie gesagt soll jeder Installer gleichzeitig ein Full-Installer (für die erste Installation) sein, und gleichzeitig auch als Updater fungieren können. Beim Update wird dann einfach die alte Version komplett mit der neuen ersetzt. (Vorher werden noch irgendwelche Dienste heruntergefahren etc.)
Gibt es zu diesem Fall irgendwelche best-practise-Ansätze? Evtl. kann mir jemand ein bisschen auf die Sprünge helfen damit...?
Für ein paar Tipps zum Thema wäre ich sehr dankbar.
Zuletzt geändert von jmar83 am 09.12.2019 16:34:14, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
-> Das der Update-Vorgang NACH dem Herunterladen per apt-getr über die Dateien "preinst" und/oder "postinst" entsprechend abgehandelt werden muss, ist mir soweit klar. (Z.B. Dienste installieren bei einer Full-Installation, jedoch herunterfahren beim Update (und danach wieder starten))
Es ist mir eher unklar, wie später, bei neueren Versionen, über "apt-get update" die Versionsinformationen zum neuen Paket geholt werden und ob dann ein erneutes "apt-get install xyz" ausreicht. Meines Wissens nach gibt es ja kein "apt-get upgrade PAKETNAME", sondern nur auf alles = "apt-get upgrade". (?)
Es ist mir eher unklar, wie später, bei neueren Versionen, über "apt-get update" die Versionsinformationen zum neuen Paket geholt werden und ob dann ein erneutes "apt-get install xyz" ausreicht. Meines Wissens nach gibt es ja kein "apt-get upgrade PAKETNAME", sondern nur auf alles = "apt-get upgrade". (?)
Freundliche Grüsse, Jan
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Also ich habe noch nie ein Repo erstellt. Es ist aber wohl so, dass der Client mit "apt-get update" die Liste der Pakete aktualisiert. Diese Liste basiert auf "Packages.gz". Diese Datei wiederum erzeugt man mit dpkg-scanpackages . Vielleicht mal in diese Richtung suchen.
https://debiananwenderhandbuch.de/dpkg- ... kages.html
Je Zeile in sources.list ein Packages.gz. Siehe Beispiel für Stretch amd64 main
Entspricht: http://deb.debian.org/debian/dists/stre ... ary-amd64/
(wie dists und binary-amd64 dazukommt weiß ich nicht )
In der Packages.gz stehen wiederum die Verweise auf die deb-Files mit Verzeichnis /pool/ wie http://deb.debian.org/debian/pool/
Ach ja. Mit "apt-get update" wird nur diese Liste aktualisiert. Die Pakete selbst aktualisierst du z. B. mit "apt-get dist-upgrade".
https://debiananwenderhandbuch.de/dpkg- ... kages.html
Je Zeile in sources.list ein Packages.gz. Siehe Beispiel für Stretch amd64 main
Code: Alles auswählen
deb http://deb.debian.org/debian stretch main
(wie dists und binary-amd64 dazukommt weiß ich nicht )
In der Packages.gz stehen wiederum die Verweise auf die deb-Files mit Verzeichnis /pool/ wie http://deb.debian.org/debian/pool/
Ach ja. Mit "apt-get update" wird nur diese Liste aktualisiert. Die Pakete selbst aktualisierst du z. B. mit "apt-get dist-upgrade".
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Vielen Dank für Deinen Beitrag!
Gerade ausprobiert, kannte ich bisher noch nicht.
...ja, aber dann sind es alle. Wie ich aber gerade gesehen habe, lässt sich "upgrade" auch auf einzelne Pakete anwenden:"Die Pakete selbst aktualisierst du z. B. mit "apt-get dist-upgrade""
Code: Alles auswählen
root@deployment:~/deployment/Temp# apt-get upgrade apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
apache2 is already the newest version (2.4.25-3+deb9u7).
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Freundliche Grüsse, Jan
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Na ja, nun müsste man halt irgendwo (?) die Versionsinformationen hinterlegen, entweder
a.) in der Datei "DEBIAN/control" im Installer
oder
b.) auf Ebene der APT-Repo-Verzeichnisstruktur
...wobei ich persönlich denke, dass beim Erstellen der APT-Repo-Verzeichnisstruktur die Informationen aus "DEBIAN/control" automatisch extrahiert werden. Es wird ja nicht der APT-Repo-Verzeichnisstruktur die Versionsinformationen verpasst, sondern dem Paket (also der .deb-Datei) selbst.
a.) in der Datei "DEBIAN/control" im Installer
oder
b.) auf Ebene der APT-Repo-Verzeichnisstruktur
...wobei ich persönlich denke, dass beim Erstellen der APT-Repo-Verzeichnisstruktur die Informationen aus "DEBIAN/control" automatisch extrahiert werden. Es wird ja nicht der APT-Repo-Verzeichnisstruktur die Versionsinformationen verpasst, sondern dem Paket (also der .deb-Datei) selbst.
Freundliche Grüsse, Jan
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Die Versionsnummer wird beim Paketbau aus der debian/changelog extrahiert. Die Einträge dafür kannst Du per Hand anlegen oder via dch.
Sieht dann so aus (changelog aus Beispielpaket "hello"):
dpkg-buildpackage baut mit diesen Infos dann das deb, hier z.B. hello_2.10-1_amd64.deb, wie Du siehst, wird der oberste Eintrag genutzt.
Mit dpkg-scanpackages erzeugt man anschliessend die Packages-Datei, die dann auch die Versionen der vorliegenden Pakete kennt.
Sieht dann so aus (changelog aus Beispielpaket "hello"):
Code: Alles auswählen
hello (2.10-1) unstable; urgency=low
* New upstream release.
[...]
-- Santiago Vila <sanvila@debian.org> Sun, 22 Mar 2015 11:56:00 +0100
hello (2.9-2) unstable; urgency=low
* Apply patch from Reuben Thomas to fix i18n of default message.
[...]
Mit dpkg-scanpackages erzeugt man anschliessend die Packages-Datei, die dann auch die Versionen der vorliegenden Pakete kennt.
- KBDCALLS
- Moderator
- Beiträge: 22449
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
reprepro mit Signieren und allem was dazugehört für Pakete und Sourcen , auch udeb wenns sein muß.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Hallo zusammen!!
Auch euch beiden vielen Dank für die Beiträge!
@eggy: Dann braucht's also doch noch ein wenig mehr als ein simples "dpkg -b ..."... wobei es von unserer Anwendung keine Update-Pakete geben soll, die neuste Version soll immer Updater und Full-Installer gleichzeitig sein. Idealerweise kann man dann, bei einem Update, statt "apt-get install ..." den Befehel "apt-get upgrade ..." eingeben. Wobei mir aktuell nicht ganz klar ist, ob das überhaupt so geht. (Sollte doch zumindest theoretisch möglich sein?)
@KBDCALLS: Apropos "udeb": Zwar findet man bei Google alles möglich darüber (nur keine vernünftige Anleitung), hier habe ich allerdings was gefunden:
https://unix.stackexchange.com/question ... b-packages
...nämlich dass damit kein Upgrade und auch keine Deinstallation möglich ist. Ist das korrekt so? In diesem Fall ist es definitiv kein Thema für meine Leute und mich.
Auch euch beiden vielen Dank für die Beiträge!
@eggy: Dann braucht's also doch noch ein wenig mehr als ein simples "dpkg -b ..."... wobei es von unserer Anwendung keine Update-Pakete geben soll, die neuste Version soll immer Updater und Full-Installer gleichzeitig sein. Idealerweise kann man dann, bei einem Update, statt "apt-get install ..." den Befehel "apt-get upgrade ..." eingeben. Wobei mir aktuell nicht ganz klar ist, ob das überhaupt so geht. (Sollte doch zumindest theoretisch möglich sein?)
@KBDCALLS: Apropos "udeb": Zwar findet man bei Google alles möglich darüber (nur keine vernünftige Anleitung), hier habe ich allerdings was gefunden:
https://unix.stackexchange.com/question ... b-packages
...nämlich dass damit kein Upgrade und auch keine Deinstallation möglich ist. Ist das korrekt so? In diesem Fall ist es definitiv kein Thema für meine Leute und mich.
Zuletzt geändert von jmar83 am 21.05.2019 09:26:54, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan
- KBDCALLS
- Moderator
- Beiträge: 22449
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
udeb sind im Grunde Pakete mit identischem Inhalt wie deb nur das die wesentlich kleiner sind weil der Dokukram nicht paketiert wird damit sie auf Installationsmedien weniger Platz beanspruchen. Finden also nur währen der Installation verwendung.
Hier der Link "Debian-Leitfaden für Neue Paketbetreuer"
findet sich aber auch alles im Repository.
Hier der Link "Debian-Leitfaden für Neue Paketbetreuer"
findet sich aber auch alles im Repository.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: APT-Repos erstellen für Installer, welcher gleichzeitig auch updaten kann?
Vielen Dank!!
Freundliche Grüsse, Jan