Dlaczego Google PPA jest ponownie włączany po aktualizacji do nowej wersji?

9

Umowy PPA są zwykle wyłączone podczas aktualizacji i muszą zostać ponownie włączone ręcznie. Uaktualniłem do wersji 12.04 około miesiąc temu i właśnie zauważyłem, że chociaż wszystkie moje inne umowy PPA zostały wyłączone, umowy PPA Google nie zostały wyłączone. Dlaczego to?

adempewolff
źródło
Czy możesz podać powiązane wpisy source.list?
jaśmin
@Jasmines przepraszam, już włączyłem / odkomentowałem wszystkie pozostałe wyłączone. Jest to domyślne zachowanie w Ubuntu, więc powinno być łatwe do odtworzenia.
adempewolff
@irrationalJohn, co miałem na myśli to, że każdy, kto ma co najmniej jeden Google PPA i co najmniej jeden inny PPA włączony, zobaczy to zachowanie po aktualizacji dystrybucji. W przypadku osoby, która już zaktualizowała i ręcznie ponownie włączyła inne umowy PPA (takie jak ja), musiałaby dokonać ponownej aktualizacji w celu odtworzenia. Wszystkie moje maszyny są już w wersji 12.04 i nie mam ochoty na aktualizację żadnej do wersji 12.10 alfa lub sam bym ją odtworzył, aby dostarczyć pliki.
adempewolff

Odpowiedzi:

11

(Podziękowania dla Jorge Castro za tę odpowiedź)

Pakiety Google instalują zadanie /etc/cron.daily/CRON w celu zachowania konfiguracji repozytorium i ponownego włączenia źródła po aktualizacji wersji.

Każdy pakiet Google umieści tutaj swój własny skrypt (lub link do skryptu). Na przykład google-musicmanager, google-chromelub google-talkplugin(przy czym ten ostatni dowiązanie do skryptu w /opt/google/talkplugin/cron/google-talkplugin).

Oto opis ze skryptu 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".

Skrypt:

  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. i
  5. # Detect if the repo config was disabled by distro upgrade and enable if necessary.

Oto część skryptu, która wykrywa i ponownie włącza konfigurację repo po aktualizacji wersji.

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
}

A oto /etc/apt/sources.list.d/google-talkplugin.listplik tworzony przez skrypt.

### 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
źródło
Właśnie zauważyłem, że coś poszło nie tak z tym procesem w ostatnim miesiącu, a dystrybucja Google była nieautoryzowana i z jakiegoś powodu sama się nie autoryzowała. Mam nadzieję, że ręczna ponowna instalacja pakietu zresetuje wszystko.
adempewolff,