FreeBSD - Das System aktuell halten

Original geschrieben von Peter Cremer

Ich frage mich ernsthaft, wie ich diese Seite übersehen konnte! :eek:
In Sachen Konsistenz ist das Handbuch wirklich noch verbesserungsfähig. Das entsprechende Kapitel befindet sich im Anhang unter "CVSup-Tags"

buebo
 
Um noch mal auf das Auto-Update zu sprechen zu kommen, was spricht denn dagegen einfach ein 'make world' durch einen cron-job anzuwerfen?
Eine andere Idee wäre es (ganz spontan) einen Cronjob zu haben der alle paar Minuten Das Mailverzeichniss durchsucht und bei einer Mail die speziellen Kriterien entspricht das 'make world' oder ein Portupgrade anwirft.

buebo
 
@Peter Cremer,

Du kannst auch fastest_cvsup benutzen, /usr/ports/sysutils/fastest_cvsup, wobei mich das Tool nicht unbedingt überzeugt, da es nur nen Ping meiner Meinung nach absetzt und daraus Statistiken erzeugt.

Ich verwende gern den cvsup2.freebsd.org, so ziemlich immer erreichbar und immer flott, obwohl o.g. tool mir andere Server vorschlägt.
 
Original geschrieben von buebo
Um noch mal auf das Auto-Update zu sprechen zu kommen, was spricht denn dagegen einfach ein 'make world' durch einen cron-job anzuwerfen?


Wenn, dann "buildworld". Du willst nicht automatisch die
Welt installieren lassen, falls es mal irgendwo schiefgeht.

Und das kann auch bei Stable vorkommen, wenn man z.B.
durch unglückliches Timing mitten in einen Update auf dem
Server reinrutscht und dann was nicht zusammen passt.
 
Du kannst auch fastest_cvsup benutzen, /usr/ports/sysutils/fastest_cvsup, wobei mich das Tool nicht unbedingt überzeugt, da es nur nen Ping meiner Meinung nach absetzt und daraus Statistiken erzeugt.
Danke für den Tip. Ich bleibe aber lieber bei cvsup.

Ich verwende gern den cvsup2.freebsd.org, so ziemlich immer erreichbar und immer flott, obwohl o.g. tool mir andere Server vorschlägt.
Ich benutze diesen Server jetzt auch und kann mich über die Geschwindigkeit nicht mehr beklagen ...

Das "Welt neu bauen" ( :p ) funktioniert auch tadellos.

Womit ich aber immer noch Probleme habe, ist das Upgrade der installierten Ports, nachdem ich die Quellen mit cvsup aktualisiert habe:

1. Wenn ich alle installierten Ports updaten will, dann macht sich mein Rechner tot und ich könnte ihn tagelang rattern lassen, vor allem, wenn er alle Abhängigkeiten prüft und die benötigten Ports ebenfalls updatet. Ich habe auch das Gefühl, daß er sich mehr oder weniger in einer Endlosschleife bewegt und immer wieder aufs Neue probiert, dieselben Ports zu updaten, wenn ein anderer Port ihn als Anhängigkeit benötigt. Bsp. Port XYZ wird von 20 anderen Ports als Abhängigkeit benötigt. Bei jedem Update eines der 20 Ports wird Port XYZ wieder geupdatet, obwohl dies schon geschehen ist oder mit einer Fehlermeldung abgebrochen wurde. Portupgrade scheint sich die Ergebnisse nicht wirklich zu merken, sonst würde es dies nicht immer wieder tun. Das Ganze ist irgendwo einfach nicht wirklich praktikabel. Da muß es doch eine bessere Lösung geben ...

2. Der Update-Prozeß ist mit vielen Fehlern behaftet und wird an vielen Stellen (bei vielen Ports) mit kritischen Fehlermeldungen abgebrochen und danach versucht, die alte Version zu reinstallieren. Mir scheint es so, als ob viele Ports zueinandern nicht kompatibel sind. Es ist das reinste Dilemma ...

Wie macht ihr das denn? Wie haltet ihr eure installierten Anwendungen und Ports aktuell? Es gibt ja u.a. auch Sicherheitsupdates bei bestimmten Anwendungen, die man natürlich einspielen will. Momentan kann ich dies aber nicht, weil die installierten Ports sich nicht updaten lassen und Packages noch nicht verfügbar sind.

Gruß,
Peter
 
Wenn ein "alter" Port oefters ge-updatet wird, dann hast Du wahrscheinlich zwei Versionen davon installiert. Und dann versucht er immer wieder die alte zu erneuern, installiert aber im Endeffekt nur die neue nochmal. Also erstmal mit 'pkgdb -F' deine Package-Datenbank ueberpruefen.

Ansonsten kommt es bei mir eher selten vor, das Port das upgrade verweigern. Falls doch, so ist meistens nach 2-3 Tagen eine ueberarbeitete Version da, die den Fehler behebt.

Wo hakt es denn konkret bei Dir?
 
Hallo,

also die Datenbank ist i.O. "pkgdb -F" meldet keine Fehler o.ä.

Ich eigentlich nur die bereits installierten Ports aktualisieren, wenn dies im Einzelfall nötig ist. Allerdings beginnt er dann immer gleich alles mögliche als Folge von Abhängigkeiten zu installieren. Teilweise wird das sicherlich schon stimmen.

Allerdings bezweifle ich, daß man hinterher dann alle überhaupt existierenden Ports installiert haben muß. Und genau das ist das Problem. Als ich das letzte Mal versucht habe, die Ports zu aktualisieren, hat er sich 26 Stunden lang damit beschäftigt (danach habe ich das abgebrochen und alles neu installiert), angebliche Abhängigkeiten zu lösen, Ports herunterzuladen, zu kompilieren und zu installieren, oftmals mit Fehlermeldungen und Reinstallation der alten Ports. Er macht sich tot.

Kann jemand vielleicht bitte seine make.conf posten? Vielleicht liegt es ja nur an irgendwelchen Einstellungen. Welches sind die optimalsten Einstellungen in der make.conf? Momentan ist in meiner make.conf alles auf Default, sprich: es steht gar nichts drin und die Defaults werden verwendet. Allerdings funktionert das Neubauen von Kernel und auch make buildworld etc. fehlerfrei.

Oder sollte ich vorher irgendwelche Verzeichnisse leeren, wie z.B. /usr/obj , weil dadurch irgendwelche falschen Abhängigkeiten entstehen?

Gruß,
Peter
 
@saintjoe:
In "man portsdb" steht, das man nach JEDEM cvsup ein portsdb -Uu UNBEDINGT machen soll.

Ich bin ja nun nicht der absolute_ports_crack,
aber spielt das denn nun doch (k)eine Rolle?
*nur eine bescheidene Frage*
 
Nun, das ist sicherlich erforderlich, aber nicht Gegenstand des Howtos.
Es geht hier ja um ein Update des Basissystems, nicht um ein Update der Installierten Ports.
 
Hab mit den neuen Kernel 5.2 CURRENT mittels
config
make depent
make
make install
gebaut und installiert.
Wozu benötige ich dann noch make world usf., was macht das genau?
Ist die Reihenfolge richtig, erst make world und dann den kernel?
make buildkernel KERNCONF=$NAME_DEINER_CONFIG
make installkernel KERNCONF=$NAME_DEINER_CONFIG
liefen übrigens nicht durch:
Hier die Fehlermeldung:
# make buildkernel KERNCONF=GENERIC
"Makefile.inc1", line 745: warning: String comparison operator should be either == or !=
"Makefile.inc1", line 745: Malformed conditional ((!defined(NO_RESCUE) || defined(RELEASEDIR)) &&
(${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 501101))
"Makefile.inc1", line 745: Missing dependency operator
"Makefile.inc1", line 747: if-less endif
"Makefile.inc1", line 747: Need an operator
make: fatal errors encountered -- cannot continue
*** Error code 1

Stop in /usr/ncvs/src.

Hab den thread http://www.bsdforen.de/forums/showthread.php?s=&threadid=2296
gelesen, kann aber nicht viel damit anfangen.

Mag mir das jemand netterweise noch mal einfach erklären, so zum Mitmeißeln?
Danke.
 
Zuletzt bearbeitet:
Hmm den Streß mit dem Makefile hatte ich auch mal. Hat sich bei mir von selber gelöst nachdem nochmal neu cvsup gemacht habe. In welcher Reihenfolge Du Kernel und world baust ist nicht egal. Schau mal unter /usr/src/UPDATING nach. Da steht das mit zuerst kernel und dann world machen sollte. Also bauen kannst Du es sicher gleichzeitig, beim installieren würde ich die Reihenfolge beachten. Ich meine das es zuerst kernel und dann mit neuen kernel world ist. Schau nochmal nach unter UPDATING.

Also wie ich das gemacht habe quasi so.

make buildkernel
make buildworld
make installkernel
-reboot-
mergemaster -p
make installworld
mergemaster
-reboot-
*daumendrück*

Also make world baut den Rest des Systems. Kernel ja offentsichtlich nur den Kernel. World sind Dinge wie alle Befehle die Du so eintippst und Dienste (ssh, sendmail...).

Ach ja was man im Handbuch lesen kann ist das man vor dem ganzen Prozedere das Verzeichnis /usr/obj löschen sollte und make cleandir ausführen.

So ich hoffe das hilft ein wenig. Bin allerdings auch kein Profi, daher lies lieber nochmal nach.... Bei mir hats aber so geklappt.
 
Muß make buildworld auch noch Argumente haben wie make buildkernel? Lief nämlich nicht durch. Im /usr/obj war gar nichts zu finden, make cleandir ergab nichts, sagte er mir, don't know how to make...:confused:

UPDATE meinte es übrigens so:
<make sure you have good level 0 dumps>
<maybe fix /etc/fstab> [7]
make buildworld [9]
make buildkernel KERNCONF=YOUR_KERNEL_HERE [8]
cp src/sys/${MACHINE}/conf/GENERIC.hints /boot/device.hints [2]
make installkernel KERNCONF=YOUR_KERNEL_HERE
cd src/sys/boot ; make install [6]
[1]
<reboot in single user> [3]
mergemaster -p [5]
rm -rf /usr/include/g++
make installworld
mergemaster [4]
<reboot>

Also erst die Welt bauen und dann den Kernel. Alles etwas verwirrend, im Handbuch war gar nichts von der Welt, jeder meint es scheinbar anders.

Den Kernel habe ich aber schon gebaut und installiert, lief auch glatt mit der "alten" Methode:
> uname -a
FreeBSD i18n.be-rliner.de 5.2-CURRENT FreeBSD 5.2-CURRENT #2: Sun Dec 14 20:42:54 CET 2003 udo@i18n.be-rliner.de:/usr/src/sys/i386/compile/SMPKERNEL i386

HILFE!
 
Zuletzt bearbeitet:
Hallo nochmal!

Nein buildworld braucht keine Argumente. Auf jeden Fall ist es ein wenig komisch wenn er cleandir nicht kennt. Wenn kein obj Verzeichnis da ist ist das ja egal. Wird ja neu gemacht, deswegen sollte man das alte ja auch loeschen. Ja wie ich oben schon geschrieben habe (oder auch nicht), die Reihenfolge wie man das BAUT ist egal. Mit bauen veraendert man ja noch nix. Die Reihenfolge mit der man es INSTALLIERT ist wichtig. Deswegen baue ich ja alles, dann installiere ich den Kernel und dann installiere ich world.
Hmm aber es scheint als sei Dein Makefile ein wenig kaputt?!? Wenn die Sachen nicht gehen(cleandir). Aber das buildworld nicht richtig geht kann mehrere Gruende haben. In der Mailingsliste schreiben öfters mal Leute bei denen es aus irgentwelchen Gründen nicht tut. Mehr kann ich von hier leider nicht sagen, da ich nicht zu Hause bin und meine Rechner aus. Zum Thema UPDATING melde ich mich nochmal. Wie gesagt habe gerade nix hier. Ach ja wenn es dumm tut versuche doch mal 5.2RC. Das gehen solchen Sachen dann mit Sicherheit... *weiterdaumendrück*
 
...
mkmagic: magic, 35040: offset @MFC: Christos Zoulas's FILE 3.33 invalid
mkmagic: magic, 35040: type @MFC: Christos Zoulas's FILE 3.33 invalid
mkmagic: magic, 35041: offset @ invalid
mkmagic: magic, 35041: type @ invalid
mkmagic: magic, 35042: offset text invalid
mkmagic: magic, 35042: type text invalid
mkmagic: magic, 35043: offset @@ invalid
mkmagic: magic, 35043: type @@ invalid
*** Error code 1

Stop in /usr/src/usr.bin/file.
*** Error code 1

Stop in /usr/src/usr.bin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
Irgendwer spuckt mir da in die Suppe.
 
Kann man die richtige Makefile irgendwo herbekommen? Scheinbar greift die auf weitere Unter-Makefiles zurück, cvsup sollte aber auch diese Dateien auf den neuesten Stand bringen, bei src=all und cvs tag=.
Es will und will nich klappen, auch make update bricht ab:
i18n# make update
"Makefile.inc1", line 739: warning: String comparison operator should be either == or !=
"Makefile.inc1", line 739: Malformed conditional ((!defined(NO_RESCUE) || defined(RELEASEDIR)) && (${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 501101))
"Makefile.inc1", line 739: Missing dependency operator
"Makefile.inc1", line 741: if-less endif
"Makefile.inc1", line 741: Need an operator
make: fatal errors encountered -- cannot continue
*** Error code 1

Stop in /usr/src.

Bitte um Hilfe. So ein halbgebautes System kann ja nicht gut sein.
 
Als ich machs immer so:

/usr/share/examples/cvsup/standard-supfile editieren, wobei hier nur ein cvsup
Server einzutragen ist( z.B.*default host=cvsup4.Freebsd.org). cvs tag=. ist auf
jeden Fall in Ordnung. Dann mit dem Kommando

cvsup -g -L 2 /usr/share/examples/cvsup/standard-supfile

die Sources aktualisieren.

cd /usr/src
make clean && rm -rf /usr/obj/*
make buildworld
make buildkernel KERNCONF=YOUR_KERNEL_HERE
/*notfalls GENERIC nehmen*/
make installkernel KERNCONF = YOUR_KERNEL_HERE
reboot
mergemaster -p
make installworld
mergemaster
reboot

Das Gleiche gilt auch fürs Updaten der Ports, nur halt mit ports-supfile. Anschliessend "portupgrade -a".

Hoffe ich konnte helfen und poste mal wie's dir ergangen ist.
 
...mkmagic: magic, 35042: type text invalid
mkmagic: magic, 35043: offset @@ invalid
mkmagic: magic, 35043: type @@ invalid
*** Error code 1

Stop in /usr/src/usr.bin/file.
*** Error code 1

Stop in /usr/src/usr.bin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

"The same procedure as every year, James."

mkmagic scheint der böse Bube zu sein. Oder kann es sein, daß FreeBSD nicht auf Dualsystemen kompilieren will?
make buildkernel KERNCONF=SMPKERNEL lief diesmal übrigens erstaunlicherweise durch.

Bin völlig ratlos. Ob ich vielleicht mal den ganzen /usr/src löschen soll?

PS.: Wie heißt der korrekte cvs tag für 5.2RC?

EDIT: Hab ihn schon gefunden. Ist vielleicht besser, um etwas Ruhe zu bekommen. Danke erst mal, melde mich nach (hoffentlich) erfolgreicher Prozedur wieder.:o
 
Zuletzt bearbeitet:
Achso SMP, tja das ist unter FBSD schon sehr heikel. Hast du das (mit dem momentanen Kernel) schon am Laufen?? Wenn nicht, dann hat's damit nix zu tun. Hab auf meinem Server auch 2xPIII DUAL, und Probleme gehabt. Allerdings nicht beim Kompilieren. Hab dann 4.9 STABLE installiert und seitdem
läufts.
 
Nee, wie gesagt, den Kernel jab ich ja schon in alter Art kompiliert und installiert. Nur der Rest des Systems fehlt... Ich probier's mal mit 5.2RC.
Sind übrigens auch PIII, Coppermine 1 GHz.
Rennt unter BeOS wie Schmitds Katze;), nur FreeBSD hackelt manchmal.
 
Zuletzt bearbeitet:
Aber genau das könnte das Problem sein, wenn nämlich Kernel der Kernel schon mal mit SMP kompliliert worden ist, könnte das Instabilität verursachen -> make buildworld/kernel bricht ab. Bei mir war das genau das gleiche. Läuft denn SMP? dmesg | grep CPU.
Notfalls musst du in den alten Kernel booten( 1 CPU), und auf STABLE downgraden. Die SMP-Unterstützung von Freebsd ist echt nicht ganz ausgereift.
 
Zurück
Oben