가치가 하락 했습니다 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