vinsent_ru: (Default)
Итак была задача выдрать списки установленных пакетов с разных UNIXов. То что установлено штатными менеджерами пакетов. В формате "имя_пакета версия_пакета"

Вывод пакетов идет на stdout.

Проще всего работать с Debian:
dpkg -l|grep ii |cut -b 5-41,42-78

Проблема одна - местный cut не имеет опции для повторяющихся разделителей. Пришлось указать абсолютные значения.

Немного сложнее с FreeBSD, нужен скрипт

[vinsent@mail ~/scripts]$ cat resplit.py
#!/usr/local/bin/python

import sys

f=sys.stdin

for line in f:
    l=line.strip().replace('\n','').split('-')
    ver=l[-1]
    p=l[:-1]
    print "-".join(p),ver


Который отрезает все что после последнего '-' и трактует это как номер версии

Сама команда банальна:
ls -1 /var/db/pkg|./resplit.py

И наконец, RedHat, ужас-ужас:
Во-первых нужен исправленный скрипт, потому что версия отрезается про 2му '-' а не по первому:
cat resplit2.py

#!/usr/bin/python

import sys

f=sys.stdin

for line in f:
    l=line.strip().replace('\n','').split('-')
    ver=l[-2:]
    p=l[:-2]
    print "-".join(p),"-".join(ver)

Во-вторых:
rpm -qa |sort |./resplit2.py

Т.е. rpm сам еще и не сортирует список!

Итого:
Дебиан максимально удобен, Фряха терпима, Редхатоиды ужасны :)

Зыж понимаю что скрипт - велосипед в чистом виде, но как это сделать в консоли с ходу чтото не придумалось :)

June 2025

S M T W T F S
1 234567
8910 11121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 13th, 2025 02:12 pm
Powered by Dreamwidth Studios