![Повторный запуск apt update делает обновление невозможным](https://rvso.com/image/913200/%D0%9F%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D0%B9%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%20apt%20update%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D1%8B%D0%BC.png)
У меня есть скрипт, который обновляет систему:
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'