• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Update Strategie!?

Themenstarter #1
Ich versuche mich gerade in OpenBSD einzuarbeiten. Ich habe die diversen FAQs durchgelesen und versucht zu verstehen. Allerdings verstehe ich nicht durchgängig wie man sein System auf den aktuellen Stand hält. Hier kurz wie ich es verstanden habe bisher:
  • das System selbst halte ich mittels "stable branch" aktuell, d.h. im groben ein cvs checkout in "/usr/src" und dann kompilieren des ganzen oder ich exportiere den "release branch" und patche per "errata page"
    • Frage: gibt es wirklich kein Automatismus mit dem man ohne ständiges schauen auf einer Website oder Mailingliste auf Updates prüfen kann? Insofern ich das alles richtig verstanden habe, klingt das für mich sehr umständlich!?
  • Wie halte ich nun die Packages auf einen aktuellen Stand? "pkg_add -u" updatet ja angeblich die Pakete, aber werden die Pakete ohne kompilieren wirklich aktuell, also stetig neu kompiliert und auf den FTP Servern bereit gehalten? Ich finde dazu kein Statement?
  • Ist dieser Update Prozess von mir richtig verstanden? Ist das wirklich so "umständlich"? Ich komme bisher aus der Linux Welt wo man ja egal in welcher Distri gewohnt ist das das System von sich aus alles mittels irgend einem "Paket Management" aktualisiert und auch man über diese Tools sehr simple prüfen kann, ob Updates überhaupt vorliegen...
PS: ich kenne den "binary update" Service von m:tier - möchte diesen aber nicht nutzen
Danke vorab!
 

zuglufttier

Well-Known Member
#2
Aber genau das suchst du: Binary updates wie bei den meisten Linux Distributionen. Vielleicht solltest du lieber FreeBSD probieren, da gibt es nun schon seit einer geraumen Weile pkg und das funktioniert sehr gut und bietet genau das was du suchst.
 

NaWi

Well-Known Member
#3
  • Frage: gibt es wirklich kein Automatismus mit dem man ohne ständiges schauen auf einer Website oder Mailingliste auf Updates prüfen kann? Insofern ich das alles richtig verstanden habe, klingt das für mich sehr umständlich!?
So ist es. Du könntest ein Script verwenden um den / die CVS trees automatisch zu aktualisieren. Die OpenBSD Ziele beinhalten Sicherheit und Funktionalität - nicht den Update Wahn anderer Systeme.

  • Wie halte ich nun die Packages auf einen aktuellen Stand? "pkg_add -u" updatet ja angeblich die Pakete, aber werden die Pakete ohne kompilieren wirklich aktuell, also stetig neu kompiliert und auf den FTP Servern bereit gehalten? Ich finde dazu kein Statement?
pkg_add -iuv siehe die man page. Die Pakete werden auf der OpenBSD Infrastruktur neu gebaut, danach stehen sie auf den offiziellen FTP Servern bereit. Achtung, nicht alle Server stellen auch alles zur Verfügung. Das hängt wie bei den Snapshots auch von der Architektur ab.

  • Ist dieser Update Prozess von mir richtig verstanden? Ist das wirklich so "umständlich"? Ich komme bisher aus der Linux Welt wo man ja egal in welcher Distri gewohnt ist das das System von sich aus alles mittels irgend einem "Paket Management" aktualisiert und auch man über diese Tools sehr simple prüfen kann, ob Updates überhaupt vorliegen...
Nicht jedes Update ist um jeden Preis sinvoll.
OpenBSD ist nicht dazu da um Dinge selbst zu machen.
 

drm

Well-Known Member
#4
Ich hab mir dazu mal ein Script geschrieben: https://gist.github.com/drm00/07e5cc717f705f04b1ee

Laeft bei mir als cronjob einmal pro Nacht, aktualisiert die installierten Pakete aus den Ports und sagt bescheid, wenn sich Dateien in src oder xenocara geaendert haben. Meist warte ich dann auf den dazugehoerigen Patch und aktualisiere die Komponenten so, wie es im Patch angegeben ist. Es ist nicht noetig, andauernd das komplette Userland neu zu bauen.

Das Script laeuft wahrscheinlich noch nicht ganz rund mit allen Paket-Flavours, aber es reicht fuer meine Zwecke. Damit die Mailzustellung funktioniert, muss die entsprechende Emailadresse in /etc/notifyme stehen.
 
Themenstarter #5
Ich hab mir dazu mal ein Script geschrieben: https://gist.github.com/drm00/07e5cc717f705f04b1ee

Laeft bei mir als cronjob einmal pro Nacht, aktualisiert die installierten Pakete aus den Ports und sagt bescheid, wenn sich Dateien in src oder xenocara geaendert haben. Meist warte ich dann auf den dazugehoerigen Patch und aktualisiere die Komponenten so, wie es im Patch angegeben ist. Es ist nicht noetig, andauernd das komplette Userland neu zu bauen.

Das Script laeuft wahrscheinlich noch nicht ganz rund mit allen Paket-Flavours, aber es reicht fuer meine Zwecke. Damit die Mailzustellung funktioniert, muss die entsprechende Emailadresse in /etc/notifyme stehen.
Das klingt schon mal interessant. Ich dachte auch in Richtung von "Helper" Scripte. Das es bei OpenBSD kein fertiges "Management" dafür gibt, hatte ich schon verstanden. Ich werde mir mal dein Script anschauen. Dabei fällt mir gerade die Frage ein: wie kann ich eigentlich bei CVS sicherstellen das die Sourcen nicht manipuliert wurden!?
 

NaWi

Well-Known Member
#6
Dabei fällt mir gerade die Frage ein: wie kann ich eigentlich bei CVS sicherstellen das die Sourcen nicht manipuliert wurden!?
Anonymous CVS uses passwordless SSH as a transport. If this is the first time you have connected to an anoncvs server, you will be asked to confirm the SSH fingerprint to ensure that you are connecting to the expected server:
Siehe hier http://www.openbsd.org/anoncvs.html vergleiche einfach die gelistet Keys mit denen der 1 Verbindung. Naja, den vorhandenen Servern musst Du schon vertrauen.
 

SteWo

OpenBSD User
#8
Hallo userlr,

ich bin vor etwa drei Jahren durchweg auf allen Rechnern auf OpenBSD-current umgestiegen. In dieser ganzen Zeit hatte ich genau _einmal_ ein Problem, weil etwas "quer" lag und das System instabil war. Nach keinen 24 Stunden war das Thema mit dem nächsten Update behoben. Was ich sagen will: Anders als bei anderen unixoiden ist bei OpenBSD die ~current-Version sehr stabil!

Genug der Vorworte: Hier mein Weg, das System zu aktualisieren. Bewußt nicht per cron-job, sondern täglich per manueller Inspektion! Wenn Du in den Skripten die Pfade entsprechend anpaßt, geht es auch mit ~stable. Hier zeige ich meinen Weg für amd64-current.

(1)
Ich leiste mir den "Luxus", alle Sourcen auf den Rechnern vorzuhalten. Muß man nicht unbedingt, aber wenn man mal das System "from scratch" kompilieren will, ist halt alles schon vorhanden. Details findest Du hier:
http://www.openbsd.org/anoncvs.html

Weitere Besonderheiten:
a: Ich setze /usr nach dem Start in der /etc/rc.local auf "read-only". Daher muß bei den Update-Operationen /usr zunächst zunächst beschreibbar gesetzt und am Ende dies wieder aufgehoben werden.
b: Auf meinen Rechnern ist kein Platz für gamesXX.tgz.
c: Mein nächstgelegender Mirror ist ftp.hostserver.de.
d: Ich starte jedes Sytem auf der Konsole, nicht xdm/gdm/kdm/'whateverdm'...


(2)
Im ersten Schritt überprüfe ich, ob die jeweilge ~current-Version noch aktuell ist und weiterhin, ob auch die packages aktualisiert wurden. Ersteres ist jeweils 2x im Jahr spannend - wenn der Versionssprung auf die Folgeversion ansteht (also etwa Januar/Februar 5.8 => 5.9), ansonsten überprüfe ich anhand des Datums, ob sich überhaupt etwas geändert hat; zweiteres ist während eines Hackathons sinnvoll, da dann mitunter bis zu drei Aktualisierungen am Tag verteilt werden, die alle lediglich den Kernel betreffen - dann fahre ich eine Aktualisierung nur, wenn auch die packages aktualisiert wurden.

'# sh update_current.sh' führt folgendes Skript aus (ja, ja: lynx ist nicht in base... ; ftp geht auch) [Der Vollständigkeit halber: Mittels "q" + "y" kommst Du aus den beiden Programmaufrufen _jeweils_ wieder heraus.]



(3)
Das jeweilige Basis-System aktualisiere ich mit folgendem Skript "update_current.sh":
(WARNUNG: ~/Downloads/amd64/ muß exisitieren, sonst werden die Dateien unter ~/ gelöscht!!!)

#!/bin/sh
#
print "Laufwerk wechseln"
cd ~/Downloads/amd64/
print "Dateien loeschen"
rm *
print "Dateien von http://ftp.hostserver.de neu holen"
export SERVER=http://ftp.hostserver.de
export ARCH=amd64
export VERSION=58 # <=== HIER AKTUALISIEREN, WENN VERSIONSWECHSEL
ftp -4 -a \
$SERVER/pub/OpenBSD/snapshots/$ARCH/BOOT{IA32,X64}.EFI \
$SERVER/pub/OpenBSD/snapshots/$ARCH/INSTALL.$ARCH \
$SERVER/pub/OpenBSD/snapshots/$ARCH/index.txt \
$SERVER/pub/OpenBSD/snapshots/$ARCH/SHA256{,.sig} \
$SERVER/pub/OpenBSD/snapshots/$ARCH/bsd{,.rd,.mp} \
$SERVER/pub/OpenBSD/snapshots/$ARCH/{base,comp,man}$VERSION.tgz \
$SERVER/pub/OpenBSD/snapshots/$ARCH/x{base,font,serv,share}$VERSION.tgz
#
# signify(1)
#
doas signify -C -p /etc/signify/openbsd-$VERSION-base.pub -x SHA256.sig INSTALL.$ARCH
doas signify -C -p /etc/signify/openbsd-$VERSION-base.pub -x SHA256.sig bsd{,.rd,.mp}
doas signify -C -p /etc/signify/openbsd-$VERSION-base.pub -x SHA256.sig {base,comp,man}$VERSION.tgz
doas signify -C -p /etc/signify/openbsd-$VERSION-base.pub -x SHA256.sig x{base,font,serv,share}$VERSION.tgz
#
print "Altes /bsd.rd sichern"
doas cp /bsd.rd /bsd.rd.1
print "Neues /bsd.rd kopieren"
doas cp -p bsd.rd /
print "Neues bsd.mp als /bsd kopieren"
doas cp -p bsd.mp /bsd
print "/usr RW mounten"
doas mount -uw /usr
print "untar xfonts"
doas tar -C / -xzphf xfont$VERSION.tgz
print "untar xserv"
doas tar -C / -xzphf xserv$VERSION.tgz
print "untar xshare"
doas tar -C / -xzphf xshare$VERSION.tgz
print "untar man"
doas tar -C / -xzphf man$VERSION.tgz
print "untar comp"
doas tar -C / -xzphf comp$VERSION.tgz
print "untar xbase"
doas tar -C / -xzphf xbase$VERSION.tgz
print "untar base"
doas tar -C / -xzphf base$VERSION.tgz
print "run sysmerge"
doas sysmerge
print "upgrade /dev"
cd /dev
doas ./MAKEDEV all
print "mount /usr RO"
doas mount -ur /usr
cd /home/sw​


(4) NACH EINEM NEUSTART geht es mit folgendem Skript "update_system.sh" weiter:
(Es kann aber bereits mit dem System gearbeitet werden!)
(/usr/src und /usr/xenocara sind hilfreich, um ggf. aus /usr/ports zu installieren)

#!/bin/sh
#
cd /tmp
doas mount -uw /usr
#
print "package checks"
doas pkg_check -I
#
print "packages updaten"
doas pkg_add -ui
#
print "/usr/src updaten"
cd /usr/src
doas cvs -qd $CVSROOT up -Pd
#
print "/usr/xenocara updaten"
cd /usr/xenocara
doas cvs -qd $CVSROOT up -Pd
#
print "/usr/ports updaten"
cd /usr/ports
doas cvs -qd $CVSROOT up -Pd
#doas make clean && sudo make index
#
cd
print "locate-db updaten"
doas /usr/libexec/locate.updatedb
doas mount -ur /usr​


Soweit mein Weg. Dauert je nach dem, wieviele packages aktualisiert werden, 20~30 Minuten (daheim). Wie heißt es so schön in den Foren: YMMV :-)

Ich hoffe, Du kannst mit diesen Hinweisen etwas anfangen, um einen für Dich passenden Weg zu finden, das System aktuell zu halten.

Beste Grüße,
SteWo
 

SteWo

OpenBSD User
#10
Upgrade im Installer wie bei NetBSD kennt wohl OpenBSD nicht?
Doch - natürlich, aber warum soll ich erst einen Neustart hinlegen, um bsd.rd und damit den Installer aufzurufen???

Ich habe zwar genau NULL Erfahrung mit NetBSD, aber ich bin mir sicher, auch darunter würde ich zunächst wissen wollen, ob ich das System aktualisieren will - und genau dies finde ich zunächst mit meinem Skript 'check_current.sh' heraus. Und mit den zwei 'update'-Skripten kann ich im laufenden Betrieb das System aktualisieren, ohne erst einen Installer aufrufen zu müssen.

Andere Systeme - andere Strategien. Andere Anforderungen - andere Lösungen.
 

darktrym

Fahnenträger
#11
Wieso Neustart? Man kann doch nachwievor das laufende System nutzen, die Dienste laufen doch bereits und der Installer braucht doch keinen spez. Kernel.
 

SteWo

OpenBSD User
#12
Wieso Neustart? Man kann doch nachwievor das laufende System nutzen
Dies gilt unter OpenBSD nur für die Anwendungen, nicht für den Kernel - da willst Du den von mir skizzierten Weg, oder startest halt in die RAMdisk. Zur Erinnerung: Ich fahre ~current, nicht ~stable (falls jemand diese OpenBSD-spezifischen Definitionen nicht kennt: http://www.openbsd.org/faq/faq5.html#Flavors).

Wenn es unter NetBSD möglich ist, auch den Kernel im laufenden Betrieb über einen Installer zu aktualisieren - schön. Na und? userlr hat gefragt, wie er unter OpenBSD sein System aktuell halten kann und ich habe meinen Weg präsentiert. Mag verbesserungfähig sein, funktioniert für mich aber.
 

xbit

Well-Known Member
#13
Der Prozess ist von dir grundsaetlich richtig verstanden. Aber du brauchst nicht immer alles neu bauen. In den Errata Beschreibungen steht sehr genau, welchen Teil du aus den Sourcen neubauen musst. Beim Kernel ist natuerlich ein Reboot notwendig, aber ansonsten reicht es haeufig, die passenden Dienste neu zu starten.

Ich gehe so vor, wobei ich nur stable nutze. Ich guck hin und wieder mal auf http://www.openbsd.org/errata58.html (je nach Version), ob es Patches gibt, die ich einspielen muss.

Gibt es Patches, aktualisiere ich via CVS den jeweiligen Tree und baue dann entsprechend neu.

Und alle 6 Monate gibts ne DVD Packung. Entweder aktualisiere ich von der und lade mir das entsprechende Verzeichnis runter, kopiere und starte bsd.rd und aktualisiere damit. Bisher hat das ohne Probleme funktioniert, da die Dokumentation sehr gut ist.

Ich finde das sehr bequem, vor allem dank der guten Dokumentation und der Termine ist eigentlich gut planbar, wann man updaten kann.
 

NaWi

Well-Known Member
#14
(3)
Das jeweilige Basis-System aktualisiere ich mit folgendem Skript "update_current.sh":
(WARNUNG: ~/Downloads/amd64/ muß exisitieren, sonst werden die Dateien unter ~/ gelöscht!!!)
Ist Geschmackssache aber, ich würde ein

Code:
mkdir -p ~/Downloads/amd64/
der Einfachheit halber vor dem cd einfügen.

Ich weiß, Du brauchst es nicht, weil das Verzeichnis bei Dir bereits existiert.

OT : Existiert eigentlich eine Liste, wer die (FTP) Mirrors betreibt (änlich der Informationen auf der CVS Seite) ?
 
#15
Im Interpreter-Shebang einfach sh -e nutzen.
Damit bricht das Skript sofort ab, wenn ein Kommando fehlschlägt. Also auch dann, wenn cd ins Verzeichnis nicht geht.

Rob