Последнее сообщение в /var/log/apt.log Upgrading apt 0.5.15lorg2-alt55 to 0.5.15lorg2-alt56
Знаю. Похоже, проблема в том, что после rpm-4.3 не вызываются нужные хуки apt-а. Пока расследую этот вопрос...
Расследование показывает, что apt-log перестал работать после обновления alt55->alt56, потому что не знает, в каком режиме это делать (начало/окончание транзакции). А это определяется по значению переменной script_slot, которая теперь всегда не определена (nil). Получается, добавление поддержки lua5.3 сломало передачу в скрипты script_slot (и других переменных?). Я проверил на парочке других скриптов из apt/contrib/ , использующих script_slot для показа встроенной помощи - эффект тот же, значение не определено. Проверить очень просто: добавить =8<========================================== print(script_slot) return =8<========================================== в начало lua-скрипта.
Исправлено в http://git.altlinux.org/tasks/archive/done/_180/185002/logs/events.2.2.log
Стало лучше, но всё равно пока плохо: =8<========================================================== root@thinkpad ~ #pkin xorg-conf-synaptics Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Starting Starting 2 Done Следующие пакеты будут ОБНОВЛЕНЫ: xorg-conf-synaptics 1 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 1 не будет обновлено. Необходимо получить 3105B архивов. После распаковки будет освобождено 1B дискового пространства. Получено: 1 http://ftp.altlinux.org noarch/classic xorg-conf-synaptics 1.0-alt1 [3105B] Получено 3105B за 0s (12,9kB/s). Совершаем изменения... Подготовка... #################################################################################################### [100%] Обновление / установка... 1: xorg-conf-synaptics-1.0-alt1 #################################################################################################### [ 50%] Очистка / удаление... 2: xorg-conf-synaptics-0.3-alt1 предупреждение: /etc/X11/xorg.conf.d/20-synaptics.conf сохранен как /etc/X11/xorg.conf.d/20-synaptics.conf.rpmsave #################################################################################################### [100%] Завершено. W: Error running script: /usr/share/apt/scripts/log.lua:63: attempt to call a nil value (field 'foreach') root@thinkpad ~ #tail /var/log/apt.log Transaction succeeded at Ср 05 июл 2017 08:13:08 Transaction starting at Ср 05 июл 2017 08:12:56 Transaction succeeded at Ср 05 июл 2017 08:18:11 Transaction starting at Ср 05 июл 2017 08:18:11 =8<========================================================== т.е. script_slot выдаётся скрипту не в том порядке, сначала Scripts::PM::Post, потом Scripts::PM::Pre, хотя должно быть наоборот. И получается результат работы функции pkglist - пуст, в результате ничего не протоколируется.
*** Bug 32941 has been marked as a duplicate of this bug. ***
(In reply to comment #4) > Стало лучше, но всё равно пока плохо: ... > W: Error running script: /usr/share/apt/scripts/log.lua:63: attempt to call a > nil value (field 'foreach') Всё дело вот в этом месте. Оно сделало file:write, а file:close не сделало, вот они и поменялись местами. > root@thinkpad ~ #tail /var/log/apt.log > Transaction succeeded at Ср 05 июл 2017 08:13:08 > Transaction starting at Ср 05 июл 2017 08:12:56 > Transaction succeeded at Ср 05 июл 2017 08:18:11 > Transaction starting at Ср 05 июл 2017 08:18:11 > =8<========================================================== > > т.е. script_slot выдаётся скрипту не в том порядке, сначала Scripts::PM::Post, > потом Scripts::PM::Pre, хотя должно быть наоборот. > И получается результат работы функции pkglist - пуст, в результате ничего не > протоколируется. script_slot точно правильно выдаётся, просто код на lua слишком старый. Я не силён в lua, но вот так работает: diff --git a/apt/contrib/log/log.lua b/apt/contrib/log/log.lua index ab7bef3..a2c296d 100644 --- a/apt/contrib/log/log.lua +++ b/apt/contrib/log/log.lua @@ -57,14 +57,16 @@ if script_slot == "Scripts::PM::Pre" then end end file:write("Transaction starting at ", os.date(), "\n") - local function write(index, str) - file:write(str) + local function write(list) + for _,n in ipairs(list) do + file:write(n) + end end - table.foreach(removing, write) - table.foreach(installing, write) - table.foreach(reinstalling, write) - table.foreach(downgrading, write) - table.foreach(upgrading, write) + write(removing) + write(installing) + write(reinstalling) + write(downgrading) + write(upgrading) file:close() elseif script_slot == "Scripts::PM::Post" then if transaction_success then
Огромное спасибо, с этим патчем действительно работает.