ubuntu apt-get 的三个技巧 && ROS 安装的坑

本文详细介绍了在Ubuntu系统中常见的“apt-get-f install”错误的解决方法,提供了使用浏览器进行可视化软件安装的技巧,分享了如何更换为清华大学源以提高apt更新速度,并解决了ROS依赖下载的问题。
一、“apt-get -f install” 错误与解决方法

通过 dpkg 安装了某个 deb 包但是没有解决依赖问题,再使用 apt-get 的时候,就会出现这个错误。
解决方法: sudo dpkg -r 出问题的软件

二、浏览器安装

例如 sudo apt-get install ros-kinetic-desktop-full 命令行安装速度慢,错误率高
可以在浏览器中输入 apt:ros-kinetic-desktop-full?refresh=yes ,可视化安装

三、改用清华源

将系统自带的 /etc/apt/sources.list 文件做个备份,将该文件替换为下面内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
四、ROS 安装问题

rosdep update 时出现:

ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

原因是:raw.githubusercontent.com 被墙了
解决方法:曲线救国

# 通过站长工具解析  raw.githubusercontent.com,挨个尝试找到可以用的 ip
# 修改 hosts:
sudo gedit /etc/hosts
# 添加如下行:
151.101.84.133  raw.githubusercontent.com
# 保存后执行:
rosdep update
=> ERROR [ 4/13] RUN apt-get update && apt-get install -y python3-pip 49.4s ------ > [ 4/13] RUN apt-get update && apt-get install -y python3-pip python3-dev python3-setuptools python3-wheel python3-empy python3-catkin-tools && rm -rf /var/lib/apt/lists/*: 0.790 Get:1 http://ports.ubuntu.com/ubuntu-ports focal InRelease [265 kB] 3.539 Get:2 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease [128 kB] 4.009 Get:3 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease [128 kB] 4.986 Get:4 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease [128 kB] 5.746 Get:5 http://ports.ubuntu.com/ubuntu-ports focal/restricted arm64 Packages [1317 B] 5.763 Get:6 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages [11.1 MB] 35.19 Get:7 http://ports.ubuntu.com/ubuntu-ports focal/main arm64 Packages [1234 kB] 37.58 Get:8 http://ports.ubuntu.com/ubuntu-ports focal/multiverse arm64 Packages [139 kB] 38.34 Get:9 http://ports.ubuntu.com/ubuntu-ports focal-updates/restricted arm64 Packages [82.9 kB] 38.34 Get:10 http://ports.ubuntu.com/ubuntu-ports focal-updates/universe arm64 Packages [1505 kB] 42.00 Get:11 http://ports.ubuntu.com/ubuntu-ports focal-updates/multiverse arm64 Packages [14.9 kB] 42.41 Get:12 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 Packages [3821 kB] 44.48 Get:13 http://ports.ubuntu.com/ubuntu-ports focal-backports/main arm64 Packages [54.8 kB] 44.50 Get:14 http://ports.ubuntu.com/ubuntu-ports focal-backports/universe arm64 Packages [27.8 kB] 44.50 Get:15 http://ports.ubuntu.com/ubuntu-ports focal-security/multiverse arm64 Packages [8083 B] 44.50 Get:16 http://ports.ubuntu.com/ubuntu-ports focal-security/main arm64 Packages [3425 kB] 45.43 Get:17 http://ports.ubuntu.com/ubuntu-ports focal-security/universe arm64 Packages [1214 kB] 45.72 Get:18 http://ports.ubuntu.com/ubuntu-ports focal-security/restricted arm64 Packages [77.0 kB] 45.95 Fetched 23.4 MB in 46s (510 kB/s) 45.95 Reading package lists... 47.41 Reading package lists... 48.75 Building dependency tree... 49.15 Reading state information... 49.27 E: Unable to locate package python3-catkin-tools ------ Dockerfile:34 -------------------- 33 | # ---------------------------------------------- 34 | >>> RUN apt-get update && apt-get install -y \ 35 | >>> python3-pip \ 36 | >>> python3-dev \ 37 | >>> python3-setuptools \ 38 | >>> python3-wheel \ 39 | >>> python3-empy \ 40 | >>> python3-catkin-tools \ 41 | >>> && rm -rf /var/lib/apt/lists/* 42 | -------------------- ERROR: failed to build: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y python3-pip python3-dev python3-setuptools python3-wheel python3-empy python3-catkin-tools && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
08-30
在 Dockerfile 中将 ROS 版本从 Kinetic 升级为 Noetic,主要涉及基础镜像的更改、ROS 安装命令的调整以及依赖项版本的兼容性处理。以下是具体修改步骤和注意事项。 ### 修改基础镜像 ROS Kinetic 和 Noetic 分别基于不同的 Ubuntu 版本,Kinetic 通常使用 `ubuntu:xenial`,而 Noetic 基于 `ubuntu:focal`。因此,Dockerfile 的第一行(即基础镜像)应更改为: ```dockerfile FROM ubuntu:focal ``` 此更改确保后续安装ROS Noetic 与操作系统版本兼容[^3]。 ### 更换 ROS 安装ROS Noetic 的官方仓库地址与 Kinetic 不同,需更新 APT 源列表文件 `/etc/apt/sources.list.d/ros-latest.list`。替换原有内容为: ```bash deb http://packages.ros.org/ros/ubuntu focal main ``` 同时,添加 ROS GPG 密钥以确保软件包来源可信: ```bash apt update && apt install -y curl gnupg2 curl -sSL 'https://raw.githubusercontent.com/ros/rosdistro/master/ros.key' | apt-key add - ``` ### 安装 ROS Noetic 核心组件 ROS Noetic 使用 `ros-noetic-desktop-full` 替代 Kinetic 的 `ros-kinetic-desktop-full`,因此应在 Dockerfile 中修改安装命令: ```bash apt install -y ros-noetic-desktop-full ``` 此外,若项目中使用了额外的功能包(如 `ros-kinetic-navigation`),也应将其替换为对应的 Noetic 版本,例如: ```bash apt install -y ros-noetic-navigation ros-noetic-navigation-stage ros-noetic-navigation-tutorials ``` 这些功能包支持路径规划、地图构建、传感器数据处理等核心机器人功能[^3]。 ### 初始化 ROS 环境 ROS Noetic 引入了一些环境变量配置方式的变化,建议在容器启动时自动加载 ROS 环境变量: ```dockerfile RUN echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc CMD ["/bin/bash"] ``` 该配置确保每次进入容器时都能正确加载 ROS Noetic 的运行时环境。 ### 处理依赖冲突与版本适配 由于 ROS Noetic 是基于 Python 3 的发行版,部分原本适用于 Kinetic 的 Python 脚本或节点可能需要进行语言版本适配。检查并确保所有 Python 脚本兼容 Python 3,并安装必要的依赖库,例如: ```bash apt install -y python3-pip python3-catkin-pkg-modules ``` 对于 C++ 编写的节点,需确认使用的 TF、MoveBase 等模块是否与 Noetic 兼容,特别是 TF 模块在 Noetic 中已迁移到 `tf2`,需相应修改代码中的头文件引用和命名空间调用[^2]。 ### 示例 Dockerfile 修改片段 以下是一个简化的 Dockerfile 修改示例: ```dockerfile FROM ubuntu:focal # 添加 ROS 源和密钥 RUN apt update && apt install -y curl gnupg2 \ && curl -sSL 'https://raw.githubusercontent.com/ros/rosdistro/master/ros.key' | apt-key add - \ && echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list # 安装 ROS Noetic RUN apt update && apt install -y ros-noetic-desktop-full \ && apt install -y ros-noetic-navigation ros-noetic-navigation-stage ros-noetic-navigation-tutorials # 配置环境变量 RUN echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc CMD ["/bin/bash"] ``` 该配置可作为迁移的基础模板,根据实际项目需求进一步扩展。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值