Повторный запуск apt update делает обновление невозможным

Повторный запуск apt update делает обновление невозможным

У меня есть скрипт, который обновляет систему:

sudo apt update && sudo apt upgrade && sudo apt autoremove

Иногда он выдает ошибку, говорящую о том, что обновление заблокировано, поэтому он не может обновить обновляемые пакеты. Когда я снова запускаю скрипт, в этот раз он apt updateне показывает ничего для обновления, а когда приходит время запустить apt upgradeобновление, он не показывает, что обновление необходимо, потому что «нечего» обновлять. Как мне обновить пакеты, которые были перечислены в первом apt update?

Реальный случай: сейчас у меня Firefox 67.0.3 (доступна версия 67.0.4), первый apt updateпоказал, что для него есть обновление. Не смог обновиться, и теперь, когда я apt updateснова запускаю, никаких обновлений для Firefox не указано, и apt upgradeничего не обновлялось.

Я искал эту проблему в Google, но не имел успеха. Я был бы признателен за любую помощь.

Спасибо заранее и извините за мой английский

решение1

Наиболее вероятная причина в том, что вы иногда запускаете свой скрипт одновременно с запуском Unattended Upgrades.

Это легко проверить, просмотрев журнал автоматических обновлений.

Вот пример моего журнала автоматических обновлений за сегодняшнее утро:

$ grep 2019-06-21 /var/log/unattended-upgrades/unattended-upgrades.log

2019-06-21 06:35:25,971 INFO Initial blacklist : 
2019-06-21 06:35:25,986 INFO Initial whitelist: 
2019-06-21 06:35:25,986 INFO Starting unattended upgrades script
2019-06-21 06:35:25,986 INFO Allowed origins are: o=Ubuntu,a=disco, o=Ubuntu,a=disco-security, o=UbuntuESM,a=disco, 
2019-06-21 06:36:00,248 INFO Packages that will be upgraded: bind9-host intel-microcode libbind9-161 libdns-export1104 libdns1104 libirs161 libisc-export1100 libisc1100 libisccc161 libisccfg163 liblwres161 libpq5
2019-06-21 06:36:00,248 INFO Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
2019-06-21 06:37:18,374 INFO All upgrades installed

Взгляните на строку 5 журнала ( Packages that will be upgraded:...): Этот список взят напрямую из apt. Этопочтитот же список, который вы получаете из sudo apt update. Настройка по умолчанию для Unattended Upgrades — использовать только -security pocket. Не -updates, не -backports, не PPA, не сторонние репозитории. Поэтому несколько пакетов, не связанных с безопасностью, могут быть не установлены. Вы можете изменить эту настройку.

Теперь взгляните на строку 7 журнала ( All upgrades installed): Это ваше положительное подтверждение того, что все пакеты, перечисленные в строке 5, были успешно обновлены, и Unattended Upgrades сняли блокировку apt и завершили работу на день. Если возникла проблема или сбой, или если UU все еще работает, то вы не увидите эту строку.

Вы можете видеть, что если бы я запустил руководство sudo apt updateв 06:35, то было бы много пакетов для обновления. Но если бы я запустил sudo apt upgradeв 06:38, то ни один пакет не был бы обновлен... потому что Unattended Upgrades уже сделал это.

решение2

Держу пари, что это Ubuntu Software Update мешает, когда завершается sudo apt update. Вам следует открыть настройки обновления ПО и убедиться, что все параметры установлены на «Никогда». Я не думаю, что это подавит всплывающее окно, но это должно предотвратить попытки автоматического обновления и блокировку файлов.

Для исправления Firefox я бы запустил sudo apt install --reinstall firefoxи посмотрел, исправит ли это проблему. Если он жалуется на блокировку, вы можете удалить ее с помощью sudo rm /var/lib/dpkg/lock.

Кстати, вы можете ускорить свой скрипт, используяsudo -- sh -c 'apt update; apt upgrade --autoremove -y'

Связанный контент