Как я могу определить, есть ли оставшиеся завершенные транзакции Yum для завершения?

Когда есть незавершенные незавершенные транзакции Yum, Yum выведет что-то вроде следующего при запуске таких команд, как yum update :

 There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them. 

Как я могу определить, есть ли какие-либо незавершенные транзакции без каких-либо побочных эффектов? (Например, анализ вывода yum update приведет к появлению множества побочных эффектов, таких как обновление метаданных репозитория.)


man 8 yum-complete-transaction предполагает, что можно просто проверить наличие файлов, соответствующих /var/lib/yum/{transaction-all,transaction-done}* (выделено мной):

yum-complete-transaction – это программа, которая обнаруживает неполные или прерванные транзакции yum в системе и пытается их завершить. Он просматривает все транзакции и все транзакции *, которые обычно можно найти в / var / lib / yum, если транзакция yum прерывается в середине выполнения .

Если он найдет более одной незавершенной транзакции, он сначала попытается выполнить самую последнюю. Вы можете запускать его несколько раз, чтобы очистить все незавершенные транзакции.

Однако это, похоже, не совсем точно. Например, у меня есть система, где такие файлы существуют, но yum-complete-transaction сообщает, что транзакций не осталось:

 [myhost ~]% ls /var/lib/yum/{transaction-all,transaction-done}* /var/lib/yum/transaction-all.2016-11-23.07:15.21.disabled /var/lib/yum/transaction-done.2016-11-23.07:15.21.disabled [myhost ~]% sudo yum-complete-transaction Loaded plugins: product-id, refresh-packagekit, rhnplugin No unfinished transactions left. 

И попытка очистить незавершенные файлы транзакций с помощью --cleanup-only не удаляет эти файлы:

 [myhost ~]% sudo yum-complete-transaction --cleanup-only Loaded plugins: product-id, refresh-packagekit, rhnplugin No unfinished transactions left. [myhost ~]% ls /var/lib/yum/{transaction-all,transaction-done}* /var/lib/yum/transaction-all.2016-11-23.07:15.21.disabled /var/lib/yum/transaction-done.2016-11-23.07:15.21.disabled 

One Solution collect form web for “Как я могу определить, есть ли оставшиеся завершенные транзакции Yum для завершения?”

Вот решение, которое выводит подсчет количества незавершенных транзакций:

 find /var/lib/yum -maxdepth 1 -type f -name 'transaction-all*' -not -name '*disabled' -printf . | wc -c 

Согласно исходному коду для yum-complete-transactions из yum-utils , все /var/lib/yum/transaction-all* файлы считаются незавершенными транзакциями …

 def find_unfinished_transactions(yumlibpath='/var/lib/yum'): """returns a list of the timestamps from the filenames of the unfinished transactions remaining in the yumlibpath specified. """ timestamps = [] tsallg = '%s/%s' % (yumlibpath, 'transaction-all*') #tsdoneg = '%s/%s' % (yumlibpath, 'transaction-done*') # not used remove ? tsalls = glob.glob(tsallg) #tsdones = glob.glob(tsdoneg) # not used remove ? for fn in tsalls: trans = os.path.basename(fn) timestamp = trans.replace('transaction-all.','') timestamps.append(timestamp) timestamps.sort() return timestamps 

… за исключением файлов, заканчивающихся disabled :

  times = [] for thistime in find_unfinished_transactions(self.conf.persistdir): if thistime.endswith('disabled'): continue # XXX maybe a check here for transactions that are just too old to try and complete? times.append(thistime) if not times: print "No unfinished transactions left." sys.exit() 

К сожалению, последний код находится внутри функции main() функции yum-complete-transaction.py и не может быть независимо вызван. Если бы этот код был более модульным, тогда было бы возможно написать скрипт Python, который более точно проверяет незаконченные транзакции, чем приведенный выше конвейер оболочки.

  • Как работает yum?
  • Создание локального репозитория yum без rpms
  • Как разрешать только точные обновления пакетов из репозитория?
  • Могу ли я автоматизировать ответы y / N при установке с помощью yum?
  • Отсутствие зависимостей / пакетов на yum install
  • В чем разница в «поиске yum» и «yum search all»?
  • Augeas не читает все файлы yum.repos.d. Зачем?
  • Установите пакеты yum на смонтированный том
  • Как сделать anaconda пропустить установку пакета?
  • Справка по установке Yum
  • Попытка включить EPEL в Centos 6, и она не будет отображаться в repolist
  • Interesting Posts

    Как настроить брандмауэр Centos 7 для разрешения доступа к контейнерам докеров для доступа к сетевым портам хоста?

    CentOS Live CD не будет устанавливать сервер

    Рабочий стол ушел после обновления до Centos 6.6

    Как перемещать swap рядом с началом жесткого диска

    Значок доллара на экране

    Использование vim / gvim в качестве редактора для Thunderbird

    Добавление «случайной числовой энтропии» для ключей GPG?

    Запуск Snow Leopard 10.6.7 Изображение на AMD: CPU был отключен гостевой операционной системой

    Как запустить демона обработки файлов?

    Есть ли способ отслеживать пропускную способность во времени, например, дни, месяцы?

    Монтирование USB-накопителя – невозможно удалить файлы, если у вас нет прав доступа

    правильный способ перезаписать модули ядра debian

    Как я могу определить, насколько стабильным является мой Debian (т. Е. Количество пакетов от тестирования / sid)?

    Проблемы при запуске tarball с acl

    очистить весь экран в сценарии и получить предыдущие приглашения после выхода из скрипта

    Linux и Unix - лучшая ОС в мире.