[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