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

FreeBSD Update von System und Anwendungen

arcona

Well-Known Member
Themenstarter #1
Hallo,
ich komme aus der Linux Ecke und bin es gewohnt die Aktualisierungen des Systems und der Anwendungen dem Packetmenager zu überlassen.
Zur Zeit sehe ich den Wald vor lauter Bäumen nicht.

Wenn ich das richtig verstanden habe, dann muss ich, um ein FreeBSD System zu aktualisieren zuerst die Portssammlung (mit portsnap) aktualisießend das Basissystem neu zu bauen. Werden denn beim Bauen des Basissystems auch alle meine installierten Anwendengen mit aktualisiert?
Das ganze finde ich sehr aufwändig, zumindest, wenn ich dieser Anleitung folge: http://www.freebsd.org/doc/de/books/handbook/makeworld.html
Gibt es hier auch einfachere Wege?

Wie werden denn eigentlich Sicherheitsaktualisierungen einzelner Anwendungen eingespielt?

Grüße.
craano
 

Rakor

Administrator
Mitarbeiter
#2
Hallo!

Das Basisystem kannst du mit freebsd-update aktualisieren. Um die Sicherheitsupdates einzuspielen machst du als Benutzer root einfach:
freebsd-update fetch
sollten Updates vorliegen werden diese mit
freebsd-update install
eingespielt.

Ich verwende zum Installieren und Verwalten meiner "Drittanwendungen" das Programm portmaster. Sprich um alle Ports zu aktualisieren gebe ich folgendes ein:

portsnap fetch
portsnap update
portmaster -a
Ich finde es lohnt vor dem "portmaster -a" mal zu sehen was alles installiert wird. Das mache ich mit:
portmaster -L | grep New
Ich hoffe das konnte helfen.


Achso Portmaster ist aus den Ports zu installieren
 

MuffiXXL

Well-Known Member
#3
Hi,

ich denke du bringst hier konzepte durcheinander.
Entgegen der Linuxschen Philosophie nach der ein Release immer Basissystem und dazugehörige Programme umfasst werden diese dinge in der BSD Welt getrennt gepflegt. Das heißt Basissystem und Ports sind zwei komplett voneinander unabhängige Dinge. So kannst du z.B. einen aktuellen Ports-Tree auch unter z.B. FreeBSD 6.1 noch betreiben, genau so wie du die gleichen Ports auch auf FreeBSD 8 oder -CURRENT betreiben kannst. Dein Basissystem wird von den Ports nicht angerührt und umgekehrt.
Den rest hat Rakor ja schon zusammengefasst. Weitere Informationen zu tools die man für die Wartung der Ports verwenden kann (portmaster, portupgrade,...) findest du auch hier im Wiki.
 

arcona

Well-Known Member
Themenstarter #4
OK, das bringt ein wenig Licht ins Dunkel.

freebsd-update fetch
freebsd-update install
Die vorgenannten Befehle ersetzen also das in vielen Howtos beschriebene aber sehr umständliche Neubauen des Basissystems.

Für die Aktualität der Anwendungen muss ich mich dann noch selbst kümmern und entweder dass hier empfohlene portmaster oder portupgrade verwenden. Wobei doch eigentlich beide Programme das gleiche tun.

Hätte man im FreeBSD online Handbuch auch etwas übersichtlicher darstellen können. Als BSD Neuling ist es nämlich keine Selbstverständlichkeit, dass System und Anwendungen strikt getrennt sind.
Deswegen vielen Dank für Eure Erklärungen.

Grüße.
arcona.
 

Florian88

Well-Known Member
#5
Hallo arcona,

ich kann deine Verwirrung verstehen. War auch lange unsicher, wie ein Update richtig und effizient gemacht wird.
Aber ich weiß auch nicht woran das liegt oder was man am Handbuch verbessern könnte. Ich glaube die Verwirrung kommt daher, dass es zu viele Anleitungen gibt, die das gleiche bewirken, aber jeweils ein wenig unterschiedlich vorgehen. Anfänger verwirrt das.

Also ich gehe folgendermaßen vor um meine Rechner aktuell zu halten.

Ich habe folgende Einträge der Crontab hinzugefügt:

Code:
0       10      *       *       *       root    /usr/sbin/freebsd-update cron
0       11      *       *       *       root    portsnap -I cron update && pkg_version -vIL=
Diese bewirken, dass jeden Morgen zwischen 10 und 11 Uhr geprüft wird, ob Updates für das Basissystem vorhanden sind. Wenn ja werden diese heruntergeladen und root bekommt eine Mail.
Die Updates muss ich dann nur noch installieren
Code:
freebsd-update install
Der zweite Eintrag dient zum Aktualisieren des Portstree. Der Schalter -I bewirkt, dass zunächst lediglich die Indexfiles aktualisiert werden und der restliche Portstree nicht verändert wird. Ansonsten könnte es zu Fehlern kommen, wenn zufällig zeitgleich ein Port installiert wird.
Außerdem ist es ausreichend die Indexfiles zu updaten, denn wenn ich pkg_version -vIL= aufrufe, werden die installierten Versionen mit den Versionen der Indexfiles verglichen. Wenn diese nicht überall gleich sind erhält root eine Mail.

Dann führe ich zunächst
Code:
portsnap update
aus um den kompletten Portstree auf den neusten Stand zu bringen.

Danach schaue ich kurz unter /usr/ports/UPDATING nach, ob ich bei irgendeinem der Ports, die aktualisiert werden sollen, was besonderes zu beachten ist.

In der Regel genügt dann ein einfaches
Code:
portupgrade -a
und alles ist wieder auf dem neusten Stand.

Allerdings werden die Ports recht häufig aktualisiert. Ich habe fast jeden Tag einige Aktualisierungen. Mich persönlich stört es nicht, ich mach die updates am Abend, sodass ich am Morgen immer ein aktuelles System habe. Auf Servern mache ich es nur alle paar Wochen oder wenn es in Ports Sicherheitslücken gibt.

Wie du siehst, genügen im Grunde genommen 3 Befehle um ein FreeBSD System aktuell zu halten.
Ich hoffe ich konnte ein klein wenig dazu beitragen, dass du den Updateprozess besser verstehst.

lg
Florian
 

pit234a

Well-Known Member
#6
Nun, das kannst du vielleich so sehen:
FreeBSD ist nämlich FreeBSD und das besteht aus Kernel und Basis-System.
Die weiteren Anwendungen haben nichts mit FreeBSD zu tun. Es ist quasi ein großes Entgegenkommen und eine bedeutende Erleichterung, dass man dir Ports und Pakete zur Verfügung stellt, doch im Grunde haben die nichts mit FreeBSD zu tun.
Das ist ein Unterschied zu dem, was die meisten kennen, wenn sie sich eine Linux-Distribution besorgen. FreeBSD ist keine Distribution, keine Zusammenstellung von Kern, System und Anwendungen und legt deshalb nichts in irgendeiner Richtung fest.
Was man am ehesten als Distributionen auf FreeBSD Basis bezeichnen könnte, sind PC-BSD und vielleicht Desktop-BSD. Inweiweit die aber Automatismen zum Update kennen, weiß ich nicht.
freebsd-update ist noch relativ neu. Vielleicht kennt das Handbuch das deshalb nicht, ich weiß nicht. Vielleicht kennt es das amerikanische Handbuch?, das ist immer etwas aktueller. Grundsätzlich ist es mit diesem Script eine wirklich tolle Sache, doch es ist nicht universell. Wenn du einen eigenen Kernel gebaut hast, kannst du das nicht so machen. Vermutlich gehen die FreeBSD Leute davon aus, dass die Nutzer sich eigene Kernel bauen und dann einen Weg wissen woillen, der auch in diesem Fall gelingt. Dieser Weg ist halt im Handbuch beschrieben.
portinstall und portupgrade sind gleich, portmaster funktioniert ein wenig anders.
portupgrade gehört zum Basis-System, portmaster ist eine Erweiterung und vielleicht etwas moderner, hat einige Vorteile. Es funktioniert aber auch mit portupgrade und du bist also nicht gezwungen, portmaster zu installieren.
freebsd-update fetch install
portsnap fetch update && portupgrade -a
Sind meine Favoriten, freebsd-update benutze ich auch zum Upgrade von FreeBSD auf eine neue Version. Dabei muss meist ein wenig Hand angelegt werden und einige Konfigurationsdateien wollen bearbeitet sein.
Wenn du dich nur auf Pakete beschränkst, bietet pkg_upgrade eine sehr gute Alternative, die ich dir mal empfehlen würde. Damit gelingt ein Systemaufbau auch vollkommen ohne einen Portstree (den du dir ja auch zuvor noch besorgen und installieren musst, denn auch der gehört nicht automatisch zu FreeBSD).
Insgesamt gilt hier recht deutlich, dass es eben keine Vorschriften gibt, wie du mit deinem FreeBSD umgehen musst, sondern sehr viele Freiheiten.
Wie findet man diese Dinge heraus? Denn nur vom Hinsehen alleine kann man die nicht wissen. Ich würde sagen: fragen. Genau, wie du das hier getan hast und dann im Laufe der Zeit lernen. Ansonsten ist das Handbuch jedenfalls ein guter Start und das Wiki sehr zu empfehlen. Die Suche in diesem Forum kann auch helfen, oder allgemeiner, googeln. Es kommen ja immer wieder die gleichen Fragen vor und meist wurden schon mal Antworten geliefert. Manchmal sind die gefundenen Antworten unstimmig und nicht aktuell, liefern aber doch Hinweise und steuern zum Verständnis bei.
 

arcona

Well-Known Member
Themenstarter #7
Eine letzte Frage habe ich noch. Ich habe den Source Tree unter /usr/src mittels sysinstall installiert. Wie kann ich den denn updaten?
Am einfachsten wäre es ja den bestehenden zu löschen und sysinstall erneut aufzurufen und einen frischen Tree saugen. Das geht aber doch sicherlich auch eleganter.

Grüße.
arcona
 

Kamikaze

Warrior of Sunlight
#10
portupgrade gehört zum Basis-System, portmaster ist eine Erweiterung und vielleicht etwas moderner, hat einige Vorteile. Es funktioniert aber auch mit portupgrade und du bist also nicht gezwungen, portmaster zu installieren.
Äh, nein. Portupgrade gehört nicht zum Basissystem. Nicht nur das, es erfordert auch noch Ruby. Portmaster hingegen ist ein Shell-Skript, zieht also im Gegensatz zu portupgrade keinen Rattenschwanz an Abhängigkeiten nach.

Nicht zuletzt wird portupgrade auch nicht mehr weiterentwickelt. Die Ports jedoch werden ständig weiterentwickelt, deshalb würde ich auf jeden Fall von portupgrade abraten und von Anfang an auf portmaster setzen. Es sei denn du willst nur fertige Pakete verwenden. Dann gibt es eigentlich nur pkg_upgrade, die einzige Lösung, die ohne eine Kopie des Ports-Tree auskommt.

Edit:
Das war jetzt irgendwie redundant. Ich hatte den Tab wohl zu lange offen ohne nachzuladen.
 

Florian88

Well-Known Member
#11
Kamikaze hat gesagt.:
Nicht zuletzt wird portupgrade auch nicht mehr weiterentwickelt.
Das wusste ich gar nicht. Ich fand portupgrade bisher eigentlich recht komfortabel. Dann werd ich mich jetzt mal in portmaster einarbeiten. Ich wusste, dass beide Systeme recht gut funktionieren und wollte ursprünglich auch beide ausprobieren und dann schauen was besser funktioniert, allerdings hat mir portupgrade so gut gefallen, dass ich portmaster gar nicht erst installiert habe.

Unter diesen Umständen ist es für einen Neuling wohl wirklich besser gleich auf portmaster zu setzten.

Schade ich fand portupgrade immer ne super Sache.
 

pit234a

Well-Known Member
#12
meine falsche Annahme hat sich auf einen Fehler in der Interpretation der man-sektionen gestützt. Weil portupgrade in Sektion 1 gelistet ist und portmaster in Sektion 8, hatte ich den Fehlschluss vollzogen, portupgrade gehöre zum System.
Danke für die Belehrung.