运行foxy_install_aim.sh安装ROS包时出现无法定位软件包报错
问题根因
从日志里的Ubuntu版本代号jammy可以判断当前运行环境是Ubuntu 22.04 LTS,而你执行的foxy_install_aim.sh是为ROS 2 Foxy版本编写的安装脚本——ROS 2 Foxy官方仅适配Ubuntu 20.04 LTS(版本代号Focal),22.04软件源中根本不存在Foxy对应的deb安装包,这就是所有E: Unable to locate package报错的核心原因。后续出现的geographiclib-get-geoids命令不存在、/opt/ros/foxy/setup.bash文件缺失,都是前面安装步骤失败后连带产生的问题。
日志里的apt-key is deprecated属于新版本apt的常规警告,不影响实际安装流程,不需要单独处理。
修复方案
方案1:使用匹配脚本的系统版本(稳定性最高,完全对齐教程要求)
- 提前备份系统内的重要数据,重装Ubuntu 20.04 LTS系统,不要使用22.04及以上版本
- 系统安装完成后先更新本地软件源缓存,再重新执行安装脚本即可解决所有包查找失败的问题
- 若脚本执行完成后仍提示
geographiclib-get-geoids: command not found,单独执行以下命令补装依赖即可:sudo apt install geographiclib-tools -y sudo geographiclib-get-geoids egm96-5
方案2:不重装系统,修改脚本适配Ubuntu 22.04
如果不想更换系统版本,按以下步骤调整脚本和环境适配22.04:
- 先清理之前错误添加的软件源配置,避免源冲突:
sudo rm -f /etc/apt/sources.list.d/ros2.list sudo apt update - 对
foxy_install_aim.sh脚本做两处全局替换:将脚本内所有foxy字段替换为humble(Ubuntu 22.04适配的长期支持ROS2版本为Humble),将脚本内所有gazebo11、libgazebo11-dev字段替换为gazebo、libgazebo-dev(22.04官方源内Gazebo包名不带版本后缀) - 提前配置适配22.04的ROS 2 Humble官方软件源,更新源缓存
- 提前安装缺失的工具依赖:
sudo apt install geographiclib-tools -y sudo geographiclib-get-geoids egm96-5 - 给脚本重新添加执行权限后运行即可:
chmod +x ./foxy_install_aim.sh ./foxy_install_aim.sh
如果修改后运行脚本仍提示个别ROS包找不到,直接将对应包名的ros-foxy-前缀替换为ros-humble-,手动执行apt安装即可。
注意事项
- 运行安装脚本前建议先执行
sudo apt upgrade -y将系统现有软件包升级到最新版本,避免出现依赖版本冲突 - 脚本执行过程中如果出现权限报错,确认所有apt相关操作都加了
sudo提权
内容的提问来源于stack exchange,提问作者user19323824
相关产品推荐
相关产品推荐

