clean update

P

poly

Guest
Hi,
mein Problem ist zwar nicht auf FreeBSD beschränkt, aber bezieht sich darauf. Ich möchte gerne das Base System updaten. Hierfür könnte ich freebsd-update benutzen, mache ich aber nicht, da ich das System aus dem Source erstellen will (einige unnötige Sachen wie Bind, etc. deaktiviert).

Nun soll das ganze aber ein "clean update" werden, d.h. alle veralteten Trash Dateien löschen, etc. Dafür müsste ich das neue System in eine temporäre destdir installieren die Dateiliste der destdir mit der nach der Installation bzw. dem letzten Update erstellten vergleichen, überflüssige Dateien löschen, kopieren und symlinks fixen. Sehr umständlich, v.a. die symlinks (da die afaik auf die destdir zeigen) und platzverbrauchend.

Am besten wäre nun erst gar nicht die Dateien in die destdir zu kopieren, sondern "on write" das ganze zu machen. Wie mach ich das (würde mich auch für OpenBSD und NetBSD interessieren)?

Achso: make update ist nicht, was ich suche

Danke
 
Wieviel ich verstanden habe du möchtest dein System updaten aus den Quellen ?
Es gibt Howto und Wiki und da ist es beschrieben.
 
Falls Du RELENG_6, 6.1-RELEASE oder CURRENT einsetzt, sind vielleicht folgende make targets was für Dich. Damit wird das Basissystem zum Teil von Altlasten befreit:

Code:
# check-old           - Print a list of old files/directories in the system.
# delete-old          - Delete obsolete files and directories interactively.
# delete-old-libs     - Delete obsolete libraries interactively.

Ein delete-old-libs sollte allerdings mit Vorsicht gemacht werden, da Ports noch von alten Libraries abhängig sein könnten.

Der gesammte Updateprozess ist auch in src/Makefile beschrieben.

Gruss Scnaeg
 
Scnaeg schrieb:
Falls Du RELENG_6, 6.1-RELEASE oder CURRENT einsetzt, sind vielleicht folgende make targets was für Dich. Damit wird das Basissystem zum Teil von Altlasten befreit:

Code:
# check-old           - Print a list of old files/directories in the system.
# delete-old          - Delete obsolete files and directories interactively.
# delete-old-libs     - Delete obsolete libraries interactively.

Ein delete-old-libs sollte allerdings mit Vorsicht gemacht werden, da Ports noch von alten Libraries abhängig sein könnten.

Der gesammte Updateprozess ist auch in src/Makefile beschrieben.

Gruss Scnaeg
Da werden aber nur files und libraries gelöscht, die in der aktuellen filelist (also die, die gerade kompiliert wurde) sind. Das ist zwar besser, als nichts, aber nicht das, was ich suche, denn ich hatte ja gesagt, ich möchte nichts a la make update.
 
poly schrieb:
Da werden aber nur files und libraries gelöscht, die in der aktuellen filelist (also die, die gerade kompiliert wurde) sind. Das ist zwar besser, als nichts, aber nicht das, was ich suche, denn ich hatte ja gesagt, ich möchte nichts a la make update.
Was'n Quatsch. Da werden ALLE alten Dateien vergangener Welten mit gelöscht.
 
[LoN]Kamikaze schrieb:
Was'n Quatsch. Da werden ALLE alten Dateien vergangener Welten mit gelöscht.
Und wie stellt es fest, welche Dateien alt sind? Wenn jetzt aus irgendeinem Tool ein Header entfernt wird, wird dieser sicher nicht gelöscht. Ich hab' zwar die FreeBSD Makefiles nicht gelesen, aber dafür die von DragonFly und weiss, wie die das machen.

steinex schrieb:
Respekt, du kennst find!
 
Zuletzt bearbeitet von einem Moderator:
Ich verstehe zwar nicht ganz, warum ein make buildworld, make installworld und anschließendem make clean in /usr/src "unclean" sein soll, mich würde aber mal interessieren, wofür du dieses "besonders saubere" updating überhaupt brauchst? Welchen Vorteil hast du dadurch?
 
poly schrieb:
Weil sie System spezifisch sind und sicher nicht vollständig.
Was ist gegen eine FreeBSD spezifische Lösung auf FreeBSD einzuwenden? Oder willst du etwas OpenBSD benutzen um FreeBSD zu updaten?
 
poly schrieb:
Weil sie System spezifisch sind und sicher nicht vollständig.

Also das mit dem "sicher nicht vollständig" ist Quatsch. Schau Dir mal das Commit Log von ObsoleteFiles.inc an. Es wurden sogar Dateien eingetragen, die es schon seit zehn Jahren nicht mehr gibt.

Daß ObsoleteFiles.inc systemspezifisch ist, ist ja wohl selbstverständlich - es ist eine Datei, die sich auf FreeBSD bezieht und auch nur für FreeBSD sinnvoll ist.

Das einzige, was ObsoleteFiles.inc im Moment noch fehlt, ist ein Löschen von optionalen Teilen des Basissystems. Wenn Du bei der Erstinstallation also etwa BIND aufspielst und dann später beschließt, daß Du BIND nicht mehr haben willst, dann gibt es im Moment keine Möglichkeit, es automatisch löschen zu lassen.

Und um Mißverständnissen vorzubeugen, noch ein kleiner Hinweis: Dieser Mechanismus löscht nur veraltete Dateien des Basissystems. Alles, was Du per Ports und Packages installiert hast, wird mit pkg_delete entfernt. Ich habe letztens auf einem Rechner mal ein komplett aufgesetztes Desktopsystem mit pkg_delete \* wieder gelöscht und war erstaunt, wie gut die pkg-plists der einzelnen Ports sind. Es blieben eine Hand voll Dateien übrig, die irgendwann zur Laufzeit der Programme generiert worden waren und in den pkg-plists fehlten. Bis auf die paar Dateien wurde alles wunderschön entfernt.
 
undo schrieb:
Das einzige, was ObsoleteFiles.inc im Moment noch fehlt, ist ein Löschen von optionalen Teilen des Basissystems. Wenn Du bei der Erstinstallation also etwa BIND aufspielst und dann später beschließt, daß Du BIND nicht mehr haben willst, dann gibt es im Moment keine Möglichkeit, es automatisch löschen zu lassen.
In CURRENT ist zum Teil schon möglich: http://www.freebsd.org/cgi/cvsweb.cgi/src/tools/build/mk/OptionalObsoleteFiles.inc

Gruss Scnaeg
 
Zurück
Oben