Почему Google PPA включается после обновления до новой версии?

9

PPA обычно отключаются при обновлении и должны быть повторно включены вручную. Я обновил до 12.04 около месяца назад, и я только что заметил, что, хотя все мои другие PPA были отключены, Google PPA не были отключены. Почему это?

adempewolff
источник
Можете ли вы предоставить соответствующие записи sources.list?
Жасмин
@jasmines извините, я уже включил / раскомментировал все остальные отключенные. Это стандартное поведение в Ubuntu, поэтому его просто воспроизвести.
adempewolff
@irrationalJohn Я имел в виду то, что любой, у кого был хотя бы один PPA Google и хотя бы еще один PPA, мог видеть это после обновления дистрибутива. Для кого-то, кто уже обновил и повторно включил другие PPA (как я), они должны были бы обновить снова, чтобы воспроизвести. Все мои машины уже 12.04, и мне не хочется обновлять их до версии 12.10 альфа, иначе я бы сам воспроизвел их, чтобы предоставить файлы.
adempewolff

Ответы:

11

(Благодарю Хорхе Кастро за этот ответ)

Пакеты Google устанавливают задание cron /etc/cron.daily/для настройки конфигурации репозитория и повторного включения источника после обновления выпуска.

Каждый пакет Google будет размещать здесь свой скрипт (или ссылку на скрипт). Например: google-musicmanager, google-chromeили google-talkplugin(последний является символической ссылкой на сценарий в /opt/google/talkplugin/cron/google-talkplugin).

Вот описание скрипта google-talkplugin:

# This script is part of the google-talkplugin package.
#
# It creates the repository configuration file for package updates, and it
# monitors that config to see if it has been disabled by the overly aggressive
# distro upgrade process (e.g.  intrepid -> jaunty). When this situation is
# detected, the respository will be re-enabled. If the respository is disabled
# for any other reason, this won't re-enable it.
#
# This functionality can be controlled by creating the $DEFAULTS_FILE and
# setting "repo_add_once" and/or "repo_reenable_on_distupgrade" to "true" or
# "false" as desired. An empty $DEFAULTS_FILE is the same as setting both values
# to "false".

Скрипт будет:

  1. # Install the repository signing key
  2. # Update the Google repository if it's not set correctly.
  3. # Add the Google repository to the apt sources.
  4. # Remove our custom sources list file. а также
  5. # Detect if the repo config was disabled by distro upgrade and enable if necessary.

Вот часть скрипта, которая обнаруживает и включает конфигурацию репо после обновления релиза.

handle_distro_upgrade() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  find_apt_sources
  SOURCELIST="$APT_SOURCESDIR/google-talkplugin.list"
  if [ -r "$SOURCELIST" ]; then
    REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIG[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
    if [ $? -eq 0 ]; then
      sed -i -e "s,^[[:space:]]*#[[:space:]]*\($REPOCONFIG\)[[:space:]]*# disabled on upgrade to .*,\1," \
        "$SOURCELIST"
      LOGGER=$(which logger 2> /dev/null)
      if [ "$LOGGER" ]; then
        "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
      fi
    fi
  fi
}

И вот /etc/apt/sources.list.d/google-talkplugin.listфайл, который создается сценарием.

### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb http://dl.google.com/linux/talkplugin/deb/ stable main
adempewolff
источник
Я только что заметил, что что-то пошло не так с этим процессом в прошлом месяце, и дистрибутив Google был неавторизован и по какой-то причине не авторизовался сам. Я надеюсь, что переустановка пакета вручную приведет к сбросу настроек.
adempewolff