2012-04-21 88 views
49

讓我首先說我對Linux(Ubuntu)是全新的,並且與R一起工作。目前,我在R 2.13版本上,並且想更新到更新的版本以便使用一些依賴於R> = 2.14的軟件包。從CRAN Ubuntu存儲庫安裝R:沒有公鑰錯誤

我有我的sources.list文件,如here所述。然後,我定位到終端和類型:

sudo apt-get update 

,並在嘗試在CRAN鏡像更新[R最接近我,當出現以下錯誤:

Reading package lists... Done 
W: GPG error: http://lib.stat.cmu.edu oneiric/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9 

由於我是新與R在Ubuntu下,我不確定如何調試此錯誤。

任何幫助將不勝感激。

+8

搜索你越往下鏈接的頁面 - 尋找「安全APT」,並按照指示... – 2012-04-21 00:30:09

+0

此外,符合* W *開始這意味着它僅僅是一個_warning_。 – 2012-04-21 02:45:56

+0

繼續@ ben-bolker - 我自己遇到了這個問題,並且無法解決問題,即使我遵循了SECURE APT說明。我發現我在工作時在防火牆後面關閉了端口11371,我無法下載安全密鑰。這種情況可以[在這裏測試](http://www.yougetsignal.com/tools/open-ports/)。我可以執行此升級的唯一方法是在家中進行,我可以訪問我的路由器。 – gauden 2012-04-21 08:43:53

回答

41

像@Ben Bolker評論(抱歉,我盜用了您的評論,但正確的答案尚未發佈),在Debian軟件包回購the description有它說的一段secure apt

SECURE APT

CRAN上的Debian backports存檔文件的密鑰是 「Johannes Ranke(CRAN Debian存檔文件)」,其中包含密鑰 ID 381BA480。你可以用

GPG --keyserver subkeys.pgp.net --recv鍵381BA480或 或者提貨,使用另一個密鑰服務器,

GPG --keyserver pgp.mit.edu --recv-關鍵381BA480如果這不 工作,這可能是由於防火牆阻止端口11371. 或者,您也可以在 http://keyserver.noreply.org/http://pgp.mit.edu/搜索0x381BA480和鍵區複製到一個純文本文件 ,命名,例如,jranke_cran.asc。

如果接收與GPG做了工作的重點,你需要將它導出到 文本文件

GPG -a --export 381BA480> jranke_cran.asc在您需要 使已知鍵兩種情況通過運行apt系統

apt-key以root身份添加jranke_cran.asc。

如果您還沒有這樣做,這可能會解決您的問題。

+2

我不介意劫持評論。我評論當我懶得發佈完整答案... – 2012-04-21 21:13:22

+6

請注意,這和@ ManuelRamon的答案都依賴於一個較老的鍵。用'apt-get update'中的錯誤信息代替你的任何東西。 – 2012-12-18 14:33:19

+2

只是想確認SECURE APT部分中的「剪切和粘貼」選項的作用就像是一種魅力: 在http://keyserver.ubuntu.com:11371/上搜索關鍵字(搜索Michael Rutter)並複製一個純文本文件的關鍵,例如key.txt。然後,將密鑰輸入到apt-key sudo apt-key add key.txt – Richard 2015-02-14 06:32:11

60

爲我工作最簡單的辦法是從埃姆雷Sahin在this thread

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 
+0

標記答案中的關鍵似乎不適用於我。這個雖然 – OganM 2014-12-27 23:14:47

+2

+1這工作對我來說,但注意我需要從E084DAB9(屬於以前的維護者邁克爾Rutter)到381BA480(當前維護者約翰內斯蘭克) – arielf 2015-12-16 05:07:19

+0

這個應該只是標記答案的關鍵。 – doctorate 2015-12-31 06:52:31

17
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID 

,並在錯誤消息中顯示的編號替換KEYID。

+0

Upvoted,因爲這是一個簡潔的解決方案。 – 2015-12-03 15:20:07

3

這是一個循序漸進的答案,可能會更容易遵循。

  1. 抓取鍵(最後8位數字在警告消息):

    GPG --keyserver pgp.mit.edu --recv密鑰E084DAB9

輸出應看起來像這樣:

gpg: requesting key E084DAB9 from hkp server pgp.mit.edu 
    gpg: key E084DAB9: public key "Michael Rutter <[email protected]>" imported 
    gpg: Total number processed: 1 
    gpg:    imported: 1 (RSA: 1) 
  • 創建用於第k的文本文件安永:

    GPG -a --export E084DAB9> marutter.asc

  • 添加鍵(需要超級用戶權限):

    sudo易於鍵添加marutter.asc

  • 更新庫:

    sudo易於得到更新

  • 現在應該沒有關於丟失鑰匙的警告。

    5

    我遇到了同樣的問題,我發現,可能是由於防火牆唯一的解決辦法,是使用有幫助的ŸPPA經理。下面的兩個步驟在Ubuntu 15.04上工作。

    1)首先安裝在Y PPA經理:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager 
    sudo apt-get update 
    sudo apt-get install y-ppa-manager 
    

    2)然後取缺少通過運行在Y PPA經理鍵:

    y-ppa-manager 
    

    點擊 「高級」

    接下來,單擊「嘗試導入缺少的GPG密鑰」

    最後,再次更新,以檢查是否正常工作:

    sudo apt-get update 
    
    11

    感謝Philipp Burckhardt我得到它固定...看看here:或者乾脆試試這個:

    gpg --keyserver pgpkeys.mit.edu --recv-key 51716619E084DAB9 
    gpg -a --export 51716619E084DAB9 | sudo apt-key add - 
    
    3

    就像別人貼上面,這一個班輪似乎在Debian 6很好地工作:

    sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 381BA480 
    
    Executing: gpg --ignore-time-conflict --no-options 
    --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys 381BA480 
    gpg: requesting key 381BA480 from hkp server pgp.mit.edu 
    gpg: key 381BA480: public key "Johannes Ranke (CRAN Debian archive) <[email protected]>" imported 
    gpg: no ultimately trusted keys found 
    gpg: Total number processed: 1 
    gpg:  imported: 1 
    
    +1

    我會補充說有時默認的端口被阻塞,所以你必須指定通過一個未阻塞的端口獲得密鑰,比如80.請參閱:https://cloud.r-project.org/bin/linux/ubuntu/ – mpettis 2016-12-05 20:05:46