Debian apt、gpg キー、署名者に関する継続的なプレス

Debian apt、gpg キー、署名者に関する継続的なプレス

価値が低下しましたapt-key。たとえば、ここでは gpg キーに移行する方法について説明します。大丈夫です。しかし、sources.listファイルを上書きするまで1ヶ月ほどは機能します。なぜ、どのように上書きされたのかは分からないが、ある時点で上書きされてこの過程を再度実行しなければならなかったというだけです。これを行う外部リポジトリの一般的な例:geogebraまたはgoogle Earth。どちらの場合も、次deb [signed-by=/usr/share/keyrings/geogebra.gpg] http://www.geogebra.net/linux/ stable mainのように行を上書きします deb http://www.geogebra.net/linux/ stable main

この問題の経験がある人や、やや迷惑な「新機能」の解決策を持っている人はいますか?

ベストアンサー1

バオはそうだった

…Debianではありません。

梱包内容によると地理代数学(ここで検索可能http://www.geogebra.net/linux/pool/main/g/geogebra/:)とそのメタデータ(例:すべて抽出し/tmp/geogebraて確認できます)

dpkg-deb --raw-extract geogebra_4.2.60.0-30762_all.deb /tmp/geogebra
cd /tmp/geogebra

DEBIAN/postinst文書:

[...]
DEFAULTS_FILE=/etc/default/geogebra

## MAIN ##
if [ ! -e "$DEFAULTS_FILE" ]; then
  echo 'repo_add_once="true"' > "$DEFAULTS_FILE"
  echo 'repo_reenable_on_distupgrade="true"' >> "$DEFAULTS_FILE"
fi

# Run the cron job immediately to perform repository configuration.
nohup sh /etc/cron.daily/geogebra > /dev/null 2>&1 &

これは最初は次のように書かれます/etc/default/geogebra

repo_add_once="true"
repo_reenable_on_distupgrade="true"

etc/cron.daily/geogebra(一日一回実行):

#!/bin/sh
[...]

# System-wide package configuration.
DEFAULTS_FILE="/etc/default/geogebra"

# sources.list setting for GeoGebra updates.
REPOCONFIG="deb http://www.geogebra.net/linux/ stable main"

[...]

update_bad_sources() {
[...]
  # Don't do anything if the file isn't there, since that probably means the
  # user disabled it.
  if [ ! -r "$SOURCELIST" ]; then
    return 0
  fi
[...]

# Detect if the repo config was disabled by distro upgrade and enable if
# necessary.
handle_distro_upgrade() {

[...]

 SOURCELIST="$APT_SOURCESDIR/geogebra.list"
 if [ -r "$SOURCELIST" ]; then 
[...]
 fi

## MAIN ##
DEFAULTS_FILE="/etc/default/geogebra"
if [ -r "$DEFAULTS_FILE" ]; then
  . "$DEFAULTS_FILE"
fi

if [ "$repo_add_once" = "true" ]; then
  install_key
  create_sources_lists
  RES=$?
  # Sources creation succeeded, so stop trying.
  if [ $RES -ne 2 ]; then
    sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' "$DEFAULTS_FILE"
  fi
else
  update_bad_sources
fi

if [ "$repo_reenable_on_distupgrade" = "true" ]; then
  handle_distro_upgrade
fi

/etc/default/geogebra初めて会った後、変更が発生します。

repo_add_once="false"
repo_reenable_on_distupgrade="true"

したがって、この機能は毎日またはアップグレードするたびに引き続き実行されますupdate_bad_sources()handle_distro_upgrade()

パッケージが自分の方法で自分のリポジトリを再度アクティブにしようとする2つの場所です。


geogebraパッケージが独自のリポジトリを(再)追加するのを防ぎます。

内容に応じてこれを避けることができます。いいえすべてのファイルがあります/etc/apt/sources.d/geogebra。しかし、それが将来どのように機能するかについての保証はありません。

だから現在の名前は/etc/apt/sources.d/geogebra次のように変更されました。/etc/apt/sources.d/local-geogebra しなければならないパッケージが独自のリポジトリソースを管理できないようにします(初期インストールを除く)。

あるいは、後でパッケージの動作が変更されても、パッケージの内容を変更できないように空のファイルを作成し、変更できないようにすることもできます。アップグレードスクリプトはこれらのアップグレードの戻りコード()を確認しないため、nohup ... &アップグレード中に失敗しません。

だから:

mv /etc/apt/sources.d/geogebra /etc/apt/sources.d/local-geogebra

以下を選択することもできます。

touch /etc/apt/sources.d/geogebra
chattr +i /etc/apt/sources.d/geogebra

もう一つの方法は予防することです。予約されたことパッケージレベルでファイル名を無視する名前に変更してファイルを実行します。cronのDebian固有の無視リスト(そして見つかりません後ろ):

例えば、ドットを含むすべてのファイルは無視されます。。これは、cronが/etc/cron.d/のファイルを設定ファイル(つまり、.dpkg-dist、.dpkg-orig、.dpkg-old、および.dpkg-new)として処理するのを防ぐために行われます。

したがって、上記の内容に加えて、次の事項も適用されます。

dpkg-divert --local --rename --divert /etc/cron.daily/geogebra.disabled --add /etc/cron.daily/geogebra

/etc/cron.daily/geogebraパッケージを実行し、パッケージが最初にインストールされる前または後に独自のリポジトリを管理しようとすることは避けてください。

追加されたキーは、apt-key初期設定後に自動的に再追加されないようです。それでも存在する場合は、次のように確認できます。

# apt-key list [email protected]
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
pub   rsa2048 2013-03-22 [SC]
      9827 2894 F647 8AA4 434B  41D3 C072 A329 83A7 36CF
uid           [ unknown] International GeoGebra Institute <[email protected]>

次のように削除できます。

# apt-key del [email protected]
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

おすすめ記事