新しいリリースへのアップグレード後にGoogle PPAが再度有効になるのはなぜですか?


9

PPAは通常、アップグレード時に無効になり、手動で再度有効にする必要があります。約1か月前に12.04にアップグレードしましたが、他のPPAはすべて無効になっているのに、Google PPAは無効になっていないことに気づきました。どうしてこれなの?


関連するsources.listエントリを提供できますか?
ジャスミン

@jasmines申し訳ありませんが、私はすでに他のすべての無効になっているものを再度有効/コメント解除しました。これはUbuntuのデフォルトの動作なので、簡単に再現できます。
adempewolff

@irrationalJohnは、少なくとも1つのgoogle PPAと少なくとも1つの他のPPAを有効にしたすべてのユーザーが、ディストリビューションのアップグレード後にこの動作を確認できることを意味していました。他のPPA(私のような)を既にアップグレードして手動で再度有効にした人は、再現するために再度アップグレードする必要があります。私のマシンはすべてすでに12.04であり、12.10アルファにアップグレードする気がありません。または、自分で複製してファイルを提供します。
adempewolff

回答:


11

(この回答については、ホルヘカストロのクレジット)

Googleパッケージ/etc/cron.daily/は、リポジトリの構成をカスタマイズし、リリースのアップグレード後にソースを再度有効にするためのcronジョブをインストールします。

各Googleパッケージは、独自のスクリプト(またはスクリプトへのリンク)をここに配置します。例:google-musicmanagergoogle-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.

以下は、リリースのアップグレード後にrepo構成を検出して再度有効にするスクリプトの部分です。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.