包(package)
通常是指应用程序,但也可以是 GUI 应用程序、命令行工具或软件库(其他软件程序需要)。包本质上是一个存档文件,其中包含二进制可执行文件、配置文件,有时还包含有关依赖项的信息。
包管理器package management
Linux 发行版之间的主要区别之一是包管理系统(the package management)。
简单来说,包管理器是一种工具,允许用户在操作系统上安装、删除、升级、配置和管理软件包。
包管理器可以是一个图形应用程序,如软件中心,也可以是命令行工具,如apt-get或pacman。
大约在 90 年代中期,Debian 创建了 .deb 或 DEB 打包格式,而 Red Hat Linux 创建了 .rpm 或 RPM(Red Hat Package Manager 的缩写)打包系统。编译源代码仍然存在,但现在只是安装软件的一个可选方式。
包管理器如何工作?

几乎所有的 Linux 发行版都有软件存储库,它基本上是软件包的集合。是的,可能有多个存储库。存储库包含不同类型的软件包。
存储库还有元数据文件,其中包含有关软件包的信息,例如软件包名称、版本号、软件包描述和存储库名称等。当你在 Ubuntu/Debian 中使用apt show 命令时,就会看到这些信息。
系统的包管理器首先与元数据交互。包管理器在系统上创建元数据的本地缓存。当你运行包管理器的更新选项(例如 apt update)时,它会通过引用存储库中的元数据来更新此元数据的本地缓存。
当你运行包管理器的安装命令(例如 apt install package_name)时,包管理器会引用此缓存。如果它在缓存中找到包信息,它会使用 Internet 连接连接到适当的存储库,并在安装到系统之前首先下载包。
包管理系统的基本原理
- 软件包格式: 每个包管理系统都有其特定的软件包格式,如APT使用.deb,YUM和DNF使用.rpm,Pacman使用.pkg.tar.xz。
- 仓库: 软件包存储在远程服务器上的仓库中。包管理系统通过配置文件知道去哪个仓库获取软件包。
- 依赖关系管理: 包管理系统会处理软件包之间的依赖关系,确保安装软件包时所有必要的依赖包也被安装。
- 元数据: 包管理系统使用元数据文件(如包清单、依赖关系等)来跟踪和管理已安装的软件包。
- 自动化工具: 包管理系统提供一系列命令行工具或图形界面,简化软件包的查找、安装、升级和删除操作
Linux系统的包管理系统有哪些
Debian系(如Debian、Ubuntu)
dpkg
o 用法: dpkg -i package.deb 安装包, dpkg -r package 删除包。
o 特点: 低级工具,直接处理Debian包文件。
APT (Advanced Package Tool)
o 用法: sudo apt-get update 更新包列表, sudo apt-get install package 安装包, sudo apt-get remove package 删除包。
o 特点: 高级工具,处理依赖关系,下载和安装包。
Red Hat系(如RHEL、CentOS、Fedora)
RPM (Red Hat Package Manager)
o 用法: rpm -i package.rpm 安装包, rpm -e package 删除包。
o 特点: 低级工具,直接处理RPM包文件。
YUM (Yellowdog Updater, Modified)
o 用法: sudo yum update 更新包列表, sudo yum install package 安装包, sudo yum remove package 删除包。
o 特点: 处理依赖关系和包仓库管理。
DNF (Dandified YUM)
o 用法: sudo dnf update 更新包列表, sudo dnf install package 安装包, sudo dnf remove package 删除包。
o 特点: YUM的替代品,改进的依赖解决和性能。
嵌入式Linux系统的包管理系统
嵌入式Linux系统常用的包管理系统主要包括以下几种:
opkg (Open Package Management)
o 应用于OpenWrt、Ångström等嵌入式Linux发行版。
o 类似Debian的dpkg,为资源受限设备设计,轻量级。
o 基本命令:opkg update 用于更新包列表,opkg install 用于安装包,opkg remove 用于删除包。
ipkg (Itsy Package Management System)
o 早期在嵌入式系统中广泛使用,与opkg相似,曾是OpenWrt等系统的主要包管理工具。
o 使用方法与opkg相近,但随着时间推移,逐渐被opkg取代。
dpkg
o 虽是Debian系列系统的标准,但也可在部分嵌入式系统中见到。
rpm (Red Hat Package Manager)
o 适用于基于Red Hat的嵌入式系统,例如Yocto项目中的Poky。
Smart Package Manager
o 是一个多功能的包管理系统,可跨多种嵌入式Linux平台使用。
o 基本用法包括:smart update 更新包列表,smart install 安装软件包,smart remove 删除软件包。
Yocto项目包管理
在Yocto项目中,并不强制使用特定的包管理系统,通常情况下,opkg和rpm是较为常用的选择。Yocto能够根据项目配置生成多种包格式(如.ipk、.rpm、.deb),以适应不同系统和应用场景的需求。
包管理系统工作原理
包管理系统通过维护软件包的数据库以及它们之间的依赖关系,简化了软件的安装、升级和卸载流程。通过网络连接到中央仓库,它们能够高效地下载、安装和管理软件包,从而提升系统的管理效率。
opkg 使用示例
opkg是轻量级的包管理工具,适用于资源受限的嵌入式Linux系统。以下是常见的opkg命令使用示例:
# 更新软件包列表
opkg update
# 安装特定软件包
opkg install <package-name>
# 卸载特定软件包
opkg remove <package-name>
在Yocto项目中如何为目标系统安装包管理系统
在Yocto项目中,可以通过在构建配置文件中指定包管理系统来为目标系统安装所需的包管理工具。通常通过EXTRA_IMAGE_FEATURES或IMAGE_INSTALL等变量来配置。例如,在local.conf中启用包管理功能,可以确保目标系统能够使用包管理工具进行后续的软件安装和管理:
EXTRA_IMAGE_FEATURES += "package-management"
这段配置将确保构建的镜像包含包管理工具,并支持后续的软件包管理。
Linux系统包管理系统全解析

362

被折叠的 条评论
为什么被折叠?



