[linux-l] /opt wiederherstellen bei $DISTRI?

Mike Dornberger Mike.Dornberger at gmx.de
Di Jul 18 21:02:56 CEST 2006


On Tue, Jul 18, 2006 at 11:10:29AM +0200, olafBuddenhagen at gmx.net wrote:
> Hallo,
> 
> On Mon, Jul 17, 2006 at 08:26:13PM +0200, Mike Dornberger wrote:
> 
> > Aber es geht wohl mit `dpkg -S /path...' einfacher.
> 
> dpkg -S braucht mehrere Sekunden für jede einzelne Datei. Das ist völlig
> unrealistisch. Viel sinnvoller umgekehrt vorzugehen, indem man sich die
> Paketinhalte ausgibt, und schaut wo die Dateien hingehen.

$ cat sehr_große_datei >/dev/null
$ time find /var/lib/dpkg/info -type f -iname "*.list" -print0 | xargs \
-0r grep "^/var" >/dev/null
real    0m18.784s
user    0m0.070s
sys     0m0.190s
$ time find /var/lib/dpkg/info -type f -iname "*.list" -print0 | xargs \
-0r grep "^/var" >/dev/null

real    0m0.154s
user    0m0.120s
sys     0m0.040s

$ cat sehr_große_datei >/dev/null
$ time dpkg -S /var
mozilla-thunderbird-offline, [...]: /var

real    0m20.790s
user    0m1.060s
sys     0m0.750s
$ time dpkg -S /var
mozilla-thunderbird-offline, [...]: /var

real    0m1.296s
user    0m1.090s
sys     0m0.220s

Gemacht auf einem PentiumII 400MHz. Die Platten sind also offenbar das, was
es langsam macht. Es müssen bei mir 849 .list-Dateien durchsucht werden. Ein

$ time dpkg -S /var

liefert dann bei mir zum einen alle installierten Pakete (da ja alle
wenigstens die Lizenzinfos nach /usr/share/doc/$Paketname/ legen) und zum
anderen:

real    0m1.428s

Selbst ein

$ time find /usr/lib/ -type d -maxdepth 1 | xargs -r dpkg -S

was bei mir 109 Verzeichnisse liefert (find), braucht nur

real    0m1.313s

(Nachdem der Filecache gefüllt ist natürlich.)

Ich kann also nicht nachvollziehen, daß es "unrealistisch lange" dauert.
Zumal Benjamin ja eh alle Pakete finden wollte, die Zeugs unter /opt ablegen
(also ein Argument zu dpkg -S).

Korrektur: In meiner vorigen E-Mail schrieb ich:
 find /var/lib/dpkg/info -type f -iname "*.list" -print0 | xargs -0r grep \
 ^filename_without_leading_slash

Die .list-Dateien beinhalten doch einen führenden Slash, der wohl von dpkg
beim Erzeugen der Datei hinzugefügt wird. Die Pakete (.debs) und
Contents-$arch.gz (auf den Repository-Servern) enthalten keine führenden
Slashes.

Gruß,
 Mike




Mehr Informationen über die Mailingliste linux-l