freebsd:freebsd_-_portupgrade
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| freebsd:freebsd_-_portupgrade [2024-02-10 19:10:45] – [Allgemeines] manfred | freebsd:freebsd_-_portupgrade [2025-08-09 23:04:45] (aktuell) – [Vorbereitungen] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== FreeBSD - PortUpgrade ====== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== Vorbereitungen ===== | ||
| + | |||
| + | * [[:: | ||
| + | * [[:: | ||
| + | * [[:: | ||
| + | * [[:: | ||
| + | * **[[:: | ||
| + | |||
| + | |||
| + | ===== Allgemeines ===== | ||
| + | |||
| + | * **[[https:// | ||
| + | * Hints & Tips | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * //Wenn Sie befürchten, | ||
| + | * Es kann hilfreich sein, einige Pakete vom Upgrade auszuschließen. Mit der Option **'' | ||
| + | * '' | ||
| + | * Mit diesem Befehl können Sie leicht erkennen, wie viel Speicherplatz von Ruby und allen abhängigen Ports belegt wird: | ||
| + | * '' | ||
| + | * Die Verwendung der Optionen '' | ||
| + | * '' | ||
| + | * Mit '' | ||
| + | * '' | ||
| + | |||
| + | Option -a - Machen es mit allen installierten Paketen. | ||
| + | Option -N - Wenn die installierten Pakete nicht mehr auf aktuellstem Stand sind, der Port' | ||
| + | Option -R - Machen Sie es auch mit allen, die in den angegebenen Paketen erforderlich sind / Rekursiv abrufen, wenn " | ||
| + | Option -r - Tun Sie dies auch je nach den angegebenen Paketen. | ||
| + | Option -F - Nur Distfiles runterladen, | ||
| + | Option -O - Lassen Sie Plausibilitätsprüfungen für Abhängigkeiten weg. | ||
| + | Option -D - Fehlgeschlagene Distfiles löschen und erneut versuchen, wenn die Prüfsumme fehlschlägt. Zweimal angegeben, „make distclean“ vor jedem Abruf oder Build ausführen. | ||
| + | Option -c - Führen Sie für alle Aufgaben vorher „make config-conditional“ aus. | ||
| + | Option -C - Führen Sie für alle Aufgaben vor allem „make config“ aus. | ||
| + | Option -p - Erstellen Sie ein Paket, wenn jeder Port installiert ist. | ||
| + | | ||
| + | > portupgrade -RCar | ||
| + | > portupgrade -RF | ||
| + | > portupgrade -NDRcpr editors/vim | ||
| + | > portupgrade -NDDRpr --batch editors/vim | ||
| + | |||
| + | |||
| + | ===== updaten und installieren von Programmen ===== | ||
| + | |||
| + | Mit cvsup kann man den Portstree aktualisieren/ | ||
| + | aktualisieren/ | ||
| + | up to date zu halten. | ||
| + | Aber wie werden die Programme aktuallisiert, | ||
| + | in form von Paketen installiert wurden? | ||
| + | Das kann man auf zwei Wegen machen. Nehmen wir das Beispiel " | ||
| + | |||
| + | |||
| + | ==== Erstinstallation ==== | ||
| + | |||
| + | # cd / | ||
| + | # make config-recursive | ||
| + | # make | ||
| + | # make install | ||
| + | # make clean | ||
| + | |||
| + | Will man in einem bestehenden System ein installiertes Programm updaten oder ein | ||
| + | neues Programm installieren, | ||
| + | zur Installation aktuellere Programme benötigt als bereits installiert sind. | ||
| + | In soeinem Fall müssen natu:rlich vorher alle Programme ein Update erfahren, | ||
| + | die von dem neuen Programm verwendet werden (Abhängige Programme), | ||
| + | das kann richtig in Arbeit ausarten... | ||
| + | Port (/ | ||
| + | einzige Programm, das mit "make install" | ||
| + | |||
| + | Um also Updates oder weitere Installationen durchzuführen, | ||
| + | " | ||
| + | |||
| + | Portupgrade kann man über die Datei "/ | ||
| + | |||
| + | |||
| + | === Paket-Datenbank === | ||
| + | |||
| + | Um die Paketdatenbank (/ | ||
| + | erstellen (zu überprüfen), | ||
| + | genügt der folgende einfache Befehl. | ||
| + | # pkgdb -F | ||
| + | |||
| + | Bricht das Kommando "pkgdb -F" ab und kann die Datenbank nicht reparieren, | ||
| + | dann hilft nur das löschen der Datenbank | ||
| + | und das erneute aufrufen des Befehls um eine neue Datenbank zu erstellen. | ||
| + | (portupgrade lässt sich sonst nicht ausführen!) | ||
| + | # rm / | ||
| + | # pkgdb -aF | ||
| + | |||
| + | Nach dem die Ports aktualisiert wurden muss die Portsdatenbankdatei | ||
| + | "/ | ||
| + | erstellt/ | ||
| + | erstellen, sollte an dieser Stelle und nach jedem " | ||
| + | das folgende Kommando einmal laufen. Damit portupgrade auch immer die richtigen | ||
| + | Abhaengigkeiten erkennt! | ||
| + | # portsdb -ufU | ||
| + | |||
| + | |||
| + | ==== ein Paket installieren ==== | ||
| + | |||
| + | Und ab jetzt sollten alle Pakete nur noch so installiert werden: | ||
| + | # portinstall -prO [Gruppe]/ | ||
| + | |||
| + | zum Beispiel wird Postfix so installiert: | ||
| + | # portinstall -prO mail/ | ||
| + | |||
| + | Ich würde es aber lieber mit " | ||
| + | da es sonst zu Schwierigkeiten kommen kann, | ||
| + | wenn die installierten Pakete nicht mehr auf aktuellstem Stand sind, | ||
| + | der Port' | ||
| + | und man dann erstmal nur ein Programm neu installieren möchte. | ||
| + | |||
| + | In soeinem Fall würde " | ||
| + | die neue Version des in Abhängigkeit stehenden Programmes, | ||
| + | dass aber schon installiert ist, zu installieren. | ||
| + | |||
| + | Dann bricht der Installationsversuch mit der Fehlermeldung ab, | ||
| + | dass ein Paket schon installiert sein... | ||
| + | |||
| + | Besser ist es, grundsätzlich für einzelne Programme, | ||
| + | egal ob zum installieren oder zum Updaten, das folgende Kommando zu verwenden: | ||
| + | # portupgrade -NROD sysutils/ | ||
| + | |||
| + | Will man dabei nicht mit Fragen belästigt werden und ist mit den Default-Einstellungen zufrieden, | ||
| + | dann nimmt man noch den Schalter " | ||
| + | # portupgrade -NROD --batch sysutils/ | ||
| + | |||
| + | Hier wird jedes in der Kette der Abhängigkeiten stehende Paket versucht upzudaten | ||
| + | und sollte es nicht installiert sein, dann wird es installiert (das bewirkt der Schalter " | ||
| + | |||
| + | |||
| + | ==== ein Update an einem Beispiel ==== | ||
| + | |||
| + | Die einzelnen Schritte am Beispiel von " | ||
| + | |||
| + | # / | ||
| + | |||
| + | Die vorhandenen Konfigurationsdateien werden nicht ueberschrieben, | ||
| + | daher sollte man sie vorher umbenennen, damit die aktuelle Konfigurationsdatei | ||
| + | bei der Installation der neuen Version auch geschrieben wird. | ||
| + | # cd / | ||
| + | # mv httpd.conf httpd.conf_sik | ||
| + | |||
| + | **Updaten: | ||
| + | # portupgrade -RN www/apache2 | ||
| + | |||
| + | Jetzt muessen die Einstellungen an den neuen Apache von Hand angepasst werden. | ||
| + | Im einfachsten Fall hängt man seine Ergänzungen einfach hinten an die | ||
| + | Standartdatei an. | ||
| + | # vi / | ||
| + | |||
| + | **Wenn dann alles klar ist:** | ||
| + | # / | ||
| + | |||
| + | |||
| + | ==== ALLE PROGRAMME aktualisieren ==== | ||
| + | |||
| + | |||
| + | === Quelldateien ermitteln === | ||
| + | Wenn Sie vor dem updaten die nötigen Dateien aus dem Netz ziehen wollen | ||
| + | (was nötig ist, wenn der Rechner keinen direkten Internetzugang besitzt), | ||
| + | dann verwenden Sie die folgende Kommandozeile um die benötigten Dateien | ||
| + | auf einem anderen FreeBSD-Rechner zu saugen: | ||
| + | # portupgrade -arF | ||
| + | |||
| + | |||
| + | === komplette Aktualisierung === | ||
| + | |||
| + | Sollen alle Pakete aktualisiert werden, nur OpenOffice nicht | ||
| + | (weil das zum kompilieren zu lange dauert oder weil es mehr Plattenplatz | ||
| + | braucht als vorhanden ist...) | ||
| + | dann verwenden Sie folgendes Kommando: | ||
| + | # portupgrade -aRx ' | ||
| + | |||
| + | |||
| + | === eine Logdatei erzeugen === | ||
| + | Um anschliessend das Ergebnis in einer Datei zu haben braucht man noch den | ||
| + | Parameter " | ||
| + | # portupgrade -aRl / | ||
| + | |||
| + | |||
| + | === Variablen temporär setzen === | ||
| + | Um bei diesem Update den Apache auch wieder mit SUEXEC zu bekommen | ||
| + | gibt es den Parameter " | ||
| + | (diesen Parameter braucht man nicht, wenn "/ | ||
| + | richtig konfiguriert wurde) | ||
| + | # portupgrade -aRl / | ||
| + | |||
| + | |||
| + | === bei Fehlern nicht abbrechen === | ||
| + | Damit auch Pakete aktualisiert werden, für die nicht alle Abhängigkeiten | ||
| + | aktualisiert werden konnten (wichtig wenn man es automatisieren will), | ||
| + | braucht man noch den Parameter " | ||
| + | # portupgrade -aRkl / | ||
| + | |||
| + | |||
| + | === abwärts rekursiv === | ||
| + | Wollen Sie alle Pakete abwärts rekursiv updaten, | ||
| + | dann verwenden Sie die folgende Kommandozeile: | ||
| + | # portupgrade -ar | ||
| + | |||
| + | |||
| + | Das bedeutet, das alle Pakete, die dieses Paket verwenden, | ||
| + | in der Reihenfolge nach diesem Paket ebenfalls aktualiesiert werden. | ||
| + | |||
| + | |||
| + | === aufwärts rekursiv === | ||
| + | Wollen Sie alle Pakete aufwärts rekursiv updaten, | ||
| + | dann verwenden Sie die folgende Kommandozeile: | ||
| + | # portupgrade -aR | ||
| + | |||
| + | Das bedeutet, das alle Pakete, die von diesem Paket verwendet werden, | ||
| + | in der Reihenfolge vor diesem Paket ebenfalls aktualiesiert werden. | ||
| + | |||
| + | |||
| + | === nur ein Test === | ||
| + | Auch hier kann die Option " | ||
| + | # portupgrade -arn | ||
| + | |||
| + | oder | ||
| + | # portupgrade -aRn | ||
| + | |||
| + | |||
| + | === mit zusätzlichem distclean === | ||
| + | Sollen die Quelldateien nach der Installation aus dem Verzeichnis | ||
| + | "/ | ||
| + | # portupgrade -arD | ||
| + | |||
| + | oder | ||
| + | # portupgrade -aRD | ||
| + | |||
| + | |||
| + | |||
| + | === weitere Optionen === | ||
| + | Wollen Sie bei jedem Paket einzeln gefragt werden, dann noch ein " | ||
| + | Dauert Ihnen das kompilieren zu lange, dann nehmen Sie den Parameter " | ||
| + | (oder sogar -PP dann werden die Ports, fuer die es keine Pakete gibt, | ||
| + | auch keinem Update unterzogen), | ||
| + | so werden die Binaerpackete installiert (die sind oft aber nicht so aktuell). | ||
| + | Haben Sie mehrere Maschinen upzudaten, dann verwenden Sie den Parameter " | ||
| + | der bewirkt das erstellen eines Binaerpacketes nach dem kompilieren und | ||
| + | installieren eines Ports. So haben Sie dann sehr aktuelle Binaerpackete fuer | ||
| + | alle weiteren Maschienen. | ||
| + | |||
| + | |||
| + | === mein Update-Skript === | ||
| + | |||
| + | < | ||
| + | # | ||
| + | |||
| + | PKGOPT=" | ||
| + | |||
| + | VERSION=" | ||
| + | |||
| + | # | ||
| + | |||
| + | freebsd-update fetch | ||
| + | freebsd-update install | ||
| + | # | ||
| + | portsnap fetch update | ||
| + | |||
| + | # | ||
| + | ### Update der Pakete aus dem Repository | ||
| + | |||
| + | BASISPKGS=" | ||
| + | # | ||
| + | pkg ${PKGOPT} install ${BASISPKGS} | ||
| + | pkg ${PKGOPT} update -f | ||
| + | pkg ${PKGOPT} check -Ba | ||
| + | pkg ${PKGOPT} updating | tee updating.txt | ||
| + | pkg ${PKGOPT} upgrade -y | ||
| + | |||
| + | # | ||
| + | ### Update der Pakete aus dem Ports-Tree | ||
| + | # | ||
| + | # damit diese Pakete in jedem Fall aus dem Ports-Tree installiert sind | ||
| + | # | ||
| + | pkg ${PKGOPT} remove -y mail/ | ||
| + | pkg ${PKGOPT} remove -y mail/ | ||
| + | pkg ${PKGOPT} remove -y multimedia/ | ||
| + | pkg ${PKGOPT} remove -y multimedia/ | ||
| + | # | ||
| + | portinstall mail/ | ||
| + | portinstall mail/ | ||
| + | # | ||
| + | ### pkg-static: gettext-runtime-0.19.3 conflicts with gettext-0.18.3.1_1 (installs files into the same place). | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | cd / | ||
| + | cd / | ||
| + | # | ||
| + | MMPKGS1=" | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | pkg ${PKGOPT} install ${BASISPKGS} | ||
| + | pkg ${PKGOPT} install ${MMPKGS1} ${MMPKGS2} ${MINIDLNA} ${SERVIIO} ${LINUXEMUPKG} ${GCC} | ||
| + | |||
| + | pkg ${PKGOPT} info | egrep ' | ||
| + | |||
| + | # | ||
| + | |||
| + | service postfix stop | ||
| + | service dovecot stop | ||
| + | |||
| + | sleep 3 | ||
| + | |||
| + | service postfix restart | ||
| + | service dovecot restart | ||
| + | service named restart | ||
| + | |||
| + | #killall -9 minidlnad | ||
| + | #service minidlna restart | ||
| + | |||
| + | service dovecot status ; service postfix status ; service minidlna status | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | ==== PortsClean ==== | ||
| + | |||
| + | alle Programm-SRC-Verzeichnisse säubern: | ||
| + | # portsclean -C | ||
| + | |||
| + | alle Distfiles zu löschen, die nicht länger benötigt werden (veraltete): | ||
| + | # portsclean -D | ||
| + | |||
| + | nur alle Distfiles löschen, die von keinem derzeit installierten Port referenziert werden (überflüssige): | ||
| + | # portsclean -DD | ||
| + | |||
| + | Doppelte und veraltete Bibliotheken finden und löschen: | ||
| + | # portsclean -L | ||
| + | |||
| + | alles was veraltet ist entfernen (Probelauf): | ||
| + | # portsclean -LDCPn | ||
| + | |||
| + | alles was veraltet ist entfernen (Ernstfall): | ||
| + | # portsclean -LDCP | ||
| + | |||
| + | |||
| + | ==== Bastarde mit pkg_which finden ==== | ||
| + | |||
| + | So kann man alle Dateien in den Verzeichnissen "/ | ||
| + | finden, die zu keinem Paket gehören: | ||
| + | |||
| + | # find /usr/local /usr/X11R6 -type f | xargs pkg_which -v | fgrep '?' | ||
| + | |||
