вторник, 30 януари 2007 г.

Ubuntu/Debian - как да намерим кои файлове не са инсталирани от пакет


От: Peter Pentchev
До: Linux Users Group - Bulgaria
Дата: 29.01.2007 14:46
Тема: Re: [Lug-bg] Debian dpkg

On Sat, Jan 27, 2007 at 11:40:12AM +0200, Alexandar Angelov wrote:
> Как мога да разбера кои фаилове в не са инсталирани от dpkg

Не е директен отговор на въпроса ти, но пълен списък от всички файлове, за които dpkg "знае", можеш да получиш с комбинация от dpkg -l (или -W) и dpkg -L, примерно нещо като:

dpkg -l | awk '/^ii/ {print $2}' | xargs dpkg -L

"dpkg -l" ти дава списък от всички пакети, които си инсталирал някога (по-точно дава списък от всички пакети, за които има информация във /var/lib/dpkg/status, което е горе-долу същото). Следващата стъпка избира само пакетите, които *наистина* са инсталирани, след което ги подава на "dpkg -L", което ти показва всички файлове, които тези пакети са инсталирали.

(и преди някой да се е обадил, да, знам, че всъщност и двете "dpkg" горе би трябвало да бъдат "dpkg-query")

Оттук нататък имаш няколко възможности:
  • сортираш резултата (най-добре през sort -u, защото в резултата от dpkg -L има и директории, и какво ли не);
  • филтрираш резултата, за да намериш само файловете, примерно през нещо като perl -lne 'print if -f'
  • пускаш един "find / -type f", за да намериш всички файлове, които действително съществуват върху системата ти (можеш да замениш "/" с един или повече пътища, които действително те интересуват, ако не иска наистина всички)
  • сортираш резултата от find / -type f
  • сравняваш единия сортиран списък с файлове (тези, за които dpkg знае) с другия (тези, които действително са при теб), примерно с "diff -u"
  • интерпретираш по някакъв начин резултата от "diff -u" и правиш с него каквото ти харесва :) (за интерпретирането са удобни неща като egrep -e '^-' или egrep -e '^[+][^+]' ... но можеш да го направиш и по други начини, под Unix поне имаш голям избор от средства за обработка на текстова информация :)
Надявам се това да е помогнало поне малко; ако има нужда от още идеи и пояснения, казвай смело :)

Поздрави,
Петър

1 коментар:

Konstantinova каза...

/sbin/ldconfig.real: /usr/lib/libjspTru64Alpha.so is not an ELF file - it has the wrong magic bytes at the start.

/sbin/ldconfig.real: /usr/lib/libjspAixPpc.so is not an ELF file - it has the wrong magic bytes at the start.

това да ви говори нещо ?
dpkg: *libjspTru64Alpha.so* not found.
dpkg: *libjspAixPpc.so* not found.
командата е dpkg -S
ама нямам такива инсталнати. и на мене ми е чудно как са се появили. как мога да проиевря от какво се ползва. обвързаности и т.н.