FreeBSD - Fragen zu Ports- und Packagemanagement

lockna

Member
Hallo Leute!

Ich bin ein recht neuer Nutzer von FreeBSD. An sich finde ich das System echt klasse, aber ich hab ein paar Fragen bezüglich dem Management von Ports und Packages.

Generell das System update ich ja mit freebsd-update fetch und freebsd-update install. Das macht soweit Sinn.
Wenn ich jetzt packages mittels pkg installiere mache ich einfach pkg upgrade && pkg update, oder? Dann sollten meine binary Packages alle upgedatet werden.
Aber wie update ich Ports? An sich würde ich nur Packages verwenden (da ich für config fine-tuning, definitiv noch zu wenig Ahnung von der ganzen Materie habe), aber manche Ports sind ja nicht als package vorhanden, zumindest sagt mir das pkg. Deswegen habe ich die dann über /usr/ports/ nachinstalliert.
Wie update ich dann diese Ports?

Und was hat es damit auf sich, dass es heißt, dass man nicht Packages und Ports mischen sollte.
Ich habe verstanden, dass das mit Abhängigkeiten zusammenhängt.

Ich habe versucht mittels portmaster -a meine Ports upzudaten (hab ich im Nachhinein erst gelesen, dass man portmaster nicht verwenden soll.
Das hat dann aber ziemlich lange gedauert, weil es ziemlich selber kompiliert hat (chromium, firefox, electron, ...) und als ich danach dann pkg upgrade machen wollte, hat es mir electron25, vscode und firefox REMOVED. Firefox konnte ich einfach nachinstallieren, aber vscode kann ich nichtmehr über pkg install installieren.

Tut mir leid, wenn das ziemliche Einsteigerfragen und Probleme sind, aber ich habe noch keine vernünftige Zusammenfassung gefunden die das genau beschreibt.
Würde generell einfach gerne verstehen wie man das handelt wenn man eigentlich Packages verwendet, aber auch Software brauch, die nur als Port zur Verfügung steht.
Weil da muss man dann ja Packages und Ports mischen.
Oder zumindest generell wie man Software auf FreeBSD managed:o

Danke schonmal im Vorraus
 
Wenn ich jetzt packages mittels pkg installiere mache ich einfach pkg upgrade && pkg update, oder?
pkg upgrade reicht völlig. ;)
Aber wie update ich Ports? An sich würde ich nur Packages verwenden (da ich für config fine-tuning, definitiv noch zu wenig Ahnung von der ganzen Materie habe), aber manche Ports sind ja nicht als package vorhanden, zumindest sagt mir das pkg. Deswegen habe ich die dann über /usr/ports/ nachinstalliert.
Wie update ich dann diese Ports?
portsnap fetch update ist hier der richtige weg, wobei du beide Anweisungen auch nacheinander ausführen kannst, also zuerst portsnap fetch und dann ein portsnap update hinterherschicken.
Und was hat es damit auf sich, dass es heißt, dass man nicht Packages und Ports mischen sollte.
Ich habe verstanden, dass das mit Abhängigkeiten zusammenhängt.
Dann kann es dir beispielsweise (vereinfacht gesagt) passieren, dass ein Port eine bestimmte Bibliothek als Abhängigkeit hat und diese dann beim nächsten Update auf eine höhere Version hochzieht, was dann schlecht ist, wenn du noch andere Software (als Package) auf deinem System hast, die zum Beispiel noch die ältere Version eben dieser Bibliothek benötigt und demzufolge nicht mehr richtig funktioniert. In dem Fall sollte man also wissen, welche zusätzlichen Bibliotheken in welcher Version von dem Port abhängen (was du beispielsweise mit ldd in Erfahrung bringen könntest) und welche andere Software diese Bibliothek ebenfalls benötigt. Am besten ist es da wirklich, möglichst die Packages zu verwenden und nur dann auf die Ports zurückzugreifen, wenn es gar nicht anders geht (mein einziger Port ist beispielsweise libdvdcss damit ich verschlüsselte DVDs wiedergeben kann, ansonsten nutze ich nur die Packages).
Tut mir leid, wenn das ziemliche Einsteigerfragen und Probleme sind, aber ich habe noch keine vernünftige Zusammenfassung gefunden die das genau beschreibt.
 
Hi :)

Dein Problem ist, dass die meisten Anleitungen es nicht schaffen den Zusammenhang zwischen Paketen und Ports vernünftig zu erklären. @Macke1979 war etwas schneller, ich versuche mein Glück trotzdem nochmal. Also: Die Ports sind die Bauanleitungen, die Pakete sind das Ergebnis. Der Lebenszyklus beginnt damit, dass ein Port aktualisiert wird. Das FreeBSD-Projekt baut daraus Pakete, die bereitgestellt werden und vom Nutzer durch pkg installiert werden können. Genauso wie man unter Linux seine Pakete nur selten selbst baut, gibt es auch unter FreeBSD nur wenige Gründe Ports zu bauen. Die wohl bekannteste Ausnahme sind die Kernelmodule für Grafikkarten oder eben libdvdcss, wovon es aus juristischen Gründen kein Paket gibt.

Wenn man Ports und Pakete mischt, ergeben sich zwei Probleme. Eher zweieinhalb. Das erste Problem ist, dass Ports prinzipbedingt immer neuer als Pakete sind. Ports werden jederzeit aktualisiert, Pakete nur grob zweimal die Woche gebaut. Man läuft also eher früher als später in die Situation, dass Ports neuere Versionen als Abhängigkeit annehmen, als die Pakete zur Verfügung stellen. Um auf einen Stand zu kommen, bauen Tools wie portmaster dann schnell mal das halbe System neu. Das zweite Problem ist, dass Pakete annehmen, dass ihre Abhängigkeiten mit einem festgelegten Satz Optionen gebaut sind. Ändern sich die Optionen, weil der Nutzer die entsprechenden Ports angepasst hat, funktionieren die Pakete eventuell nicht mehr.

Das halbe Problem ergibt sich daraus, dass das System eines Nutzers niemals sauber ist. Es sind immer Pakete installiert, die das Build-System einer Anwendung ungefragt aufgreifen kann. Oder es sind Konfigurationen gemacht worden, die in den Bau eingreifen. Das führt dann dazu, dass sich Ports nicht bauen lassen oder hinterher nicht funktionieren. Wenn man größere Mengen Ports zu Paketen bauen will, ist es daher eine sehr gute Idee, sich einen eigenen Poudriere-Server zum Massenbauen von Paketen aufzusetzen. Das ist das System, was das FreeBSD Projekt zum Bauen der Pakete nutzt. Vor allem baut es jeden Port in einer sauberen Umgebung und stellt rigoros sicher, dass alle Abhängigkeiten vollständig und korrekt erfüllt sind.

TL;DR: Lasse die Finger von Ports, außer es ist unbedingt notwendig einen Port zu nutzen.
 
Zuletzt bearbeitet:
pkg upgrade reicht völlig. ;)
Ah, okay. Danke.
Ja, okay, macht Sinn mit den Abhängigkeiten.

Das Handbuch hab ich durchgeschaut, aber ich war dann verwirrt, weil ich eben gelesen habe, man sollte portmaster nicht verwenden, aber im Handbuch wurde portmaster verwendet. Da dachte ich mir, ich frag besser nochmal nach.

bauen Tools wie portmaster dann schnell mal das halbe System neu.
Ja, das ist mir eben passiert. Muss schauen wie ich das wieder halbwegs fixxe.

Lasse die Finger von Ports, außer es ist unbedingt notwendig einen Port zu nutzen.

Hab ich mir auch gedacht, aber dann ist mir eben aufgefallen, dass einige Sachen (hexchat als irc client fällt mir gerade ein) nur als Port zu Verfügung standen. Also, ich habs nicht geschafft mit pkg das zu installieren.
Wenn ich das so lese, wirds wahrscheinlich meine Inkompetenz gewesen sein.

Aber vielen dank euch für die Erklärung. Macht schon viel mehr Sinn alles.
 
Das Handbuch hab ich durchgeschaut, aber ich war dann verwirrt, weil ich eben gelesen habe, man sollte portmaster nicht verwenden, aber im Handbuch wurde portmaster verwendet. Da dachte ich mir, ich frag besser nochmal nach.

An einigen Stellen ist das Handbuch leider nicht auf dem aktuellen Stand, z.B. bei portmaster zur Verwaltung der Ports und Pakete, sowie ezjail für die Verwaltung von Jails. Beides funktioniert noch brauchbar, aber es gibt bessere Alternativen.
 
Ja, ich wollte deswegen nochmal auf Nummer sicher gehen und nachfragen.
Mir wurde dann poudriere empfohlen, aber da hab ich noch keinen Überblick gefunden.
Aber da ich eh, erstmal bei Packages bleibe (wenn ich es schaffe die richtig zu verwenden :)), werd ich das eher hinten anreihen.
Gibt sonst noch viel was ich zu lernen hab.
Danke euch, nochmal!
 
Ich habe 2-3 Ports, die ich immer mal wieder baue, u.a. wegen abweichender Build-Konfiguration (zabbix5-server mit XML z.B.). Dafür finde ich ports-mgmt/synth für mich das passende Tool. Es ist um Längen einfacher einzurichten als Poudriere, und vereint einige Vorteile von Poudriere und Portmaster.

Für mich das Killer-Feature gegenüber Poudriere ist die Option "Fetch prebuilt packages". Dann versucht Synth für alle (Build-)Abhängigkeiten die offiziellen Packages zu verwenden und rödelt nicht stundenlang rum, weil es erstmal den LLVM oder openjdk bauen muss bevor es sich irgendwann dem eigentlich zu bauenden Port widmen kann.

Edit: Link eingefügt zu Synth.
 
Auch von mir eine klare Empfehlung für synth. Wenn es denn unbedingt ein Port sein muss, verwende Synth. Ist erstmal etwas Arbeit das einzurichten, dann hast du aber deine Freude damit.
 
Hab ich mir auch gedacht, aber dann ist mir eben aufgefallen, dass einige Sachen (hexchat als irc client fällt mir gerade ein) nur als Port zu Verfügung standen. Also, ich habs nicht geschafft mit pkg das zu installieren.
Wenn ich das so lese, wirds wahrscheinlich meine Inkompetenz gewesen sein.
Also bei mir:
Code:
shinji@freebsd:~ $ pkg search hexchat
hexchat-2.16.1_4               IRC chat program with GTK and Text Frontend
hexchat-fishlim-0.0.19         Encryption plugin for Hexchat
shinji@freebsd:~ $
Eigentlich müsste es mit pkg install hexchat funktionieren.
An einigen Stellen ist das Handbuch leider nicht auf dem aktuellen Stand, z.B. bei portmaster zur Verwaltung der Ports und Pakete, sowie ezjail für die Verwaltung von Jails. Beides funktioniert noch brauchbar, aber es gibt bessere Alternativen
Die Englische Version des Handbuches ist da aber deutlich aktueller, wenn ich mich nicht irre.
Gibt sonst noch viel was ich zu lernen hab.
Danke euch, nochmal!
Gerne und Willkommen zu Hause. :)
 
Eigentlich müsste es mit pkg install hexchat funktionieren.
Dann war es wirklich einfach nur Inkompetenz auf meiner Seite. Gut, dann weiß ich das auch xD

da aber deutlich aktueller, wenn ich mich nicht irre.
An sich ja, aber da wurde auch noch immer portmaster empfohlen als Software. So viel unterscheidet sich da nicht, was ich jetzt gelesen habe zumindest.

Gerne und Willkommen zu Hause. :)
:) Danke
 
Ja, das ist mir eben passiert. Muss schauen wie ich das wieder halbwegs fixxe.
Ich denke, ganz einfach pkg upgrade -f. Dann wird er alle installierten Packages nochmal runterladen und installieren, auch wenn sie schon vorhanden sind, aber eben nur aus Packages. Alternativ pkg delete -a und dann wieder alle Packages, die Du willst, neu installieren. Vorschlag für ein Desktop-System mit LightDM/MATE: pkg install xorg mate lightdm lightdm-gtk-settings.
 
ch denke, ganz einfach pkg upgrade -f.
Hat wunderbar funktioniert, ich danke dir!

Etwas komisches ist aber heute gewesen. Mein home Verzeichnis war einfach leer.
Hab mit zfs mount und zfs list nachgeschaut aber war gemounted.
War einfach leer :confused: Was könnte das verursacht haben? Ich hab jetzt nichts verloren, hatte nochn Backup, aber würde mich trotzdem interessieren woher das kam
 
Hast du mal anstatt unter /home unter /usr/local/home nachgeschaut? Wobei ersteres eigentlich ein symbolischer Link auf /usr/local/home sein sollte, wenn ich mich nicht irre.
 
Zuletzt bearbeitet:
Ja, hab ich auch nachgeschaut.
Den Ordner von meinem User hats noch gegeben, aber der Inhalt war einfach weg.
Ganz komisch. Hab mal wieder alles gemacht und backup gemacht. Mal schauen, ob das nochmal auftritt.
 
Ja, ist bei mir auch ein symbolic Link. Wusste es jetzt auch nicht auswendig, hab halt bei zfs mount und zfs list nachgeschaut und da nachgeschaut. War gemounted, aber einfach leer. Nicht ganz, weil als ich dann X und so gestartet habe, haben die shells wieder so ne standard config file gemacht halt.

Aber scheint wieder zu gehen, ohne Probleme.

Nur vscode krieg ich jetzt nicht mehr installiert. pkg scheint es einfach nicht zu finden. Nur über Ports :(
 
Es ist derzeit nicht in den Repos enthalten. https://www.freshports.org/editors/vscode/ zeigt es an. Allerdings gibt es auch keinen Build-Fehler unter https://portsfallout.com/fallout?port=editors/vscode Das heißt, nicht vscode selbst baut nicht, sondern eine Abhängigkeit. Zusammen mit der letzten Änderung an dem Port gerade heute "chase electron25 update" würde ich sagen, dass jemand Electron aktualisiert hat und daran vscode kaputt gegangen ist und es im nächsten Build wieder drin sein wird. :) Und nein, Elektron willst du nicht selbst bauen, außer du hast eine krank-dicke CPU...
 
Ja, das hab ich dann auch entdeckt gehabt. Danke.
Dann versuch ich mich in der Zwischenzeit mal an vim, jetzt hab ich keine Ausrede mehr.
Glaub mein 3600er würd bei electron builden schön die Luft ausgehen.
 
Zurück
Oben