Re: /usr/ports/packages/All aufräumen

From: O. Hartmann <ohartman(at)zedat.fu-berlin.de>
Date: Sat, 23 Jun 2018 11:12:16 +0200

Am Wed, 20 Jun 2018 14:40:42 +0200
Sascha Hüdepohl <bsd(at)ravenworks.de> schrieb:

> Hallo!
>
> * Harold Gutch (logix(at)foobar.franken.de) schrieb:
>
> > "rm *" (oder "mv * old" oder dergleichen) klingt für mich relativ
> > einfach. Wenn du nur alte Pakete löschen/wegschieben willst kannst du
> > das ja anhand der Zeitstempel machen.
>
> Alles löschen war auch mein erster Gedanke, aber dann ist eben alles
> weg. Und portmaster baut ja nicht immer *alle* Pakete neu.
> Ich kann das grade nicht reproduzieren, aber ich meine damit gab es dann
> ein Problem.
>
> > Was genau für "Warnungen" meinst du eigentlich?
>
> Ah, hab ich vergessen zu schreiben.
> Ich mache dann also auf dem Produktiv-system:
>
> # pkg upgrade
>
> Das resultiert dann in einer sqlite-Fehlermeldung wie dieser:
>
> sqlite error while executing CREATE INDEX packages_origin ON
> packages(origin COLLATE NOCASE);CREATE INDEX packages_name ON
> packages(name COLLATE NOCASE);CREATE INDEX packages_uid_nocase ON
> packages(name COLLATE NOCASE, origin COLLATE NOCASE);CREATE INDEX
> packages_version_nocase ON packages(name COLLATE NOCASE, version);CREATE
> INDEX packages_uid ON packages(name, origin);CREATE INDEX
> packages_version ON packages(name, version);CREATE UNIQUE INDEX
> packages_digest ON packages(manifestdigest); in file pkgdb.c:2406:
> UNIQUE constraint failed: packages.manifestdigest
>
> Ich hab mir das alles angeguckt und es war eben tatsächlich so, das das
> Feld doppelte Einträge enthielt. Manuelles aufräumen von
> /usr/ports/packages/All und anschließendes pkg repo /usr/ports/packages
> hat das Problem behoben.
> (vorher hab ich noch alle Pakete deinstalliert und /var/db/pkg/
> gelöscht)
>
> Meine Suche nach dieser Fehlermeldung hat nur einen Treffer geliefert,
> bei dem es um poudriere ging. Das half mir nicht.
>
>
> Gruß
> Sascha
>
>
> To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
> with "unsubscribe de-bsd-questions" in the body of the message

Hallo Sascha.

Ich (wir) bauen für diverse System (und Architekturen) Pakete via "poudriere", um die
"Downtimes" so gering wie möglich zu halten. Ich baue auf meinen (insulären) Systemen
nach wie vor meine Ports aus den Quellen, schon um Optimierungen für bestimmte
Prozessortypen mitnehmen zu können.

Das Problem immer größer werdender Paketverzeichnisse läßt sich ganz elegant mit "rsync"
beheben! Ich/wir machen das seit Jahren so - selbst für die Pkg-Base (also das
Basissystem auf pkg Basis). Wenn poudriere ein Repositorium erfolgreich gebaut hat, liegt
die komplette Infrastruktur (Verzeichnisbaum) ersteinmal in einem für poudriere
zugeteilten Verzeichnis, zum Beispiel

/pool/poudriere/data/packages/JAILNAME-PORTSTREENAME-SETNAME/.latest/

Ich kopiere dann - für "base" und "packages" sowie per Architektur (amd64 und aarch64 in
unserem Falle) via "rsync -rlv --force --delete" von der Quelle zum Ziel. poudriere
löscht in seinem Meta-Packages-Verzeichnis beim Erstellen eines Repositoriums schon beim
Bau alle veralteten Pakete (vorausgesetzt, die Konfiguration des poudriere ist korrekt).
Wenn man dann mit rsync Quelle und Ziel entsprechend synchronisiert, werden auch die
alten Pakete gelöscht!

Da man poudriere auch anweisen kann, mehrere ältere Bauprozesse eines Repositoriums zu
behalten (wir behalten 5, unter .latest (symbolischer Link auf das per Datum
identifizierte, letztgebaute Repo) ist dann das neueste Repo), kannst Du zur Not auch
immer wieder ein älteres Repo synchronisieren. Das aber wären schon Finessen, die Du hier
vielleicht gar nicht benötigst.

Gruß
oh


To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 23 Jun 2018 - 11:12:53 CEST

search this site