Skip to main content

Linux/Ubuntu 软件包管理和配置

Ubuntu 包管理器​

一个包管理器是用于自动化安装、更新和删除 Linux 系统上软件包过程的命令行或图形工具。软件包是包括可执行文件、库、配置文件和文档在内的文件集合,它们被打包在一起以便于分发和安装。包管理器跟踪这些包,使在 Linux 系统上管理软件变得更加容易。

Linux 中的包管理器功能:

  • 安装: 包管理器有助于从仓库或本地文件安装软件包。它们自动处理依赖关系,确保所有必需的组件都被安装。
  • 依赖解析: Linux 软件通常依赖其他包。包管理器检测这些依赖关系,并自动获取和安装它们。
  • 升级: 包管理器允许用户将已安装的软件更新到最新版本。这有助于保持系统的安全性和最新性。
  • 移除: 使用包管理器卸载软件非常直接。它们确保所有相关文件和依赖项被移除,防止冲突。
  • 查询: 用户可以查询包管理器以获取有关已安装包、可用更新和包详细信息的信息。

我们使用的 Ubuntu 系统使用APT(Advanced Package Tool) 和 dpkg作为其主要的包管理器。

APT (Advanced Package Tool)​

APT(Advanced Package Tool)是一个强大且广泛使用的 Linux 世界中的包管理器。它是基于 Debian 的发行版(包括 Debian 本身、Ubuntu 和 Linux Mint)的默认包管理器。APT 简化了软件管理,确保用户可以轻松安装、更新和删除包,同时处理依赖关系。让我们更详细地探讨 APT,包括其命令和实际示例。

APT 的关键特性:

  • 依赖解析: APT 以其强大的依赖解析能力而闻名。它会自动检测并安装所需软件所需的任何必要库或包。这确保了软件能够正确运行,无需手动干预。
  • 仓库管理: APT 连接到在线仓库,那里托管着软件包。用户可以配置使用哪些仓库,从而可以从官方来源和受信任的第三方仓库安装软件。
  • 包管理: 它允许用户管理系统上的包,包括安装、升级、降级和删除。此外,APT 可以锁定包到特定版本,确保系统稳定性。
  • 缓存管理: APT 维护一个包信息的本地缓存。这个缓存有助于更快地搜索和更新包。用户可以使用apt-get update命令更新这个缓存。

APT 中的基本命令:

请在阅读以下命令时,将<package-name>替换为您想要操作的实际包名称,并在 Terminal 中运行这些命令。

更新包列表:

sudo apt-get update

升级包:

sudo apt-get upgrade

搜索包:

apt-cache search <package-name>
# 课堂练习: 搜索软件包 btop , 看看它是做什么用的?
apt-cache search btop

安装包:

sudo apt-get install <package-name>
# 课堂练习: 安装 btop 软件包
sudo apt-get install btop
# 安装完成后, 在 Terminal 中输入 btop , 启动该程序
btop

Todo: 学生补全程序启动测试截图。

移除包:

sudo apt-get remove <package-name>
# 课堂练习: 移除 btop 软件包
sudo apt-get remove btop
# 移除完成后, 在 Terminal 中输入 btop , 测试该程序是否被成功移除
btop

Todo: 学生补全程序启动测试截图。

DPKG (Debian Package)​

DPKG(Debian 包管理器)是基于 Debian 的 Linux 发行版(包括 Debian 本身、Ubuntu 及其衍生版本)的基本包管理工具。DPKG 是一个低级别的包管理器,虽然它直接与单个包文件交互,但通常与 APT 等高级包管理器结合使用,以获得更友好的用户体验。在本节中,我们将探讨 DPKG,其命令,并提供其用法的示例。

DPKG 的关键特性:

  • 低级别包管理: DPKG 直接处理安装、移除和管理单个包文件(带有.deb 扩展名)。它不像 APT 等高级包管理器那样自动解析或管理依赖关系。
  • 包安装: DPKG 负责在基于 Debian 的系统上安装软件包。用户可以从本地.deb 文件安装包,或者如果包已经存在于系统上,则通过指定包名称来安装。
  • 包移除: DPKG 可以从系统中移除已安装的包,确保根据用户偏好保留或清除配置文件。
  • 包查询: 用户可以查询已安装包的状态和信息,这对于诊断问题或验证包详情很有用。

DPKG 中的基本命令:

首先,在浏览器中输入如下网址,下载deb格式的软件包,文件保存在 ~/Downloads/ 文件夹。

http://192.168.78.12:5000/dufs/guest/
# 用户名: guest
# 密码: thankU
## 备注: 如果你的是树莓派: 下载带有 arm64 的软件
## 备注: 如果你的是PC电脑: 下载带有 amd64 的软件
## 自行调研: amd64 和 arm64 的 deb 软件包有何不同?

从.deb 文件安装包:

sudo dpkg -i package.deb
# 课堂练习: 用 dpkg 命令安装刚刚下载的 vscode 软件
dpkg -i ~/Downloads/code_1.106.2-1763572294_arm64.deb

Todo: 学生补全程序启动测试截图。

查询包信息:

dpkg -l | grep <package-name>
# 课堂练习: 查询 vscode 软件包的信息
dpkg -l | grep -i code
# 注意: 这里使用了管道符 `|` 和 `grep` 命令来过滤查询结果.

Todo: 学生补全查询结果截图。vscode 软件包名称通常以 code 开头。

移除包:

sudo dpkg -r <package-name>
# 课堂练习: 移除 vscode 软件包
sudo dpkg -r code
# 移除完成后, 使用 dpkg -l | grep -i code 命令, 测试该程序是否被成功移除

拓展:ROS2 一键安装脚本​

注意:

  1. 以下脚本安装的是 PC 上的 amd64 版,非树莓派的 arm64 版。
  2. 如果 Ubuntu 系统以前安装过 ros2 , 需要将其删除: sudo apt-get remove ros2-*

安装 Ubuntu 26.04 的 ROS2 Lyrical​

将下面的脚本内容保存为一个 install_ros2_lyrical.sh, 然后在 Terminal 中运行该脚本文件。

提示:可以使用系统自带的 gnome-text-editor 文本编辑器, 在终端中输入 gnome-text-editor install_ros2_lyrical.sh 即可打开该文件进行编辑. 该脚本适用于 ubuntu 26.04 中安装 ROS2 的 Lyrical 发行版

chmod +x install_ros2_lyrical.sh
./install_ros2_lyrical.sh
#!/usr/bin/env zsh
set -e

## Run apt fully unattended (needed for a 1-key script)
export DEBIAN_FRONTEND=noninteractive

## Set locale
locale # check for UTF-8

sudo apt update && sudo apt install locales -y
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale # verify settings

## Enable required repositories

### Ubuntu Universe
sudo apt install software-properties-common -y
sudo add-apt-repository -y universe

### ROS 2 apt repository
sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
[ -n "$ROS_APT_SOURCE_VERSION" ] || { echo "ERROR: failed to fetch ros-apt-source version" >&2; exit 1; }
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb
rm -f /tmp/ros2-apt-source.deb

## Install development tools (optional)
sudo apt update && sudo apt install ros-dev-tools -y

## Install ROS 2
sudo apt update
sudo apt upgrade -y
sudo apt install ros-lyrical-desktop -y

## Setup environment
# Sourcing here only affects this script's own process.
# Persist it for future zsh sessions (skip if already present):
if ! grep -qF '/opt/ros/lyrical/setup.zsh' ~/.zshrc; then
echo '' >> ~/.zshrc
echo '# ROS 2 Lyrical' >> ~/.zshrc
echo 'source /opt/ros/lyrical/setup.zsh' >> ~/.zshrc
fi
source /opt/ros/lyrical/setup.zsh # verify the installation is complete:

安装 Ubuntu 24.04 的 ROS2 Kilted​

将下面的脚本内容保存为一个 install_ros2_kilted.sh, 然后在 Terminal 中运行该脚本文件。

提示:可以使用系统自带的 gnome-text-editor 文本编辑器: 在终端中输入 gnome-text-editor install_ros2_kilted.sh 即可打开该文件进行编辑. 该脚本适用于 ubuntu 24.04 中安装 ROS2 的 Kilted 发行版

chmod +x install_ros2_kilted.sh
./install_ros2_kilted.sh
#!/usr/bin/zsh

## First ensure that the Ubuntu Universe repository is enabled.
sudo apt install software-properties-common
sudo add-apt-repository universe

## "Installing the ros2-apt-source package will configure ROS 2 repositories for your system"
sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb

## Or else
# cd ~/1KeyLinux/03_install_ROS2/
# sudo dpkg -i ./ros2-apt-source_1.1.0.noble_all.deb
# cd -

## Install development tools (optional)
sudo apt update && sudo apt install ros-dev-tools

## Install ROS2
sudo apt install ros-kilted-desktop


## Bellow! Pay attention!
## Bellow! Pay attention!

## Set up your environment by sourcing the following file.
### also add the following line in `.zshrc`
# source /opt/ros/kilted/setup.bash # only for bash
# source /opt/ros/kilted/setup.zsh # only for zsh. We use zsh all through our course

## Above! Pay attention!
## Above! Pay attention!

ROS2 测试用例​

如果已经安装了 ros-kilted-desktop ,我们可以尝试一些示例。

在一个终端中,先引入(source)设置文件,然后运行一个C++的发布者节点(talker):

source /opt/ros/kilted/setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端中,源设置文件,然后运行一个 Python listener :

source /opt/ros/kilted/setup.bash
ros2 run demo_nodes_py listener

你应该看到 talker 显示它有 Publishing 条消息,以及 listener 显示 I heard 这些消息。这验证了 C++ 和 Python API 都正常工作。

课后作业:

  1. 高二学生:自行调研什么是 Linux 脚本,并介绍上述 ROS2 一键安装脚本 中的至少 5 行代码的作用。

  2. 高一学生:

  • 跟着学长学会按照 实验室环境 6S 现场管理规范
  • 在家中的电脑尝试从 U 盘启动 Ubuntu 系统,(如果没有条件或实在不会,可暂时跳过此步骤. 来学校请教学长)
  • 并用本节的 ROS2 一键安装脚本 安装 ROS2 软件包。