Debian apt, gpg 키 및 서명자에 대한 지속적인 보도

Debian apt, gpg 키 및 서명자에 대한 지속적인 보도

가치가 하락 했습니다 apt-key. 예를 들어 여기에서는 gpg 키로 마이그레이션하는 방법을 설명합니다. 괜찮습니다. 하지만 sources.list파일을 덮어쓸 때까지 한 달 정도는 작동합니다. 왜, 어떻게 덮어씌워졌는지는 모르겠지만, 어느 시점에 덮어씌워져서 이 과정을 다시 수행해야 했다는 것뿐입니다. 이를 수행하는 외부 저장소의 일반적인 예: 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

바오가 그랬어

...데비안이 아닙니다.

포장 내용에 따르면지리 대수학(이 곳에서 검색 가능 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()

패키지가 자신의 방식으로 자신의 저장소를 다시 활성화하려고 시도하는 두 곳입니다.


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

관련 정보