Конфиденциальные обновления в Ubuntu конфликтуют со скриптом запуска в облачном вычислительном движке Google - PullRequest
0 голосов
/ 07 января 2020

Используя образ GCP Ubuntu 18.04, обычный.

Я использую сценарии запуска на vm, чтобы автоматизировать развертывание функций и внесение изменений в базовый образ. У меня есть один, который начинается со следующего:

#! /bin/bash
add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'
apt update
apt -y upgrade
export DEBIAN_FRONTEND=noninteractive
apt -y install libpam-dev libpam-ldap r-base

К сожалению, на некоторых машинах, которые не запускались некоторое время, я получаю следующую ошибку: From / var / log / syslog:

startup-script: INFO startup-script: dpkg: error: dpkg frontend is locked by another process

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

Можно ли отложить выполнение сценария запуска, чтобы он запускался после выполнения автоматических обновлений? Я имею в виду нечто более надежное, чем простая команда ожидания.

Скрипт запуска настраивается с помощью метаданных vm для документации GCP.

Большое спасибо и хорошего дня.

1 Ответ

1 голос
/ 07 января 2020

Ваш скрипт может подождать, пока блокировка dpkg больше не будет удерживаться. В этом ответе AskUbuntu предлагается решение, использующее fuser, чтобы проверить, используется ли файл блокировки другим процессом:

#!/bin/bash

while fuser /var/lib/dpkg/lock >& /dev/null; do
  echo "waiting for other package installs to complete..."
  sleep 1
done

add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'
apt update
apt -y upgrade
export DEBIAN_FRONTEND=noninteractive
apt -y install libpam-dev libpam-ldap r-base
...