jimmyrosuse / ROS-install

ROS install
0 stars 0 forks source link

GPG error #1

Closed jimmyrosuse closed 1 month ago

jimmyrosuse commented 1 month ago

根據錯誤提示,這個問題與 GPG 公鑰未正確導入有關。具體來說,NO_PUBKEY F42ED6FBAB17C654 錯誤意味著系統嘗試從 ROS 軟體庫下載軟體包時,無法驗證所需的公鑰。

為了解決這個問題,可以嘗試以下步驟重新添加公鑰:

步驟 1:手動添加公鑰

可以手動添加缺失的公鑰,方法如下:

  1. 在終端中運行以下命令來添加公鑰:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

這個命令會從 Ubuntu 的官方密鑰服務器下載並添加缺失的公鑰。如果成功,你應該會看到一條消息說明公鑰已被導入。

步驟 2:更新軟體源

在添加公鑰後,更新系統中的軟體包列表:

sudo apt update

如果沒有出現任何錯誤消息,這意味著公鑰已成功添加,你可以繼續安裝 ROS 2。

步驟 3:安裝 ROS 2

現在可以繼續安裝 ROS 2 了。根據你的需求,執行以下安裝命令之一:

其他備選方法:

如果上述方法失敗,可以嘗試以下方法:

  1. 使用 curl 手動添加公鑰:
    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

這將從 ROS 官方存儲庫下載密鑰並添加。

總結

jimmyrosuse commented 1 month ago

Executing: /tmp/apt-key-gpghome.DE7Rv6ktxE/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 gpg: key F42ED6FBAB17C654: "Open Robotics info@osrfoundation.org" not changed gpg: Total number processed: 1 gpg: unchanged: 1

jimmyrosuse commented 1 month ago

從回傳的資訊來看,公鑰 F42ED6FBAB17C654 已經正確導入到你的系統中,但系統提示它沒有變化 (unchanged),這表示這個公鑰已經存在。

下一步,你可以重新更新你的軟體源列表並嘗試安裝 ROS 2

步驟 1:更新軟體包列表

運行以下命令來更新軟體包列表:

sudo apt update

這一步應該不再顯示任何 GPG 錯誤信息。如果還有其他問題,可以查看輸出的具體錯誤。

步驟 2:安裝 ROS 2

如果沒有錯誤,可以繼續安裝 ROS 2

如果仍然出現問題:

如果執行 sudo apt update 時仍然遇到與公鑰相關的問題,你可以嘗試以下步驟來清理和重新配置 GPG 密鑰。

方法 1:清理 apt 中的舊密鑰並重新添加

  1. 刪除過時的公鑰(如果存在):

    sudo apt-key del F42ED6FBAB17C654
  2. 重新添加公鑰:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
  3. 再次嘗試更新:

    sudo apt update

方法 2:使用 curl 直接添加公鑰

如果上面的步驟失敗,可以使用 curl 直接從官方源下載並添加密鑰:

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null

接著,再次嘗試 sudo apt update 並安裝 ROS 2。

如果你仍然遇到問題,請將具體的錯誤訊息發給我,我將幫助進行進一步排查。

jimmyrosuse commented 1 month ago

W: GPG error: http://packages.ros.org/ros2/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654 E: The repository 'http://packages.ros.org/ros2/ubuntu focal InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.

jimmyrosuse commented 1 month ago

根據錯誤信息,你的系統無法驗證來自 ROS 2 軟體庫的簽名,原因是缺少公鑰,並且該倉庫無法進行安全的更新。這種情況表明公鑰未成功導入或配置。

由於你提到的 ROS 2 軟體庫是針對 Ubuntu Focal (20.04) 的,請檢查你的系統是否真的使用了 Ubuntu 20.04,還是你使用的是 Ubuntu 22.04(這對應於 ROS 2 Humble)。如果你正在使用 Ubuntu 22.04,應該使用正確的代號 jammy

接下來嘗試幾種方法來解決這個問題:

方法 1:確認你的 ROS 軟體源配置正確

  1. 打開並編輯 ROS 軟體源文件:

    sudo nano /etc/apt/sources.list.d/ros2.list
  2. 確保文件中的內容正確,應根據你的 Ubuntu 版本設置:

    • 如果你使用的是 Ubuntu 22.04 (Jammy),應如下配置:
    deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu jammy main
    • 如果你使用的是 Ubuntu 20.04 (Focal),則配置如下:
    deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main
  3. 保存文件並退出。

方法 2:重新添加密鑰(解決 NO_PUBKEY 錯誤)

  1. 下載並重新添加密鑰:

    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null
  2. 檢查密鑰是否正確添加:

    ls /usr/share/keyrings/ros-archive-keyring.gpg

    如果這個文件存在,說明密鑰已正確導入。

方法 3:刪除舊密鑰並重新添加

如果仍然無法解決,嘗試刪除舊的密鑰並重新導入:

  1. 刪除密鑰:

    sudo apt-key del F42ED6FBAB17C654
  2. 重新導入密鑰:

    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

方法 4:使用 apt-key 直接添加密鑰

某些情況下,可以通過 apt-key 來手動添加密鑰:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

方法 5:更新系統並安裝 ROS 2

  1. 確保一切就緒後,更新你的系統軟體包:

    sudo apt update
  2. 嘗試再次安裝 ROS 2

    sudo apt install ros-humble-desktop

總結

  1. 確保你正在使用正確的 Ubuntu 版本並配置了正確的軟體源。
  2. 刪除舊的公鑰,重新添加密鑰。
  3. 更新軟體包並安裝 ROS 2

如果仍有問題,請告知具體的錯誤信息,我會進一步幫助你。

jimmyrosuse commented 1 month ago

既然你正在使用 Ubuntu 20.04,那麼應確保軟體源指向的是 Ubuntu Focal 的版本,並且公鑰正確配置。

請按照以下步驟操作:

1. 確認你的 ROS 軟體源配置正確

執行以下命令來打開 ROS 軟體源文件:

sudo nano /etc/apt/sources.list.d/ros2.list

確保文件內容如下(針對 Ubuntu 20.04):

deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main

如果內容已正確,請保存文件:

  1. Ctrl + O 保存。
  2. Enter 確認文件名。
  3. Ctrl + X 退出。

2. 添加 GPG 公鑰

接著,執行以下命令來重新添加公鑰:

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null

3. 更新軟體包列表

成功添加公鑰後,更新系統的軟體包列表:

sudo apt update

4. 安裝 ROS 2(Humble 或 Foxy)

如果你安裝的是 ROS 2 Foxy(對應 Ubuntu 20.04),可以執行以下命令:

如果你安裝的是 ROS 2 Humble,則需要使用 ros-humble 的包名來安裝,儘管它主要針對 Ubuntu 22.04:

5. 確認 ROS 2 是否安裝成功

安裝完成後,你可以檢查 ROS 2 是否成功安裝,嘗試執行以下命令:

source /opt/ros/foxy/setup.bash

或者對於 Humble:

source /opt/ros/humble/setup.bash

然後使用以下命令確認安裝情況:

ros2 --version

如果顯示了版本號,說明 ROS 2 安裝成功。

總結

jimmyrosuse commented 1 month ago

Get:1 http://packages.ros.org/ros2/ubuntu focal InRelease [4,685 B]
Err:1 http://packages.ros.org/ros2/ubuntu focal InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654 Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://tw.archive.ubuntu.com/ubuntu focal InRelease
Hit:4 http://tw.archive.ubuntu.com/ubuntu focal-updates InRelease Hit:5 http://tw.archive.ubuntu.com/ubuntu focal-backports InRelease Reading package lists... Done W: GPG error: http://packages.ros.org/ros2/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654 E: The repository 'http://packages.ros.org/ros2/ubuntu focal InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.

jimmyrosuse commented 1 month ago

根據錯誤信息,系統仍無法驗證來自 ROS 軟體庫的公鑰,導致無法安全地更新包列表。此錯誤顯示缺少 NO_PUBKEY F42ED6FBAB17C654。接下來,我將提供一個完整的解決方案來處理這個問題。

1. 手動添加密鑰到 keyring 文件

由於常規方法似乎無法解決問題,可以嘗試使用以下命令來手動添加公鑰到 keyring 文件。

  1. 首先,刪除舊的 ROS GPG key:

    sudo apt-key del F42ED6FBAB17C654
  2. 使用 curl 從官方源下載並添加密鑰:

    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null

2. 檢查 GPG Key 文件是否正確

確認剛才添加的 GPG Key 文件已成功添加到 /usr/share/keyrings 目錄中:

ls /usr/share/keyrings/ros-archive-keyring.gpg

如果文件存在,說明密鑰已成功添加。

3. 確認軟體源文件

確保 /etc/apt/sources.list.d/ros2.list 文件正確配置,並且包含以下內容(針對 Ubuntu 20.04):

deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main

如果這部分沒有問題,保存並退出文件。

4. 更新並安裝

重新更新軟體包列表並嘗試安裝 ROS 2:

  1. 更新包列表:

    sudo apt update
  2. 安裝 ROS 2

    • 基礎包:

      sudo apt install ros-foxy-ros-base
    • 或者安裝完整的桌面版本:

      sudo apt install ros-foxy-desktop

5. 檢查結果

更新包列表後,如果仍然報錯,請重複以下命令檢查密鑰狀態:

sudo apt-key list

確認 F42ED6FBAB17C654 是否存在。

如果問題仍然存在:

如果問題依然無法解決,可以嘗試以下步驟:

  1. 切換到不同的 GPG 服務器來獲取密鑰:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654
  2. 再次嘗試更新並安裝 ROS 2。

如果遇到其他錯誤提示,請將完整的錯誤信息告訴我,我會進一步幫助你解決問題。

jimmyrosuse commented 1 month ago

如果你想要將 Ubuntu 回復到初始狀態並重新安裝一切,包括重新安裝 ROS 2,可以選擇以下幾個方法:

1. 重新安裝 Ubuntu

這是最徹底的方式,會將你的系統恢復到出廠狀態,並刪除所有數據。你可以重新安裝操作系統並開始安裝 ROS 2

步驟:

  1. 備份數據:確保已經備份好所有需要保留的文件和資料。

  2. 創建啟動盤:使用 Ubuntu ISO 文件製作 USB 啟動盤。

    • 下載 Ubuntu 20.04 ISO 映像:Ubuntu 下載頁面
    • 使用工具如 RufusBalena Etcher 將 ISO 文件寫入 USB。
  3. 重啟電腦並從 USB 啟動。

  4. 選擇重新安裝 Ubuntu:當你進入安裝程序後,選擇 "Erase disk and install Ubuntu" 或 "Reinstall Ubuntu" 來清除當前的系統並重新安裝。

  5. 安裝完成後,按照 官方的 ROS 2 安裝指南 重新安裝 ROS 2。

2. 清理 ROS 2 安裝並重新安裝

如果你不想完全重新安裝 Ubuntu,則可以僅清理並重新安裝 ROS 2。這種方法保留你的系統設置和其他文件,但會完全移除 ROS 2 及其相關文件。

步驟:

  1. 移除 ROS 2

    執行以下命令來刪除所有已安裝的 ROS 2 包:

    sudo apt remove --autoremove ros-*
  2. 刪除 ROS 2 配置文件和工作區

    刪除 ROS 2 的相關配置和工作區目錄:

    sudo rm -rf /opt/ros
    sudo rm -rf ~/ros2_ws
  3. 清理系統

    清理包緩存和不需要的依賴包:

    sudo apt autoremove
    sudo apt clean
  4. 重新配置軟體源

    確保 ROS 軟體源配置正確:

    • 打開並編輯 /etc/apt/sources.list.d/ros2.list,確認內容正確。
  5. 重新安裝 ROS 2

    更新軟體包列表並重新安裝 ROS 2:

    sudo apt update
    sudo apt install ros-foxy-desktop

3. 重置包管理器狀態

這是針對軟體源出現混亂情況的解決方法,可以清理並重置 APT 包管理器:

  1. 刪除損壞的軟體源文件:

    sudo rm -rf /etc/apt/sources.list.d/*
  2. 更新包列表並重新添加 ROS 2 軟體源:

    • 重新添加 ROS 軟體源:

      sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main" > /etc/apt/sources.list.d/ros2.list'
  3. 添加公鑰並更新:

    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null
    sudo apt update
  4. 重新安裝 ROS 2。

這些方法可以幫助你回復到初始狀態並重新安裝 ROS 2。如果你選擇完全重新安裝 Ubuntu,這將是最乾淨的解決方案。