Forum: PC-Programmierung Selbstupdate auf Debian Systemen


von Gustav G. (gustavgggg)


Lesenswert?

Ich stehe vor der Aufgabe eine Software auf Debian hin und wieder 
updaten zu müssen oder updaten zu lassen. Bisher lief das immer über SSH 
und dann wurde per dpkg aktualisiert. Das Problem dabei ist natürlich, 
dass immer SSH zur Verfügung stehen muss und man schlüsselmanagement 
betreiben muss. Der PC selbst hat keinen Internetzugang, aber einen USB 
Zugang zum Anschließen von USB Sticks oder Festplatten.

Nun soll das aber auch mal jemand ohne mein Beisein machen. Ich suche 
noch nach einer adäquaten Lösung. Meine erste Idee ist zwar den SSH 
zugang zu belassen aber eine GUI zum Update zu schreiben, die das per 
SSH dort hochlädt und installiert.

Eine weitere Lösung könnte sein, dass man per HTTP oder FTP das deb 
Paket hochlädt und einen systemd Daemon am laufen hat, der immer das 
neuste Paket installiert.

Wie wird so etwas in der Regel "professionell" gelöst wenn Systeme durch 
Benutzer geupdatet werden sollen? Wie macht man das wenn dabei auch noch 
Systemupdates duchgeführt werden sollen oder mal ein neues Paket 
benötigt wird aber keine Internetverbindung da ist?

von (prx) A. K. (prx)


Lesenswert?

Eigenen Repository-Server als Installationsquelle aufsetzen.

von Gustav G. (gustavgggg)


Lesenswert?

(prx) A. K. schrieb:
> Eigenen Repository-Server als Installationsquelle aufsetzen.

Das Ding hat keine Internetverbindung aber man kann APT Repositories 
auch in ein lokales Dateisystem zeigen lassen. Schwierig würde das nur 
wenn zum Beispiel mal eine neue Abhängigkeit meines Programms auf dem PC 
hinzukommt. Dann müsste man die mit ausliefern und da fällt mir keine 
Lösung ein wie das gehen soll, denn die Debian Pakete haben teils sehr 
verzweigte abhängigkeiten.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Es ist möglich als Quelle für die Paketverwaltung ein Laufwerk oder ein 
Verzeichnis hinzuzunehmen.

Siehe unter:
https://wiki.ubuntuusers.de/sources.list/

Das Paket apt-file würde ich noch ergänzen.
https://wiki.ubuntuusers.de/apt-file/

Beitrag #7417960 wurde vom Autor gelöscht.
von Alexander S. (alesi)


Lesenswert?

Gustav G. schrieb:
> (prx) A. K. schrieb:
>> Eigenen Repository-Server als Installationsquelle aufsetzen.
>
> Das Ding hat keine Internetverbindung aber man kann APT Repositories
> auch in ein lokales Dateisystem zeigen lassen.

Wahrscheinlich meint prx einen eigenen mobilen Repository-Server als 
Installationsquelle aufsetzen. Z.B. einen Mini-PC mit ausreichend 
Festspeicherkapazität, der dann regelmäßig mit dem Debian-Server 
synchronisiert wird. Von Zeit zu Zeit den an den zu aktualisierenden 
Rechner per LAN anschließen und "sudo apt update; sudo apt upgrade", um 
alle installierten Pakete zu aktualisieren. Die apt sources.list so 
konfigurieren, dass apt auf dem per LAN angeschlossenem Rechner sucht.

von Gustav G. (gustavgggg)


Lesenswert?

Ich denke das ich gar keine schlechte Idee. Weiß jemand wie groß das 
komplette Debian Repository ist? Ich schätze das wird nicht klein sein. 
Wenn es unter 256GB ist kann man das auch noch wirtschaftlich einfach 
auf einen USB Stick packen inklusive seiner eigenen Repositories.

von (prx) A. K. (prx)


Lesenswert?

Alexander S. schrieb:
> Z.B. einen Mini-PC mit ausreichend
> Festspeicherkapazität, der dann regelmäßig mit dem Debian-Server
> synchronisiert wird.

Und das schafft auch ein RasPi, oder noch kleinerer Verwandter wie der 
Orange Pi Zero, wenn man das Debian-Repo selektiv fahren kann (keine 
Ahnung wie fein). Vorteil solcher Lösungen: Sie setzen auf dem normalen 
Update-Weg auf, benötigen keine Sonderlocken.

: Bearbeitet durch User
von Alexander S. (alesi)


Lesenswert?

Diese Doku könnte evtl. auch helfen, auch wenn sie schon älter ist:

https://www.debian.org/doc/manuals/apt-offline/index.de.html

https://packages.debian.org/stable/debmirror

Gustav G. schrieb:
> Weiß jemand wie groß das
> komplette Debian Repository ist?

https://www.debian.org/mirror/size

: Bearbeitet durch User
von Ralf D. (doeblitz)


Lesenswert?

Gustav G. schrieb:
> Wie wird so etwas in der Regel "professionell" gelöst wenn Systeme durch
> Benutzer geupdatet werden sollen? Wie macht man das wenn dabei auch noch
> Systemupdates duchgeführt werden sollen oder mal ein neues Paket
> benötigt wird aber keine Internetverbindung da ist?

Gar nicht. ;-)

Im professionellen Umfeld lässt man so etwas niemals von Benutzern 
ausführen. Stattdessen automatisiert man das mit den üblichen Tools wie 
Ansible, Cfengine, Chef, Muppet, Salt-Stack …

Bei Ansible reicht dafür auch SSH als Zugang vollkommen aus, damit 
schiebt man zuerst das deb-File auf die remote-Kiste und löst danach die 
Installation aus.

Und was bedeutet "keine Internetverbindung" genau? Nur inbound-SSH 
möglich? Oder darf die Kiste sich mit dem Admin-System (von dem aus du 
das bisher mit SSH machst) evtl. auch verbinden? Wenn du da kanonisch 
den Port 3142 freigeben kannst, dann könntest du auf dem Admin-System 
apt-cacher-ng installieren und vom remote-System als apt-Proxy 
ansprechen lassen (BTDT). Das macht das Leben viel einfacher (und 
erlaubt nebenbei auch das übliche daily apt-upgrade für 
sicherheitsrelevante Updates via unattended-upgrades).

von Rolf M. (rmagnus)


Lesenswert?

Ralf D. schrieb:
> Bei Ansible reicht dafür auch SSH als Zugang vollkommen aus, damit
> schiebt man zuerst das deb-File auf die remote-Kiste und löst danach die
> Installation aus.

Aktuell macht er genau das doch schon, nur ohne den Umweg über Ansible.

von Gustav G. (gustavgggg)


Lesenswert?

Ansible ist eben auch nur ein SSH Zugang mit Skript. Vielleicht erkläre 
ich nochmal. Keines der Geräte hat Internetzugang. Weder der PC, der 
sich per SSH verbinden kann noch der SSH Server PC. Da ist lediglich 
eine Netzwerkschnitstelle dran mit fester IP Adresse. Es muss also alles 
wirklich offline passieren.

Ich bin schon am überlegen einfach einen Docker Container zu benutzen 
oder das per AppImage zu machen.

von Oliver (imonbln)


Lesenswert?

Das Ding hat irgendeine Art von Netzwerk, sonst würde dein SSH Zugriff 
nicht funktionieren!

Irgendwo in diesen Privaten Netzwerk (Nicht Internet) solltest du ein 
eigenes Debian Repository aufsetzen. Diese Repository, machst du nun 
allen deinen Debian Kisten bekannt und wenn du ein Paket Updaten willst 
reicht es diese in das Zentralen Repository zu tun. Die Rechner ohne 
Internet aber mit lokalem Netzwerk bekommen dann Ihre Updates per apt 
update/apt upgrade.

btw, wenn du schon dabei bist, solltest du dir auch gleiche noch ein 
Mirror der Offiziellen Debian Repository, einrichten. Dann klappt das 
auch mit den neuen abhänigkeiten.
Wie du denn Mirror aktuelle hältst, überlasse ich dir, aber auch ein 
System ohne Internet braucht Sicherheitsupdate (nicht nur von der 
Software, welche du bereitstellst)

Last but not least Profis verlassen sich nicht darauf, dass Ihre 
Benutzer selbst updaten! Sie haben eine Orchestrierung im Einsatz, 
welche jeden Rechner auf einen definierten Stand bringt.

Ich persönlich habe bei meinem System gerne einen PXE-Server laufen, der 
Debian mithilfe einer preseed Datei als Debian SSH Server installiert. 
Danach wird der Rechner je nach Rolle mit ein paar Ansible Skripten 
Grund konfiguriert.

Teil meiner Konfiguration ist es auch, mit Icinga zu überwachen, ob die 
Pakete aktuell sind (ich weiß, aptcron würde es auch machen). Weil meine 
Software über Debian Repositorys verteilt wird, ist ein System update 
mit apt update /apt upgrade in der Regel einfach gemacht. Ich benutze 
aber dennoch ein Ansible Playbook hierfür, da so gleich einen Überblick 
bekomme, wenn es auf ein paar Computer Probleme gab.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.