portupgrade




BACK ..


updaten und installieren von Programmen ======================================= Mit cvsup kann man den Portstree aktualisieren/holen und die Systemquellen aktualisieren/holen um nicht nur die Programme sondern auch das Basissystem up to date zu halten. Aber wie werden die Programme aktuallisiert, die aus den Ports installiert oder in form von Paketen installiert wurden? Das kann man auf zwei Wegen machen. Nehmen wir das Beispiel "Apache 2" Erstinstallation ---------------- # cd /usr/ports/sysutils/portupgrade/ # make install ; make clean Will man in einem bestehenden System ein installiertes Programm updaten oder ein neues Programm installieren, ist es in aller Regel so, dass das neue Programm zur Installation aktuellere Programme benötigt als bereits installiert sind. In soeinem Fall müssen natürlich vorher alle Programme ein Update erfahren, die von dem neuen Programm verwendet werden (Abhängige Programme), das kann richtig in Arbeit ausarten... aber auch für diese Arbeit gibt es einen Port (/usr/ports/sysutils/portupgrade/), nimmt man es ganz genau, ist dieses das einzige Programm, das mit "make install" installiert wird. Um also Updates oder weitere Installationen durchzuführen, nimmt man am besten "portupgrade"! Um Portupgrade zu konfigurieren, muss man die Datei "/usr/local/etc/pkgtools.conf" editieren. und anschliessend... Um die Paketdatenbank (/var/db/pkg/pkgdb.db) der installierten Pakete zu erstellen (zu überprüfen), die portupgrade zur Arbeit braucht, gebuegt der folgende einfache Befehl. # pkgdb -F Bricht das Kommando "pkgdb -F" ab und kann die DatenBank nicht reparieren, dann hilft nur das loeschen der Datenbank und das erneute aufrufen des Befehls um eine neue Datenbank zu erstellen. (portupgrade laesst sich sonst nicht ausfuehren!) # rm /var/db/pkg/pkgdb.db # pkgdb -F Nach dem die Ports aktualisiert wurden muss die Portsdatenbankdatei "/usr/ports/INDEX.db" erstellt/aktuallisiert und der Ports-Index erstellt/aktuallisiert werden. Um die Portsdatenbank der aktuellen Pakete zu erstellen, sollte an dieser Stelle und nach jedem "cvsup" ueber den Ports-tree das folgende Kommando einmal laufen. Damit portupgrade auch immer die richtigen Abhaengigkeiten erkennt! # portsdb -ufU ... im Anschluss hier weiter... Die einzelnen Schritte am Beispiel von "Apache 2" sehen dann so aus: -------------------------------------------------------------------- # /usr/local/etc/rc.d/apache2.sh stop 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 /usr/local/etc/apache2/ # 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 /usr/local/etc/apache2/httpd.conf Wenn dann alles klar ist: # /usr/local/etc/rc.d/apache2.sh start ALLE PROGRAMME ---------------- Wollen Sie vor dem updaten die noetigen Dateien aus dem Netz ziehen wollen (was nicht extra erforderlich, aber manchmal nuetzlich, ist), dann verwenden Sie die folgende Kommandozeile: # portupgrade -aRF Sollen alle Pakete aktuallisiert 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 'de-openoffice-*' Um anschliessend das Ergebnis in einer Datei zu haben braucht man noch den Parameter "-l". # portupgrade -aRl /var/tmp/portupgrade.log -x 'de-openoffice-*' Um bei diesem Update den Apache auch wieder mit SUEXEC zu bekommen gibt es den Parameter "-m". (diesen Parameter braucht man nicht, wenn "/usr/local/etc/pkgtools.conf" richtig konfiguriert wurde) # portupgrade -aRl /var/tmp/portupgrade.log -x 'de-openoffice-*' -m 'WITH_SUEXEC=yes' www/apache2 Damit auch Pakete aktuallisiert werden, fuer die nicht alle abhaengigen aktualisiert werden konnten (wichtig wenn man es automatisieren will), braucht man noch den Parameter "-k". # portupgrade -aRkl /var/tmp/portupgrade.log -x 'de-openoffice-*' Wollen Sie alle Pakete abwaerts 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. Wollen Sie alle Pakete aufwaerts 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. Auch hier kann die Option "-n" zum testen verwendet werden. # portupgrade -arn oder # portupgrade -aRn Sollen die Quelldateien nach der Installation aus dem Verzeichnis "/usr/ports/distfiles/" geloescht werden, muss der Parameter "-D" mit dazu. # portupgrade -arD oder # portupgrade -aRD Wollen Sie bei jedem Paket einzeln gefragt werden, dann noch ein "-i" ran. Dauert Ihnen das kompilieren zu lange, dann nehmen Sie den Parameter "-P" (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 "-p", der bewirkt das erstellen eines Binaerpacketes nach dem kompilieren und installieren eines Ports. So haben Sie dann sehr aktuelle Binaerpackete fuer alle weiteren Maschienen. pkg_which --------- So kann man alle Dateien in den Verzeichnissen "/usr/local" und "/usr/X11R6" finden, die zu keinem Paket gehören: find /usr/local /usr/X11R6 -type f | xargs pkg_which -v | fgrep '?' Weitere Infos "man portupgrade" und "man ports".