Zypper: Як перелічити встановлені пакети, які не перебувають у репо


4

Як в системі, що використовує Zypper для управління пакетами (у моєму випадку openSuse), як можна отримати список усіх встановлених пакетів, які не пов’язані з поточним сховищем?

Справжня проблема: Під час оновлення дистрибутивів (наприклад, з openSuse 12.1 до 12.2) я відключаю всі нестандартні сховища, які я включив. Часто я додавав їх лише для отримання нової версії певного інструменту, але ця нова версія за замовчуванням включена в оновлений дистрибутив. Іноді з репозиторію встановлювались додаткові пакети, але я не знаю, як їх виявити. Система працює, але ці пакети ніколи не оновлюватимуться, оскільки я видалив репозиторій надання послуг після оновлення.

Відповіді:


3

Це трохи про возитися із запитами на блискавці.

1) Знайдіть встановлені пакети, що надходять із сховищ, які не відкриваються-розповсюдження:

zypper search -s | grep "i |" | grep -vi "| patch" | grep -vi "| opensuse" > list1.txt

2) Знайдіть пакети, доступні у сховищах openuse (незалежно від того, встановлені вони чи ні):

zypper search -s | grep "v |" | grep -vi "| patch" | grep -i "| opensuse" > list2.txt

3) Визначте пакети зі списку1, які не представлені у списку2:

cat list1.txt | cut -d " " -f3 | cut -d " " -f1 | while read line
do
    if [ "$(cat list2.txt | grep -i $line)" = "" ]; then
        echo "$line"
    fi
done

Це має якось вирішити справу (протестовано на openSUSE 11.3).


1

Можливо, варіант paє більш підходящим:

zypper pa -i

перелічує всі встановлені пакети та їх доступні версії та сховища. Ви можете вибрати список лише пакетів, що належать до певного сховища із -rпрапором:

zypper pa -i -r openSUSE-12.1

звідти ви можете використовувати стратегії, запропоновані @ernestopheles, щоб знайти ті, що відповідають вашим потребам.


Я почав використовувати zypper pa -i | grep @System; Раніше я використовувавzypper search -i -s -t package | grep "| (System Packages)\s*$"
ShadSterling
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.