Closed jimmyrosuse closed 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
從回傳的資訊來看,公鑰 F42ED6FBAB17C654
已經正確導入到你的系統中,但系統提示它沒有變化 (unchanged
),這表示這個公鑰已經存在。
下一步,你可以重新更新你的軟體源列表並嘗試安裝 ROS 2:
運行以下命令來更新軟體包列表:
sudo apt update
這一步應該不再顯示任何 GPG 錯誤信息。如果還有其他問題,可以查看輸出的具體錯誤。
如果沒有錯誤,可以繼續安裝 ROS 2:
安裝基礎包(不含桌面環境):
sudo apt install ros-humble-ros-base
安裝完整的桌面環境(包括仿真工具等):
sudo apt install ros-humble-desktop
如果執行 sudo apt update
時仍然遇到與公鑰相關的問題,你可以嘗試以下步驟來清理和重新配置 GPG 密鑰。
apt
中的舊密鑰並重新添加刪除過時的公鑰(如果存在):
sudo apt-key del F42ED6FBAB17C654
重新添加公鑰:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
再次嘗試更新:
sudo apt update
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。
如果你仍然遇到問題,請將具體的錯誤訊息發給我,我將幫助進行進一步排查。
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.
根據錯誤信息,你的系統無法驗證來自 ROS 2 軟體庫的簽名,原因是缺少公鑰,並且該倉庫無法進行安全的更新。這種情況表明公鑰未成功導入或配置。
由於你提到的 ROS 2 軟體庫是針對 Ubuntu Focal (20.04) 的,請檢查你的系統是否真的使用了 Ubuntu 20.04,還是你使用的是 Ubuntu 22.04(這對應於 ROS 2 Humble)。如果你正在使用 Ubuntu 22.04,應該使用正確的代號 jammy。
接下來嘗試幾種方法來解決這個問題:
打開並編輯 ROS 軟體源文件:
sudo nano /etc/apt/sources.list.d/ros2.list
確保文件中的內容正確,應根據你的 Ubuntu 版本設置:
deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu jammy main
deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu focal main
保存文件並退出。
下載並重新添加密鑰:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null
檢查密鑰是否正確添加:
ls /usr/share/keyrings/ros-archive-keyring.gpg
如果這個文件存在,說明密鑰已正確導入。
如果仍然無法解決,嘗試刪除舊的密鑰並重新導入:
刪除密鑰:
sudo apt-key del F42ED6FBAB17C654
重新導入密鑰:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
apt-key
直接添加密鑰某些情況下,可以通過 apt-key
來手動添加密鑰:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
確保一切就緒後,更新你的系統軟體包:
sudo apt update
嘗試再次安裝 ROS 2:
sudo apt install ros-humble-desktop
如果仍有問題,請告知具體的錯誤信息,我會進一步幫助你。
既然你正在使用 Ubuntu 20.04,那麼應確保軟體源指向的是 Ubuntu Focal 的版本,並且公鑰正確配置。
請按照以下步驟操作:
執行以下命令來打開 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
如果內容已正確,請保存文件:
Ctrl + O
保存。Ctrl + X
退出。接著,執行以下命令來重新添加公鑰:
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 Foxy(對應 Ubuntu 20.04),可以執行以下命令:
基礎包(不含桌面環境):
sudo apt install ros-foxy-ros-base
完整桌面安裝:
sudo apt install ros-foxy-desktop
如果你安裝的是 ROS 2 Humble,則需要使用 ros-humble
的包名來安裝,儘管它主要針對 Ubuntu 22.04:
基礎包:
sudo apt install ros-humble-ros-base
完整桌面安裝:
sudo apt install ros-humble-desktop
安裝完成後,你可以檢查 ROS 2 是否成功安裝,嘗試執行以下命令:
source /opt/ros/foxy/setup.bash
或者對於 Humble:
source /opt/ros/humble/setup.bash
然後使用以下命令確認安裝情況:
ros2 --version
如果顯示了版本號,說明 ROS 2 安裝成功。
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.
根據錯誤信息,系統仍無法驗證來自 ROS 軟體庫的公鑰,導致無法安全地更新包列表。此錯誤顯示缺少 NO_PUBKEY F42ED6FBAB17C654。接下來,我將提供一個完整的解決方案來處理這個問題。
keyring
文件由於常規方法似乎無法解決問題,可以嘗試使用以下命令來手動添加公鑰到 keyring
文件。
首先,刪除舊的 ROS GPG key:
sudo apt-key del F42ED6FBAB17C654
使用 curl
從官方源下載並添加密鑰:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null
確認剛才添加的 GPG Key 文件已成功添加到 /usr/share/keyrings
目錄中:
ls /usr/share/keyrings/ros-archive-keyring.gpg
如果文件存在,說明密鑰已成功添加。
確保 /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
如果這部分沒有問題,保存並退出文件。
重新更新軟體包列表並嘗試安裝 ROS 2:
更新包列表:
sudo apt update
安裝 ROS 2:
基礎包:
sudo apt install ros-foxy-ros-base
或者安裝完整的桌面版本:
sudo apt install ros-foxy-desktop
更新包列表後,如果仍然報錯,請重複以下命令檢查密鑰狀態:
sudo apt-key list
確認 F42ED6FBAB17C654 是否存在。
如果問題依然無法解決,可以嘗試以下步驟:
切換到不同的 GPG 服務器來獲取密鑰:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654
再次嘗試更新並安裝 ROS 2。
如果遇到其他錯誤提示,請將完整的錯誤信息告訴我,我會進一步幫助你解決問題。
如果你想要將 Ubuntu 回復到初始狀態並重新安裝一切,包括重新安裝 ROS 2,可以選擇以下幾個方法:
這是最徹底的方式,會將你的系統恢復到出廠狀態,並刪除所有數據。你可以重新安裝操作系統並開始安裝 ROS 2。
備份數據:確保已經備份好所有需要保留的文件和資料。
創建啟動盤:使用 Ubuntu ISO 文件製作 USB 啟動盤。
重啟電腦並從 USB 啟動。
選擇重新安裝 Ubuntu:當你進入安裝程序後,選擇 "Erase disk and install Ubuntu" 或 "Reinstall Ubuntu" 來清除當前的系統並重新安裝。
安裝完成後,按照 官方的 ROS 2 安裝指南 重新安裝 ROS 2。
如果你不想完全重新安裝 Ubuntu,則可以僅清理並重新安裝 ROS 2。這種方法保留你的系統設置和其他文件,但會完全移除 ROS 2 及其相關文件。
移除 ROS 2
執行以下命令來刪除所有已安裝的 ROS 2 包:
sudo apt remove --autoremove ros-*
刪除 ROS 2 配置文件和工作區
刪除 ROS 2 的相關配置和工作區目錄:
sudo rm -rf /opt/ros
sudo rm -rf ~/ros2_ws
清理系統
清理包緩存和不需要的依賴包:
sudo apt autoremove
sudo apt clean
重新配置軟體源
確保 ROS 軟體源配置正確:
/etc/apt/sources.list.d/ros2.list
,確認內容正確。重新安裝 ROS 2
更新軟體包列表並重新安裝 ROS 2:
sudo apt update
sudo apt install ros-foxy-desktop
這是針對軟體源出現混亂情況的解決方法,可以清理並重置 APT 包管理器:
刪除損壞的軟體源文件:
sudo rm -rf /etc/apt/sources.list.d/*
更新包列表並重新添加 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'
添加公鑰並更新:
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。
這些方法可以幫助你回復到初始狀態並重新安裝 ROS 2。如果你選擇完全重新安裝 Ubuntu,這將是最乾淨的解決方案。
根據錯誤提示,這個問題與 GPG 公鑰未正確導入有關。具體來說,
NO_PUBKEY F42ED6FBAB17C654
錯誤意味著系統嘗試從 ROS 軟體庫下載軟體包時,無法驗證所需的公鑰。為了解決這個問題,可以嘗試以下步驟重新添加公鑰:
步驟 1:手動添加公鑰
可以手動添加缺失的公鑰,方法如下:
這個命令會從 Ubuntu 的官方密鑰服務器下載並添加缺失的公鑰。如果成功,你應該會看到一條消息說明公鑰已被導入。
步驟 2:更新軟體源
在添加公鑰後,更新系統中的軟體包列表:
如果沒有出現任何錯誤消息,這意味著公鑰已成功添加,你可以繼續安裝 ROS 2。
步驟 3:安裝 ROS 2
現在可以繼續安裝 ROS 2 了。根據你的需求,執行以下安裝命令之一:
基礎包(不含桌面環境):
完整桌面安裝:
其他備選方法:
如果上述方法失敗,可以嘗試以下方法:
curl
手動添加公鑰:這將從 ROS 官方存儲庫下載密鑰並添加。
總結
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
sudo apt update
來更新軟體包。