В сообщении от Четверг 26 апреля 2007 14:41 Attid написал(a): > подпишусь в тему > хочу скриптик установленых пакетов в системе у которых в зависимотях ничего > нет. смотрел на dpkg но так и не понял как вытащить из него это все. > > логика понятна. надо получить список всех покетов > и проверить все на зависимости, если от них ничего не зависит вывести на > экран. как реализовать не очень понимаю. > > ЗЫ первым делелом должен вывести "ubuntu-desktop" =) > причина, хочу поудолять лишнее из системы чтоб не обновлять всякие > неиспользуемые пакеты =)
Во-первых надо смотреть в сторону утилиты deborphan - она есть в universe. Ну а уж если не подойдет, то вот есть такой мой наколенный скрипт. Правда для rpm-ных систем с аптом, но там небольшая корректировка. dpkg должен отдать список в виде: leafpad perl-IO-Zlib iso-codes psutils gnome-utils и т.д. Дальше уже аптом проверяется каждый пакет на наличие обратных зависимостей. Но надо осторожнее, потому как поломать что-то очень легко - не всегда зависимости напрямую прописаны в пакете. И сам скрипт: #!/usr/bin/env python from os import * from subprocess import * import re def get_installed_packages(): # get installed packages list from rpm print "Reading installed packages list..." cmd = 'rpm -qa --queryformat %{NAME}"\n"' bufsize = 512 p = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) cmd_buf = p.stdout.read() print "Done!" return cmd_buf # end of "get_installed_packages()" def search_orphans(list): # search for packages without reverse dependencies print "Searching for packages without reverse dependencies..." # generating list from list pkg_list = list.split("\n") # cycle through packages bufsize=512 cond_re = re.compile(r'.*Reverse\sDepends:\s\nDependencies:.*') for pkg_name in pkg_list: cmd = 'apt-cache showpkg ' + pkg_name p = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds= True) cmd_buf = p.stdout.read() if re.search(cond_re, cmd_buf) != None: print pkg_name # end of "search_orphans()" if __name__ == "__main__": pkg_list = get_installed_packages() search_orphans(pkg_list) -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru