जब मैं apt-get अद्यतन के बाद KEYEXPIRED त्रुटि संदेश मिला तो मुझे क्या करना चाहिए?


74

जबकि एक द्वारा एक डेबियन आधारित प्रणाली पर मेरे संकुल अद्यतन

sudo apt-get update

मुझे वह त्रुटि संदेश मिल गया है:

Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release: 
The following signatures were invalid: KEYEXPIRED 1138684904

मुझे इसे ठीक करने के लिए क्या करना चाहिए ?

जवाबों:


117

किसी भी समाप्त हो चुकी रिपॉजिटरी कीज़ और उनकी आईडी खोजने के लिए, apt-keyनिम्नानुसार उपयोग करें :

LANG=C apt-key list | grep expired

आपको निम्न के जैसा परिणाम मिलेगा:

pub   4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]

इस मामले में /आई के बाद बिट आईडी है BE1DB1F1

कुंजी को अपडेट करने के लिए, रन करें

sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1

नोट: कुंजी को अद्यतन करना स्पष्ट रूप से काम नहीं करेगा यदि पैकेज अनुरक्षक ने नई कुंजी अपलोड नहीं की है (अभी तक)। उस स्थिति में आप अनुरक्षक से संपर्क करने, अपने वितरण के खिलाफ बग दर्ज करने आदि के अलावा कुछ भी कर सकते हैं।

सभी समाप्त कुंजियों को अद्यतन करने के लिए एक लाइनर: (@ryanpcmcquen के लिए धन्यवाद)

for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done

2
यह मेरे लिए काम नहीं करता है, कुंजी को अपडेट करने के लिए कमांड के बाद, कुंजी अभी भी समाप्त हो गई है।
कार्ल फोर्नर

@KarlForner सफल को जोड़ रहा था?
कियान

हाँ यह सफल रहा।
कार्ल फॉर्नर

4
एक लाइनर:for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
ryanpcmcquen

2
जीआरपी भाग के रूप में बस एक संकेत: "समाप्त हो गया" i18ned है, इसलिए LANG * सेटिंग्स के आधार पर यह काम नहीं कर सकता है, उदाहरण के लिए सेटिंग्स के लिए pl_PL.UTF-8 एक को "समाप्त" को "wygasł" में बदलना होगा ताकि इसे एक बनाया जा सके- काम करने के लिए लाइनर।
16

6

आपको नई कुंजी प्राप्त करने और इसे जोड़ने की आवश्यकता है, जिस बिंदु पर उपयुक्त यह पता लगाएगा और शिकायत नहीं करेगा। यह सामान्य रूप से नहीं होना चाहिए, लेकिन यह कभी-कभी होता है। वास्तव में आपको जिस कुंजी को जोड़ने की आवश्यकता है उसका हेक्स कोड जानना आवश्यक है; एक बार जब आप ऐसा कर लेते हैं, तो यह वहां से बहुत ही कठिन है।

कुछ उदाहरण:


2

मेरे पास समान त्रुटि थी, लेकिन समस्या सिस्टम समय में थी। साल था 1961 :)

मैंने सिस्टम तिथि / समय को ठीक किया और उसके बाद बिना किसी प्रो के अपडेट कर सकता था


1

SecureAPT के बारे में डेबियन विकी पर , मैंने पाया है कि मुझे /etc/apt/source.listnon-us से लाइन को हटाना चाहिए ।

मैंने वास्तव में ऐसा किया है और यह काम किया है।


5
यह एक विशेष मामले में काम किया हो सकता है, लेकिन जेनेरिक समाधान नहीं है
kynan 20

1

यह तब भी हो सकता है जब तारीख सही न हो।

दिनांक के साथ जांचें

date

यदि यह गलत है, तो अपना टाइमज़ोन और दिनांक ऑटो सिंक्रनाइज़ेशन सेट करने के लिए निम्न कार्य करें।

apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start

1

एक अत्यधिक संभावना नहीं है, लेकिन कभी-कभी संभव है, इस त्रुटि का कारण अगर अलग-अलग समाप्ति तिथियों के साथ एक ही कुंजी को दो बार जोड़ा जाता है। आप शायद इस उत्तर के लिए प्रासंगिक होने के लिए ऐसा कर रहे हैं।

यह हो सकता है, जैसा कि यह मेरे लिए किया था, जब अपनी खुद की कुंजी के साथ अपने स्वयं के भंडार की मेजबानी कर रहा था। यदि आप, जब कुंजी समाप्त होने वाली है, बस इसे बदलने के बजाय अपने जीवनकाल का विस्तार करें, और यदि आपने preseeding का उपयोग करके मूल कुंजी स्थापित की है, लेकिन एक डेब पैकेज का उपयोग करके अपडेट की गई कुंजी, तो पुरानी कुंजी अंदर होगी /etc/apt/trusted.gpg, जबकि नया एक के तहत एक अलग फ़ाइल के रूप में समाप्त होता है /etc/apt/trusted.gpg.d/। पुरानी कुंजी नए को छाया देगी, जिसे पूरी तरह से अनदेखा किया जाएगा apt-key। पुरानी कुंजी को चलाकर निकालें gpg --keyring /etc/trusted.gpg --delete-keys <keyid>, और आपकी नई कुंजी का पता लग जाएगा।

यह एक गैर-मानक कोने कॉन्फ़िगरेशन का एक सा है, लेकिन मुझे उम्मीद है कि मेरा जवाब किसी और मामले में इस भ्रम का सामना करने से बचा सकता है क्योंकि मैं इस मुद्दे का सामना उसी कारण से करता हूं जैसे मैंने किया था।


1

एक और अधिक सरल oneliner:

for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done

मुझे बस लगता है कि अगर आप cutएक से अधिक बार उपयोग करने जैसी चीजें कर रहे हैं , तो एक बेहतर उपकरण है। (इसके अलावा, मैंने इसे एक अलग प्रश्न के आधार पर बनाया है ।)


-1

आपको कुछ करने की जरूरत नहीं है। यह सिर्फ एक चेतावनी है, आप इसे W:उपसर्ग से देख सकते हैं ।


1
अगर वह कुछ भी करने के लिए नहीं था, तो Repos के लिए पूरे हस्ताक्षर प्रणाली बेकार हो जाएगी। यह एक सुरक्षा विशेषता है और उत्पादन में सुरक्षा के लिए महत्वपूर्ण अखंडता महत्वपूर्ण है।
ब्रोको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.