Чому PPA google буде відновлено після оновлення до нової версії?


9

PPA, як правило, відключаються під час оновлення, і їх потрібно знову ввімкнути вручну. Я перейшов до 12.04 близько місяця тому, і я просто помітив, що, хоча всі інші мої PPA були відключені, Google PPA не було відключено. Чому це?


Чи можете ви надати відповідні записи source.list?
жасмини

@jasmines вибачте, я вже перевключив / прокоментував усі інші інваліди. Це поведінка за замовчуванням в Ubuntu, тому відтворювати її слід просто.
adempewolff

@irrationalJohn, що я мав на увазі під цим, це те, що кожен, хто має принаймні один google PPA і хоча б ще один 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

Я щойно помітив, що щось пішло не так із цим процесом за останній місяць, і дистрибутив Google був несанкціонованим, і чомусь не зареєструвався. Я сподіваюся, що вручну перевстановлення пакета змінить речі.
adempewolff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.