В сообщении от Четверг 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru