Github - Programme automatisiert aktualisieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
0xErF
Beiträge: 16
Registriert: 16.07.2012 05:27:20

Github - Programme automatisiert aktualisieren

Beitrag von 0xErF » 14.12.2018 13:44:17

Ich nutze Debian Stable, daher fehlen den Programmen teilweise neue Features.
Ich habe mir deshalb ein paar Repos heruntergeladen, compiliert, installiert und die Binaries in /usr/local/bin zu "<Paketname>C" umbenannt, damit ich die selbst compilierte Version von der aus den Paketquellen unterscheiden kann (Beispiel "borg" und "borgC").
Bei zur Zeit 2 Programmen (borg und vim) kann ich die neuen Versionen noch per Hand bauen, falls es mehr werden wird es schon aufwendiger.

Gibt es eine automatisierte Lösung für das, was ich mache oder muss ich mir ein Skript schreiben?
Mein Ziel:

Code: Alles auswählen

$ sudo apt-get update && sudo apt-get dist-upgrade && sudo tollerGitRepoUpgrader
EDIT: Google war nicht hilfreich, vielleicht habe ich auch nur die falschen Keywords benutzt

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Github - Programme automatisiert aktualisieren

Beitrag von novalix » 14.12.2018 14:28:08

0xErF hat geschrieben: ↑ zum Beitrag ↑
14.12.2018 13:44:17
Gibt es eine automatisierte Lösung für das, was ich mache oder muss ich mir ein Skript schreiben?
Mein Ziel:

Code: Alles auswählen

$ sudo apt-get update && sudo apt-get dist-upgrade && sudo tollerGitRepoUpgrader
Ich will Dir ja nicht die Laune verderben, aber ich befürchte das kann nicht funktionieren.
Zunächst einmal gibt es mit an Sicherheit grenzender Wahrscheinlichkeit keine fertige, generische Lösung für dieses Problem. Du müsstest Dir also tatsächlich ein eigenes Skript bzw. Programm dafür schreiben.
Die einzelnen Schritte, die Du bislang für ein einzelnes Repo durchführst, in ein Skript zu klatschen, dürfte trivial sein. Kniffeliger wird es dann schon die Sache so zu abstrahieren, dass mehrere (egal wie viele) Repos (nacheinander oder zeitgleich?) mit den jeweiligen Umgebungen abgearbeitet werden. Ist aber lösbar.
Nur, was passiert, wenn irgendwo ein Fehler auftritt? Ist der Fehler im Skript selber, hast Du ein kleines Problem. Entsteht der Fehler z.B. im Build-Prozess hast Du ein sehr schwieriges Problem.

Dass bei Deinen derzeitigen "Paketen" noch kein Fehler im Build-Prozess aufgetreten zu sein scheint, erscheint mir als ein vergleichsweise glücklicher Umstand.
Wenn Du wirklich die jeweilig neueste Version der Programme von Github ziehst, wirst Du über kurz oder sehr kurz arge Probleme beim Paketbau bekommen.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Github - Programme automatisiert aktualisieren

Beitrag von eggy » 14.12.2018 17:58:35

Och, machbar ist das schon.

Nur bau die Sache andersrum auf:
Du betreibst dazu Dein eigenes Repo, in das werden die lokalen Pakete gelegt.
Dieses lokale Repo gibst Du als weitere Quelle in den apt-sourcen mit an.
D.h. beim Update werden auch jeweils die aktuellen Versionen der "Github"-Pakete eingespielt.

Wie kommen jetzt die Pakete automatisiert in Dein Repo?
Da gibts unterschiedliche Ansätze, von einfachem cron-Job, der die Makefiles triggert, bis zum kompletten Jenkins ist alles dabei.
Wenn Du Scriptbasiert etwas bauen willst: uscan und git log helfen abzuklären, welche Version aktuell ist, bzw obs was neues gibt, dass man bauen will. Die Debianversionen Deiner lokalen Pakete kannst Du dann mit dem Builddatum kennzeichnen, für etwas von heute wäre das z.B. 0~1812014-1. Schau Dir mal git-buildpackage an, evtl sind da für Dich brauchbare Helferlein enthalten.
Nur wenn der Buildvorgang erfolgreich war, wird die aktuelle Version des jeweiligen .deb ins lokale Repo übernommen und dann der Paketindex aktualisiert. Beim nächsten apt-get update/dist-upgrade Lauf wird das Paket dann automagisch mitinstalliert.

Antworten