FreeBSD Portupgrade-Howto klappt nicht

Zephyrus

Debian und FreeBSD
Moin FreeBSD-Gemeinde.

Ich hänge derzeit irgendwie in einem kleinen Loch als Umsteiger von Debian :(

Nachdem ich mich ausgiebig mit Betriebssystemeinstellungen beschäftigt und mich an die doch etwas andere Umgebung gewöhnt habe, wollte ich mit folgendem Artikel weiter machen:

http://wiki.bsdforen.de/index.php/Apache_mit_PHP4_und_PHP5_als_CGI_installieren

Anders als von meiner Seite aus erwartet, beginnt der Artikel (wie ein ähnlicher anderer, wo nur PHP5 installiert wird als Modul) mit dem bauen des Portbaumes (cvsup /usr/ports/ports-supfile ...etc.) und man wird auf http://wiki.bsdforen.de/index.php/FreeBSD_-_Ports verwiesen.

Ich bin ja nun nicht dumm und gebe mir viel Mühe bevor ich hier was frage aber der Artikel wird ab einem bestimmten Punkt unübersichtlich und hinkt, will meinen, es klappt nicht.

Ok, was ist der Stand:
FreeBSD-6.1-SECURITY ist am laufen.
Kernel Security Level ist "enabled" sowie auf "1".

Ich führe als root (oder halt als user+su) folgendes aus:
pkg_add -r cvsup-without-gui
pkg_add -r sysutils/portupgrade

Keine Probleme, funktioniert einwandfrei.

cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile (auch ok)

*default host=cvsup2.at.FreeBSD.org
*default compress
in /etc/ports-supfile angepasst

cvsup -g /etc/ports-supfile
cd /usr/ports
make fetchindex
portsdb -u
pkgdb -F

Ich meine das lief soweit auch alles Fehlerfrei durch. Kann mich jedenfalls nicht daran erinnern, dass ich da Fehler hatte. Haken wir also ab.

Ab nun wird der Artikel unübersichtlich. Es nicht klar zu erkennen, womit ich weiter machen muss. Vom Verstand her würd ich ja sagen, gehts damit weiter:

cd /usr/ports/sysutils/portupgrade
make clean
make install clean

Beim "make install clean" gabs meine ich schon kleine Fehlerchen, da es gestern spät wurde bin ich mir hierbei schon nicht mehr so sicher. Ich werds nachher einfach nochmal in der Reihenfolge ausprobieren.

Dann:
/usr/local/sbin/portsnap fetch update
portsdb -u
pkgdb -F

Bis hierhin wieder keine Probleme. Für reine Paketaktualisierung finde ich den Aufwand bis hierhin jedoch ernorm, vor allem den zeitlichen. Das geht bei Debian aber deutlich fixer. Gut, es sind Ports und keine mit pkg_add gezogenen Pakete, muss man hierbei wohl berücksichtigen. Ich finds dennoch sehr aufwendig.

Ein finales "portupgrade -a" donnerte dann los und quittierte mir nach 2 Stunden, dass 2 geklappt haben, 19 nicht und 7 verworfen oder so. Insgesamt also scheisse. Wenn man sich an das HowTo hält, muss sowas doch funktionieren. Zumal mein System ansonsten per "freebsd-update" aktuell war, wie man ja auch an dem "FreeBSD-6.1-SECURITY" sehen kann.

Muss ich vorher etwa noch mein ganzes System wie hier beschrieben (http://wiki.bsdforen.de/index.php/FreeBSD_-_Make_World) neu zusammen basteln? Dann kann man ja schon fast gleich Gentoo nehmen ;)

Ich hänge an dieser Stelle und bin von Ports auch garnicht begeistert bisher. Einen Zeitlichen Vorteil hatte ich dadurch nicht. Ehrlich gesagt wäre es ja schon fast schneller gewesen, die Apache-Sourcen downzuloaden und selber zu compilieren.

Nachteil ist übrigens durch den "portupgrade" mist, dass nun beim booten mein SSH nicht startet und mein der Port sei schon belegt. Ein /etc/rc.d/sshd restart läuft dann jedoch und es startet. Sehr merkwürdige Art sein System aktuell zu halten.

Mir scheinen diese Ports nicht geheuer. Wie kann ich damit denn wirklich seriös mein System aktuell halten? Kennt jemand eine bessere Anleitung, wenn möglich in Deutsch. Denn da das Thema für mich eh schon komplex genug ist, wäre eine englische Anleitung ja noch eine zusätzliche Belastung. :ugly:
 
*default host=cvsup2.at.FreeBSD.org
*default compress
in /etc/ports-supfile angepasst

cvsup -g /etc/ports-supfile
cd /usr/ports
make fetchindex
portsdb -u
pkgdb -F

portsdb und pkgdb kannst Du Dir erstmal ersparen.
Ein "make fetchindex" reicht aus. pkgdb wirst Du nur anwerfen müssen wenn es Dir gesagt wird.

cd /usr/ports/sysutils/portupgrade
make clean
make install clean

Warum? Du hattest doch schon ein "pkg_add -r sysutils/portupgrade" gemacht. Sprich das Programm ist doch schon installiert.

Beim "make install clean" gabs meine ich schon kleine Fehlerchen, da es gestern spät wurde bin ich mir hierbei schon nicht mehr so sicher. Ich werds nachher einfach nochmal in der Reihenfolge ausprobieren.

Ja, denn das Programm war ja schon installiert, als Paket.

Dann:
/usr/local/sbin/portsnap fetch update
portsdb -u
pkgdb -F

Lass das portsdb und pkgdb Zeuch weg.
Warum portsnap? Du musst Dich entscheiden, entweder den Portstree via cvsup aktuell halten, wie Du es schon gemacht hast, oder mittels portsnap.

Bis hierhin wieder keine Probleme. Für reine Paketaktualisierung finde ich den Aufwand bis hierhin jedoch ernorm, vor allem den zeitlichen. Das geht bei Debian aber deutlich fixer. Gut, es sind Ports und keine mit pkg_add gezogenen Pakete, muss man hierbei wohl berücksichtigen. Ich finds dennoch sehr aufwendig.

Der Aufwand ist gering.
cvsup, make fetchindex, portversion -vL=
Dann siehste welche Ports nicht mehr aktuell sind und kannst diese mittels "portupgrade $portname" aktualisieren.

Ein finales "portupgrade -a" donnerte dann los und quittierte mir nach 2 Stunden, dass 2 geklappt haben, 19 nicht und 7 verworfen oder so. Insgesamt also scheisse. Wenn man sich an das HowTo hält, muss sowas doch funktionieren. Zumal mein System ansonsten per "freebsd-update" aktuell war, wie man ja auch an dem "FreeBSD-6.1-SECURITY" sehen kann.

Genaue Fehlermeldung?
Kleiner Tip: Einen Port nach dem anderen aktualisieren und nicht -a. Schau Dir auch /usr/ports/UPDATING an was Du evtl. beim upgrade des einen oder anderen Ports beachten musst.

Muss ich vorher etwa noch mein ganzes System wie hier beschrieben (http://wiki.bsdforen.de/index.php/FreeBSD_-_Make_World) neu zusammen basteln? Dann kann man ja schon fast gleich Gentoo nehmen ;)

Nein, das ist das base system. Ports und packages ist thirdparty software und hat nichts mit base zu tun.

Ich hänge an dieser Stelle und bin von Ports auch garnicht begeistert bisher. Einen Zeitlichen Vorteil hatte ich dadurch nicht. Ehrlich gesagt wäre es ja schon fast schneller gewesen, die Apache-Sourcen downzuloaden und selber zu compilieren.

Wenn Du es richtig machst, dann nicht. Zumal Du dann wieder in andere Probleme rennst.
Schau Dir doch auch mal das handbook zu diesem Thema an.

Nachteil ist übrigens durch den "portupgrade" mist, dass nun beim booten mein SSH nicht startet und mein der Port sei schon belegt. Ein /etc/rc.d/sshd restart läuft dann jedoch und es startet. Sehr merkwürdige Art sein System aktuell zu halten.

Da Du hier einiges von Anfang an gemischt hast, wundere ich mich nicht über ein solches Verhalten.

Mir scheinen diese Ports nicht geheuer. Wie kann ich damit denn wirklich seriös mein System aktuell halten? Kennt jemand eine bessere Anleitung, wenn möglich in Deutsch. Denn da das Thema für mich eh schon komplex genug ist, wäre eine englische Anleitung ja noch eine zusätzliche Belastung. :ugly:

Das handbook gibt es auch auf Deutsch ;-).

System (base) aktuell halten (neue sourcen, neue ports, neueste docs) mit cvsup:
Code:
*default host=cvsup.de.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix

*default compress
src-all
ports-all tag=.
doc-all tag=.

Mit RELENG_6 verfolgst Du dann STABLE. Was das genau ist siehe hier:
http://wiki.bsdforen.de/index.php/F....2C_Releases.2C_Branches_..._h.C3.A4hhh.3F.3F

Danach kannst Du Dein Base neu bauen, so Du willst (das hat aber nichts mit den installieren Ports/Packages zu tun und ist _kein_ muss, Du kannst also auch nur die ollen Ports/Packages aktualisieren:
Code:
#cd /usr/src
#make buildworld
#make buildkernel KERNCONF=DEINEKERNCONF
#make installkernel KERNCONF=DEINEKERNCONF
#make installworld
#mergemaster
#reboo
Für eine genaue Erklärung schau bitte ins handbook und/oder wiki.

So, Deine Ports. Wir haben schon einen cvsup gemacht, fehlt noch den Index neu zu besorgen:
Code:
#cd /usr/ports
#make fetchindex
Danach nachsehen welche Ports veraltet sind
Code:
#portversion -vL=
Diese Ports dann mittels portupgrade updaten. Portupgrade muss natürlich schon installiert sein, sonst geht auch ein portversion nicht.
Um einen Ports zu installieren der noch nicht vorhanden:
Code:
#portinstall $port
Schau mal in die manpage zu diesem Programm.
 
Wow, danke.
Sehr gut erklärt und Zeit dafür genommen.
Vielen Dank :)

Da hast du gleich etliche Fragen die ich noch hatte automatisch mitbeantwortet.
Jetzt schnall ich das erst so richtig.

Na, dann wollen wir mal :p
 
cvsup kannst du dir meiner Meinug nach ganz weglassen.

Um meine Ports-Baum (/usr/ports) aktuell zu halten vewende ich folgendes:

Intialisierung (d.h. nur einmal notwendig)
Code:
# portsnap fetch
#portsnap extract

Bei Bedarf (oder am Besten regelmässig per cron)
Code:
#portsnap fetch
#portsnap update

Weitere Infos zu portsnap:

Die beiden grössten Vorteile (aus meiner Sicht):
  • Benötigt weniger Bandbreite
  • Ist seit Version 5.5 bzw. 6.0 im Grundsystem vorhanden

Der Port portupgrade dient dazu, um die installierten Programme aktuell zu halten (portupgrade portname) und die installierten Programme mit dem Ports-Baum zu vergleichen zu können(portversion -vL=).

Bei der Installtion aus den Ports (/usr/ports) wird das gewünschte Programm kompilliert, was natürlich seine Zeit dauert (z.B. bei apache). Dafür lässt das Programm den eigenen Bedürfnissen anpassen, zudem sind die Ports häufig aktueller als das entsprechende Package.
 
Würde es eigentlich stören, wenn das Kernel Securelevel auf enable=YES gesetzt und -1 beträgt sowie /usr/sbin mit schg-Flag gesetzt ist? Oder hat das in dem Bezug keine Auswirkungen?
 
Ich würde securelevel erstmal gar nicht setzen, weil du dann keine Kernelmodule mehr laden und keinen X-Server starten kannst.
 
man chflags
man securelevel

Erstmal das System aufsetzen das es rennt, danach kannst Du den Securelevel entsprechend hochsetzen und entsprechende flags davor setzen.
Du kannst in der rc.conf diesen schon auf YES setzen, so lange Du nicht angibst welchen Wert er tragen soll, läuft er immer auf dem niedrigsten Niveau und macht keine Probleme.
 
also ich hab mal folgendes gemacht:

cd /usr/ports
rm -rf *
cvsup -g -L 2 /etc/ports-supfile
make fetchindex
portversion -vL=

Soweit alles Tango und er zeigt mir die veralteten auch an.

Dann habe ich mal lsof ausgewählt und:
portupgrade lsof
gemacht. Lief Fehlerfrei.

Alle anderen jedoch brechen beim compilieren immer ab, jedoch ohne vielsagende Fehlermeldungen. Da steht dann immer nur sowas wie *** Error code 1

Määäh ;'(

Ich glaub KleinFreeBSD und ich müssen erst noch dicke Freunde werden :D
 
Zurück
Oben