Ошибка обновления Ubuntu «ожидание выхода unattended-upgr»

Вам потребуется использовать расширенные операторы глобуса ksh (подмножество которых доступно в bash с shopt -s extglob и с zsh с установите -o kshglob ), чтобы получить эквивалент регулярных выражений (но с другим синтаксисом: * (x) для эквивалента x * здесь):

shopt -s extglob # for bash
# set -o kshglob # for zsh
printf '%s\n' "${MYVAR//[[:alpha:]]*([[:alnum:]-])/}"

Или с zsh extendedglob s, где эквивалент регулярного выражения * - # :

set -o extendedglob
printf '%s\n' ${MYVAR//[[:alpha:]][[:alnum:]-]#}

Несколько примечаний:

  • $ { var / pattern / replacement} заменяет только первое вхождение. Используйте $ {var // pattern / replace} , чтобы заменить каждое вхождение (например, с флагом g в команде sed s ] ).
  • вы сделали замену космическим персонажем. Используйте $ {var // pattern /} (или $ {var // pattern} ) для замены пустой строкой.
  • Вы не хотите использовать echo для вывода произвольных строк
  • За исключением zsh , расширения переменных в контекстах списков должны быть заключены в кавычки
  • поведение будет отличаться от вашего подхода sed , когда переменная содержит символы новой строки.
  • [az] соответствует символам (элементы сопоставления в некоторых инструментах), которые находятся между a и z , список который зависит от локали, системы и инструмента (например, [az] с bash-4.3 в en_GB.Локаль UTF-8 в системе GNU соответствует A , X , é , , но не Z ). Обычно это 26 строчных букв английского алфавита, но не обязательно. [[: alpha:]] включает символы (или элементы сопоставления), которые считаются алфавитными (независимо от регистра) в вашем регионе. Если вы хотите сопоставить только 26 английских букв, либо используйте [abcdefghijklmnopqrstuvwxyz] , либо исправьте языковой стандарт на C ( LC_ALL = C ) и используйте [az] или [[: lower:]] только для строчных букв английского алфавита или [a-zA-Z] / [[: alpha:] ] для любой английской буквы.
  • [a-z0-9 \ -] в sed соответствует символу обратной косой черты, используйте [a-z0-9 -] вместо этого ( - должно быть первым или последним, чтобы понимать буквально).

24
20.10.2017, 18:43
6 ответов

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

У меня это выдало ошибку ниже:

athakur:~$ sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Я вошел в свою систему Ubuntu после долгого времени, и какой-то внутренний процесс что-то обновлял. Это решилось само по себе (заняло около 5 минут ).

Вы можете проверить это с помощью таких команд, как

  • sudo ps -eaf | grep -я подхожу
  • sudo lsof /var/lib/dpkg/lock -внешний интерфейс

Если вы видите запущенный процесс типа " apt.systemd.daily ", подождите некоторое время.Если нет, вы можете убить эти процессы и возобновить то, что хотели.

  • sudo kill -9 PID

Замените PID на PID, полученные с помощью приведенной выше команды. Затем вы можете запустить

sudo dpkg --configure -a

, чтобы позволить dpkg исправить себя. В любом случае удаляйте файлы блокировки только в крайнем случае.

6
01.05.2020, 08:55

Я установил Ubuntu Mate 20.04 на свой новый RPi 4 B. Запустил программу обновления со страницы приветствия и получил сообщение «ожидание автоматического обновления». Я нажал кнопку остановки во всплывающем окне, и другое всплывающее окно предложило частичное обновление. Попытка снова привела к сообщению «ожидание автоматического обновления». Я закрылся из меню и снова попытался обновиться со страницы приветствия, и снова получил сообщение «ожидание автоматического обновления». Я снова выключился из меню, а затем выключил питание RPi. После перезагрузки я запустил программу обновления со страницы приветствия, и на этот раз она сработала. Надеюсь, это поможет кому-то.

1
09.01.2021, 15:21

Вот моя рекомендация:

  • запущена служба автоматического обновления

    systemctl list-units --type=service | grep upgr
        unattended-upgrades.service                                                               
        loaded active running Unattended Upgrades Shutdown
    
  • остановить службу («остановить», а не «отключить»)

    sudo systemctl stop unattended-upgrades
    
  • доказательство, он больше не работает:

    systemctl list-units --type=service | grep upgr
    ( nothing )
    $>
    
  • сделай апгрейд

После перезагрузки (или повторного запуска вручную )служба снова автоматически запустится. Таким образом, нет опасности оставить постоянную проблему безопасности. Вы можете убедиться в этом, набрав еще раз:

systemctl list-units --type=service | grep upgr
    unattended-upgrades.service                                                               
    loaded active running Unattended Upgrades Shutdown
3
14.02.2021, 09:17

Шаг 1 :Найдите идентификатор [pid] процесса-нарушителя
sudo lsof /var/lib/dpkg/lock-frontend

Шаг 2 :Завершение процесса
sudo kill -9 [pid]

Примечание. :Пожалуйста, не пытайтесь выполнить это без ожидания 10 -Сначала 20 минут, вы хотите дать процессу время для завершения своей задачи, если он не завершится примерно через 20 минут, вы можете считать процесс застревает и может быть прекращено.

1
13.03.2021, 10:26

Как упоминалось в предыдущих ответах, весьма вероятно, что задача ежедневного обновления продолжается. Я понимаю, что вопрос в том, как не получить ошибку, но в большинстве случаев вы можете подождать (, когда я начал искать эту проблему и наткнулся на это обсуждение ). Ожидание долгое, особенно если вы только что установили дистрибутив, используя старый live CD/DVD, потому что будет много ожидающих обновлений. Косвенный способ получить представление о времени ожидания — проверить ход автоматического обновления с помощью sudo apt update.В самом конце вывода вы увидите, сколько пакетов нужно обновить (, фактический список генерируетсяapt list --upgradable). Количество пакетов, которые можно обновить, будет продолжать уменьшаться, поскольку средство автоматического обновления -работает.

0
28.05.2021, 16:54

Просто перезагрузите систему, и автоматическое обновление программного обеспечения будет автоматически закрыто. Затем вы можете легко обновить либо с помощью приложения для обновления программного обеспечения, либо просто запустив «sudo apt update» в терминале.

0
11.09.2021, 04:41

Теги

Похожие вопросы