Fragen zu Versionen, Ports und Packages

guru

Well-Known Member
Guten Tag.

Ich habe, jetzt, wo ich FreeBSD endlich auf einer seperaten Platte installieren konnte, ein paar finale Fragen, zu denen ich noch keine allgemeingültige Antwort finden konnte.

Ports oder Packages? Ich weiß, die beiden beißen sich unter Umständen, und man sollte deshalb bei einem bleiben. Wenn ich jetzt per pkg xorg, kde, nvidia-driver, vlc, libreoffice etc installiere und dann den neuen Linuxulator über die Ports, könnte das Probleme mit sich bringen? Würde ich es wieder mit dem klassischen Fehler, Version 12345 des Pakets XY sei bereits installiert, wie ich es unter 10.0 laufend hatte, zu tun bekommen? Welche Ports- und Package-übergreifende Tools gibt es, um die einzelnen Versionen abzugleichen?

Oder werde ich, um den Linuxulator einsetzen zu können, mich einfach selbst dahintersetzen müssen um dokumentarisches Neuland zu erschließen?

Als ich neulich ein selbst zerschossenes FreeBSD neu aufsetzen wollte, empfahl mir der Installer, erst auf eine neue Version upzudaten, woraufhin ich die Platte formatiert habe, um FreeBSD aufzusetzen, derzeit mit 10.3-RC3. Wenn ich dann von 10.3-RC3 auf 10.3 wechseln möchte, sollte ich über den Installer ebendieses Update durchführen? Es gibt sicher die Möglichkeit, ein Update ohne Installationsmedium durchzuführen. Ist freebsd-update -r 10.3-RELEASE upgrade der Befehl den ich suche? Unter PC-BSD 10.2 hatte ich mal versucht, so auf 11.0-CURRENT zu wechseln, ich bekam keinerlei Fehlermeldungen, nach einem Reboot war alles wie zuvor. Kann im Falle des Wechsels eines ganzen Branches Oder ist es nötig, einen neuen Kernel zu kompilieren? Das hatte ich ein paar Mal mit 2.6.32 (glaube ich) unter Slackware 13.37 versucht, hab mich da allerdings von den hunderttausenden Protokollen, Funktionen, Modulen und Tweaks erschlagen gefühlt ... ist der Aufwand unter FreeBSD ähnlich oder läuft das hier anders routiniert ab?

Danke schonmal für die Antworten,
guru
 
Grundsätzlich sollte man wissen, dass ausschließlich Pakete installiert werden. Jeder Port den du installierst wird zunächst übersetzt und in ein Paket gegossen und dieses wird installiert. Die Schnittstelle zur installierten Software ist also pkg. Sehr wohl kann es aber natürlich sein, dass du bei unterschiedlichen Compile-Optionen verschiedene Abhängigkeiten bekommst. Auch kann es sein, dass du Versionsmässig mal auseinander läufst. Wenn man weiss was man tut, kann man Pakete und Ports durchaus mischen (am Ende sind es ja eh alles Pakete), aber wenn man es nicht weiss, kann man auch schnell mal einen ungünstigen Zustand gelangen.

Upgrades sind grundsätzlich über freebsd-update möglich wenn du auf Releases springst (incl. RC). Mittels freebsd-update wird ein komplettes Binärupdate durchgeführt (inclusive Kernel). Du bekommst also ein komplettes GENERIC-System hingestellt. Einen Kernel selbst zu übersetzen ist heute eigentlich nur noch selten nötig, denn die gängigen Treiber sind eigentlich alle im GENERIC-Kernel oder seinen Modulen bereits enthalten.
Bei PC-BSD könnte es sein, dass du über die Boot-Environments gestolpert bist. PC-BSD ist zwar "nur ein angepasstes FreeBSD", aber es ist schon an einigen Stellen gedreht worden, so dass man einige Ansätz nicht einfach 1:1 umsetzen kann.
 
Danke soweit!

Mir wird also kaum was andres übrig bleiben, als zu basteln ende nie. Ein Codex zum stilvollen Umgang mit Unix wär' nicht schlecht, vielleicht stolper' ich mal über einen. Auch die Compile-Optionen werd' ich nochmal durchkauen. Wie handhabt Ihr eigentlich diese beiden Möglichkeiten? Was installiert Ihr warum per pkg, was warum über die Ports?

Und, wie groß ist der Versionsunterschied zwischen Ports und Packages? Ich nehme an, dass neue Software zuerst über die Ports verfügbar ist, bis sich jemand findet, ein .txz daraus zu machen.

PC-BSD verwendet ja das jeweilige FreeBSD-Release als Codebasis; Inwiefern kocht PC-BSD bis auf das App Cafe bzw. die *.pbis eigene Süppchen?
 
Auf dem Desktop installiere ich eigentlich nur noch Pakete. Das reicht in 99.9% aller Fälle aus und die Standardoptionen sind hier auch meist ausreichend für mich.
Serverseitig läuft im Allgemeinen der Host auch über Pakete (da es sich hier nur um eine minimale Handvoll ohne groß Abhängigkeiten handelt) und die Jails je nachdem über Ports. Da Pakete immer die Standard-Optionen der Ports beinhalten ist hier sehr oft einiges an X11-Abhängigkeiten mit drin. Das ist auf einem Server völlig unnötig und will ich nicht. Zudem sind, gerade auf dem Server, doch bei einigen Ports geänderte Optionen nötig/wünschenswert.
Wenn es hier mal Flavours für die gängigen Punkte (NO_X11) gibt wäre das der nächste große Segen nach dem Wechsel zu pkg.

Ja PC-BSD nutzt FreeBSD das ist richtig. Du kannst aus einem puren FreeBSD auch das biegen was am Ende ein PC-BSD ist. Aber an einigen Punkten wird halt einfach geschraubt (völlig wertfrei). So sind Bootenvironments ja eine wirklich gute Sache. Aber sie sind halt nicht in einer FreeBSD-Installation Standard und gerade im Bereich von Updates sind hier paar Handgriffe extra fällig. (Ob dies nun die Ursache für deine Erfahrungen mit dem Undate unter PC-BSD war weiss ich aber wirklich nicht). Habe PC-BSD länger nicht mehr angesehen aber so gibt es immer wieder Besonderheiten. Früher hatten sie z.B. auch einige Dienste standardmäßig in Jails ausgelagert meine ich. Das ist ja auch alles gut so, aber man muss eben auch entsprechend damit umgehen wenn direkt an den Zahnrädchen arbeitet.
 
Und, wie groß ist der Versionsunterschied zwischen Ports und Packages? Ich nehme an, dass neue Software zuerst über die Ports verfügbar ist, bis sich jemand findet, ein .txz daraus zu machen.
In Standardeinstellung nutzen FreeBSDs Pakete den "quartely" Zweig. Die Pakete werden aus einem spezielles Portstree gebaut, der einmal zu Beginn eines Quartals erstellt und danach nur noch im Fall von Security Problemen aktualisiert wird. Man kann in der /etc/pkg/FreeBSD.conf allerdings auf "latest" umstellen, dann bekommt man im Schnitt täglich neu gebaute Pakete. Sie hängen also nur wenige Stunden hinter den Ports.
 
Und, wie groß ist der Versionsunterschied zwischen Ports und Packages?
Du kannst dir das so vorstellen:
Code:
  ,--->---X (2015Q3 Branch inkl. Sicherheitsupdates)
  |
  |
  |  ,--->---X (2015Q4 Branch inkl. Sicherheitsupdates)
  |  |
  |  | 
  |  |  ,--->---X (2016Q1 Branch inkl. Sicherheitsupdates)
  |  |  |
  |  |  |
  |  |  |  ,--->---X (2016Q2 Branch inkl. Sicherheitsupdates)
  |  |  |  |
  |  |  |  |
--->--->---> FreeBSD Ports --->---> (HEAD)
Alle 3 Monate wird ein neuer Branch erstellt. Von diesem Branch, werden die PKG Pakete gebaut, welche bei FreeBSD standardmässig installiert werden können. Hier sollte sich eigentlich nicht viel ändern ausser kritische Bug und Sicherheitslücken, welche geschlossen werden. Alle 3 Monate welchselt der Branch automatisch zum nächsten. Meist merkt man dies, dass zu diesem Zeitpunkt eine grosse Menge der Pakete aktualisiert werden möchte.

Wenn du jetzt deine Ports selber bauen möchtest, musst du den passenden Branch auschecken [1] oder du landest in HEAD. Dann hast du genau das Problem, dass du unterschiedliche Versionen/Libraries haben kannst. Head ist aber natürlich ein bisschen aktueller.

Ich nehme an, dass neue Software zuerst über die Ports verfügbar ist, bis sich jemand findet, ein .txz daraus zu machen.
Das Pakete erstellen wird über poudriere automatisiert. Mit diesem Tool, können sehr einfach auch Repositorys erstellt werden. Ob du deine Pakete aus den Ports mit poudriere oder z.B. portmaster erstellst, spielt keine Rolle. Schlussendlich hast du immer ein PKG welches auf deinem System installiert wird.

Gruss

[1] https://svnweb.freebsd.org/ports/branches/

PS: ^^ Siehe @Yamagi
 
Danke vielmals für die zahlreichen Antworten! Das schafft wirklich ein Bewusstsein.

Kennt Ihr umfangreichere Lektüre zu dem Thema? Ich halte mich bislang ans Handbuch, doch wie das Projekt genau arbeitet, wird dort kaum erklärt. Wenn man mit Ports auch Downgrades durchführen kann kann, braucht man eigentlich nur ein Auge auf die Versionen zu werfen, damit man sieht, dass eigentlich eh alles problemlos machbar ist. Auf mich warten Stunden spannender Arbeit :D

Nur mal eine Frage am Rande: http://www.freebsd.org/releases/10.3R/schedule.html

Nachdem das Release Announcement für 10.3 für heute veranschlagt ist, liegt es dann nur an unseren 6 Stunden, die wir vorraus sind, dass es noch nicht veröffentlicht wurde, oder habe ich etwas falsch verstanden?
 
früher habe ich fast ausschließlich aus den Ports installiert, weil es mir wichtig war, die Kontrolle über manche Optionen zu besitzen. So wollte ich stringent ohne IPV6 bauen und nie etwas von pulseaudio wissen. Außerdem skippe ich zu vielen Ports die Dokumentation, weil ich bei größeren Themen eh neu im Netz nachlese und mich einfach auf man-pages verlasse. Aber schon seit FreeBSD-7er Versionen hatte ich immer wieder getestet und für gut befunden, komplett nur Pakete zu nutzen. Also noch mit dem alten Paket-System und zB dem Install-Script von kamikaze.
Ich hatte zu früheren Zeiten immer das Gefühl, dass der Bau aus den Ports mir auch eine bessere Performance bescheren kann. Inwieweit das aber Selbsttäuschung war, vermag ich nicht zu sagen. Damals hatte ich oft auch eigene Kernel mit vermindertem Options-Umfang im Betrieb.
Seit etwa FreeBSD 6 benutzte ich dann nur noch GENERIC-Kernel und freebsd-update. Das geht eben viel bequemer und schneller, als der Bau des eigenen Kernels.
Konsequent wäre es dann, auch nur noch Pakete zu nutzen und tatsächlich habe ich das kürzlich auf einer 10.2 Installation gemacht und muss sagen, dass ich damit sehr zufrieden bin. Fast alle meine Installationen sind Desktops. Bei der erwähnten Installation aus den Paketen habe ich auch einige Multimedia-Pakete dabei und da fällt mir auf, dass es kein lame und ffmpeg nur ohne mp3 gibt (was in Lizenz-Bestimmungen begründet ist). Anders, als bei manchen GNU/Linux Versionen, wo es dann aus speziellen Repositries solche zusätzlichen Pakete gibt, müssten wir in FreeBSD dazu wohl auf die Ports zugreifen. Das habe ich bisher noch nicht gemacht, weil es ja für nur zwei Pakete einen ziemlichen Aufwand bedeutet, den kompletten Portstree ein zu pflegen und dann auch in Zukunft die Updates und alle Abhängigkeiten mit Rücksicht darauf zu fahren.
Anders, als ich das bei früheren Versionen doch schon häufiger erlebt hatte, sind aber alle Programme aus den Paketen für mich vollkommen uneingeschränkt nutzbar. Früher gab es schon mal Pakete, etwa für X und seine Treiber oder etwa mpv, die einfach nicht auf meiner HW laufen wollten und wo dann selbst gebaute Versionen aus den Ports tatsächlich Abhilfe brachten. Es gibt auch nun einige wenige Unterschiede in manchen Kleinigkeiten, die aber nicht tragende Funktion besitzen.

Insgesamt würde (und werde) ich aus meiner eigenen Erfahrung abgeleitet, in Zukunft nur noch auf Pakete und freebsd-update setzen, so weit das eben möglich ist.
 
...weil es ja für nur zwei Pakete einen ziemlichen Aufwand bedeutet, den kompletten Portstree ein zu pflegen und dann auch in Zukunft die Updates und alle Abhängigkeiten mit Rücksicht darauf zu fahren...
@pit234a Nimm poudriere dafür. Das macht alles automatisch. Damit sind solche Updates mit vier Befehlen erledigt:
  • poudriere ports -u -p <PORTS-BRANCH>
  • poudriere bulk -f <FILE-mit-deiner-Paketliste> -j <JAIL> -p <PORTS-BRANCH>
  • pkg update -f
  • pkg upgrade
Gruss
 
@pit234a Nimm poudriere dafür. Das macht alles automatisch. Damit sind solche Updates mit vier Befehlen erledigt:
  • poudriere ports -u -p <PORTS-BRANCH>
  • poudriere bulk -f <FILE-mit-deiner-Paketliste> -j <JAIL> -p <PORTS-BRANCH>
  • pkg update -f
  • pkg upgrade
Gruss

Ähm, ohne den ports-tree lokal zu installieren?
dann hatte ich die man-page zu poudriere (mal wieder) falsch verstanden. Ich dachte, das baut Pakete so ähnlich, wie zB portmaster und stellt die dann eben nur in einem speziellen Verzeichnis (dem entsprechenden Repositrie) zur Verfügung, damit sie von dort verteilt werden können und eben alles automatisch.
So, wie du das darstellst, wird einfach der entfernte <PORTS-BRANCH> benutzt und muss gar nicht lokal installiert sein?
Das ist natürlich sau gut!
 
So, wie du das darstellst, wird einfach der entfernte <PORTS-BRANCH> benutzt und muss gar nicht lokal installiert sein?
Doch doch da hast du schon Recht. Das sind die Befehle, um den lokalen Branch zu aktualisieren und danach die Pakete neu zu bauen, wenn erforderlich. Einen Branch auschecken und eine Jail erstellen, musst du vorher schon. Das sind aber auch nur zwei Befehle:
  • poudriere ports -c -B branches/2016Q1 -m svn+https -p 2016Q1
  • poudriere jail -c -j 102_x64 -v 10.2-RELEASE -a amd64
Jetzt kannst du natürlich mehrere JAIL's (FreeBSD 9.3, 10.1 etc.) haben und verschiedene Branches und deine Pakete dagegen bauen. Es gibt ein Config-File für poudriere. Schau vielleicht mal ins Wiki dafür. Dort gibt es eine Anleitung.

Gruss
 
Wenn man wirklich nur ganz wenige Ports nutzen möchte, weil man ein paar Anpassungen braucht, kann man eben jene Programme auch mit "pkg lock" einfrieren, so dass ein normales "pkg upgrade" daran auch nichts ändern wird. Das habe ich in der Vergangenheit immer so gehandhabt.

Mittlerweile lassen sich auch die Programme mit "pkg lock -l" anzeigen, die mittels "pkg lock" eingefroren wurden. So ist das ganze eigentlich ziemlich komfortabel geworden und man muss auf nichts verzichten.
 
Zurück
Oben