linux 更換 軟件源後 GPG錯誤 html
http://my.oschina.net/emptytimespace/blog/83633 linux
如文章【1】中提到: shell
1,對於DEBIAN系: ubuntu
若是您的套件支援APT-KEY金鑰管理(例如Ubuntu 6.06或者之後的版),請先安裝DRBL的金鑰 (ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),有兩個方式能夠來安裝。
方法1: "wget -q http://drbl.nchc.org.tw/GPG-KEY-DRBL -O- | sudo apt-key add -" 。
方法2: 或是由key server下載,KeyID是D7E8DF3A,能夠這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A | apt-key add -".如法砲制,推薦使用上面方法1,下載發行版的GPG並添加金匙:
wget -q http://.../Release.gpg | sudo apt-key add -
2,對RedHat/Fedora/CentOS系: 緩存
RedHat/Fedora/CentOS 若是您不是系統管理者(root),執行指令"su root" (然後輸入root的密碼),若是你的套件沒有設定root密碼,能夠用"sudo su " (然後該使用者的密碼)以便切換成root 請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣能夠進一步確認您安裝的程式是本計畫所發行的程式。有兩個方式能夠來安裝。
方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。
方法2: 由key server下載,KeyID是D7E8DF3A,能夠這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL". 若是你要查詢系統是否已經有匯入數位簽章的話,能夠這樣查詢: rpm -qa gpg-pubkey*。
3,對於SuSE系: 安全
SuSE 若是您不是系統管理者(root),執行指令"su root" (然後輸入root的密碼),若是你的套件沒有設定root密碼,能夠用"sudo su " (然後該使用者的密碼)以便切換成root 請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣能夠進一步確認您安裝的程式是本計畫所發行的程式。有兩個方式能夠來安裝。
方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。
方法2: 由key server下載,KeyID是D7E8DF3A,能夠這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL".
此處如下的內容已經能夠忽略不看了,菜鳥的山寨方法。 服務器
----------------------------------------------------------------------------------- app
在將官方默認的更新遠換成好比mirrors.ustc.edu.cn的其餘源時,或在安裝系統debian testing後想更換成sid的源來升級成sid系統時,常常遇到GPG錯誤的問題,如刷新軟件庫時以下提示: 測試
GPG 錯誤:http://mirrors.ustc.edu.cn sid InRelease: 因爲沒有公鑰,沒法驗證下列簽名: NO_PUBKEY 07DC563D1F41B907沒法下載 http://http.us.debian.org/debian/dists/sid/InRelease ui
蒐集網上的解決辦法有幾個:
1)
The fix is just to back up sources.list, delete everything in it and run "apt-get update". After the update replace sources.list with the backup and run "apt-get update" again. You should not get the error then. 備份sources.list,而後把sources.list中的東西刪空,運行"apt-get update",而後再用剛剛的備份將"apt-get update"復原,再運行"apt-get update"。此方法不行,但彷佛有更新緩存的做用? 2)
症狀: 代碼: sudo apt-get update W: GPG error: http://apt.tt-solutions.com dapper Release: 因爲沒有公鑰,下列簽名沒法進行驗證: NO_PUBKEY 06EA41DE4F6C1E86 解決方法: 代碼: gpg --keyserver subkeys.pgp.net --recv 4F6C1E86 gpg --export --armor 4F6C1E86 | sudo apt-key add - 說明: 若缺乏其餘公鑰,則將命令中兩處4F6C1E86改成NO_PUBKEY 06EA41DE4F6C1E86中最後8位便可!或使用mit的: # gpg --keyserver pgpkeys.mit.edu --recv-key AED4B06F473041FA # gpg -a --export AED4B06F473041FA | apt-key add - 或服務器:keys.gnupg.net,彷佛是最官方的。 若是是Ubuntu PPA的 代碼: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
而後更新源:
$ sudo apt-get update
使用此方法成功,可是,此方法添加的密鑰彷佛不是明顯官方的.能夠看到/etc/apt目錄下有"trust.gpg"文件,./trust.gpg.d文件夾下有"debian-archive-wheezy-stable.gpg"等文件.考慮到安全性和解決方案的長久性,顯然針對此debian系統的sid發行版,咱們須要相似"debian-sid.gpg"的文件來代替這些文件,而不是所有都從第三方中下載的驗證文件來頂事.並且能夠看到,使用當前的這種方法後,以上的".gpg"文件確實發生了改變,說明這幾個文件確實須要改變.
爲此咱們查看更新源網址"http://mirrors.ustc.edu.cn/debian/dists/sid/"中的文件,發現有一個文件"Release.gpg",可是不一樣的是此文件能夠很容易的做爲文本文檔打開,而系統中的"debian-archive-wheezy-stable.gpg"文件並不能做爲文本文件打開.那麼推測,系統中的文件通過了某種加密,但是加密手段不知,此探索中斷...既然問題已經解決了就留待之後吧.(見補充2)
3)另副一種更新或禁用緩存的方法:
轉貼自:http://www.ubuntugeek.com/how-to-fix-the-ubuntu-gpg-error-badsig.html If you are seeing Ubuntu GPG Error BADSIG use the one of the following methods to fix Error Message W: GPG error: http://archive.canonical.com intrepid Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key Method 1 Try to run the following comamnds from terminal $ sudo -i # apt-get clean # cd /var/lib/apt # mv lists lists.old # mkdir -p lists/partial # apt-get clean # apt-get update Method 2 Try to run the following comamnds from terminal sudo aptitude -o Acquire::http::No-Cache=True -o Acquire::BrokenProxy=true update sudo apt-get update
暫完結。
補充1:
在文章: 使用apt-mirror創建debian的源(http://zx0319.blogspot.com/2011/03/apt-mirrordebian.html)
中得到一個貌似很正規的作法:
若是出現public key的問題,經過如下指令解決。 apt-get install debian-keyring debian-archive-keyring apt-key update apt-get upgrade
補充2:
在軟件源設置選項中有 「身份驗證」 選項卡中,能夠Import key File,這是導入「Release.gpg」文件的接口?須要時能夠測試下。
補充:官方發行版介紹中提到:
數據的完整性是經過一個經數字簽名的 Release 文件獲得知足的。爲了保證發行版中的每一個文件確實屬於該發行版,每一個 Packages 文件的 MD5 校驗碼都被複制到 Release 文件中。
該文件經數字簽名以後被保存在文件 Release.gpg 中,用的是當前版本的存檔簽名密鑰。這個附加的簽章是給穩定版 (stable)與被淘汰的穩定版 (oldstable) 釋出用的,由穩定版釋出團隊的成員用一把專門產生用的離線金鑰製做而成。
這應該是證明了咱們的猜測。
【引用】