Для всяких исследовательских целей наколхозил скрипт, который находит пакеты, установленные “рядом” с заданным (на основе идентификаторов транзакций пакетов). Думаю, может пригодится, особенно в каких-нибудь нештатных ситуациях, хе-хе.
#!/bin/bash
if ! -e /tmp/tdb.txt ]
then
echo Updating list of TIDs
rpm -qa --queryformat '%{INSTALLTID} %{name}
' | sort > /tmp/tdb.txt
fi
tid=$(rpm -q --qf "%{INSTALLTID}" $1 | sed 's/.$//')
echo Nearest
cat /tmp/tdb.txt | grep $tid
Есть идеи, что улучшить? Самому противно от перекрестных запросов к базе rpm((
“Точность” поиска можно изменить в регулярке sed`а: сколько последних знаков отбрасывать в идентификаторе.
Захотелось “логичекой” группировки пакетов. Допустим что-то стало работать не так, и нужно целиком “откатить” последнее обновление/ установку пакетов. Как это сделать, учитывая, что даже в рамках этого обновления установленные пакеты имеют разные time ID? Только выборкой ближайших. Конечно, тем, кто не возится иногда с Factory или checkinstall такой функционал не очень нужен…
Можно указать количество строк выводимых до и после искомого идентификатора транзакции (верно для ключа -C NUM; см. также ключи -A NUM -B NUM команды grep), добавив ещё один аргумент командной строки.
Я специально не стал считать разницу между TIDами арифметически, а использовал отбрасывание знаков с конца числа sedом: это значительно упрощает скрипт, а результат (вроде бы) тот же.
Естественно.
Все функции вашего скрипта пока вполне решаемы элементарным grep’ом этого файла. Не говоря уже о том, что можно его терзать в графическом редакторе.
Не естественно никак- это файл истории изменений, я же использовал актуальное состояние системы. Как парсить-то собираетесь installed - removed? А к примеру за пару лет какой объем будет у этого файла?
Для поиска по дате и\или имени мне вполне достаточно.
По “installed - removed” ещё ни разу не приходилось (всё-таки проблемы возникают как правило из-за обновлений), но там же отдельный столбец для этого есть, так что проблемы не вижу.