LV02-01-Linux-01-软件包管理
本文主要是Linux——软件包管理相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
SecureCRT | Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 |
开发板 | 正点原子 i.MX6ULL Linux阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
STM32开发板 | 正点原子战舰V3(STM32F103ZET6) |
点击查看本文参考资料
参考方向 | 参考原文 |
--- | --- |
1.流行的两种软件包管理机制
Debian Linux 首先提出“软件包”的管理机制—— Deb 软件包 。就是将应用程序的二进制文件、配置文档、 man/info 帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
Redhat Linux 基于这个理念推出了自己的软件包管理机制—— Rpm 软件包 。
随着 Linux 操作系统规模的不断扩大,系统中软件包间复杂的依赖关系,导致 Linux 用户麻烦不断。所以 Debian Linux 开发出了 APT软件包管理器 。它可以检查和修复软件包依赖关系,利用 Internet 网络帮助用户主动获取软件包。 APT 工具再次促进了 Deb 软件包更为广泛地使用,成为 Debian Linux 的一个无法替代的亮点。
2.软件包的类型
大概有两种类型,如下表所示:
类型 | 说明 |
---|---|
二进制软件包( Binary Packages ) | 它包含可执行文件、库文件、配置文件、 man/info 页面、版权声明和其它文档。 |
源码包( Source Packages ) | 包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为 .tar.gz 文件,然后再打包成 .dsc 文件。 |
3.软件包的命名
一般命名格式如下:
1 | Filename_Version-Reversion_Architecture.deb |
【参数说明】
Filename | 软件包名称 |
Version | 软件版本 |
Reversion | 修订版本 |
Architecture | 体系架构 |
例如:
4.软件包管理工具分类
常见的软件包管理工具有以下三类:
类别 | 软件包名称 | 描述 |
命令行 | dpkg-deb dpkg apt |
在命令行模式下完成软件包管理任务。为完成软件包的获取、查询、软件包依赖性检查、安装、卸载等任务,需要使用各自不同的命令 |
文本窗口界面 | dselect aptitude tasksel |
在文本窗口模式中,使用窗口和菜单可以完成软件包管理任务 |
图形界面 | synaptic | 在X-Window图形桌面环境中运行,具有更好的交互性、可读性、易用性等特点 |
5. dpkg 相关命令
1 | dpkg -i <.deb file_name> # 安装一个在本地文件系统上存在的Debian软件包 |
6.APT管理工具
6.1 apt是什么?
Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具,是一个客户/服务器系统。常用于在Ubuntu、Debian和相关Linux发行版上安装、更新、删除和管理deb软件包。
6.2 apt 工作原理
在 Ubuntu 系统中,使用软件源配置文件 /etc/apt/sources.list 列出最合适访问的镜像站点地址。软件源配置文件只是告知 Ubuntu 系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。
- 软件源
根据软件包的开发组织对该软件的支持程度,以及遵从的开源程度,划分为四类:
核心(Main) | 官方维护的开源软件,是由Ubuntu官方完全支持的软件,包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包 |
公共(Universe) | 社区维护的开源软件,是由Ubuntu社区的计算机爱好者维护的软件。这些软件包没有安全升级的保障。用户在使用时,需要考虑这些软件包存在的不稳定性 |
受限(Restricted) | 官方维护的非开源软件,是专供特殊用途,而且没有自由软件版权,不能直接修改软件,但依然被Ubuntu团队支持的软件 |
多元化(Multiverse) | 非Ubuntu官方维护的非开源软件,用户使用这些软件包时,需要特别注意版权问题 |
- 软件源配置文件 /etc/apt/sources.list
/etc/apt/sources.list 本质就是一个普通的文本文件,可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,添加的软件源镜像站点称为一个配置项,并遵循以下格式:
1 | DebType AddressType://Hostaddress/Ubuntu Distribution Component1 Component2…… |
- 软件包存储位置 /var/cache/apt/archives
/var/cache/apt/archives 中主要 apt-get 命令下载的 deb 软件包;另有一个文件 lock ,随 apt-get 启动而建立,随 apt-get 退出而删除,用以保证同一时间只有一个 apt-get 进程;还有一个文件夹 partial ,用以存放正在下载的软件包(下载完成后会被移动到上一级文件夹)。
- 刷新软件源
修改了配置文件—— /etc/apt/sources.list ,只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本地主机知晓可以申请哪些资源。此时使用使用 apt-get update 命令扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的 /var/lib/apt/lists/ 目录中。
6.3 apt相关命令
6.3.1命令格式
在 Ubuntu Linux 中,通常使用 apt-get 命令管理软件包,只需告知软件包名字,就可以自动完成软件包的获取、安装、编译和卸载,以及检查软件包依赖关系。 也经常通过 apt-cache 来查询软件包相关信息。要注意的是大多数的情况需要给管理员权限即要加上 sudo 。
- apt-get
1 | sudo apt-get subcommands [option] pkg |
点击查看 参数说明
subcommands | update | 下载更新软件包列表信息 |
upgrade | 将系统中所有软件包升级到最新的版本 | |
install | 下载所需软件包并进行安装配置 | |
remove | 卸载软件包 | |
autoremove | 将不满足依赖关系的软件包自动卸载 | |
source | 下载源码包 | |
build-dep | 为源码包构建所需的编译环境 | |
dist-upgrade | 发布版升级 | |
dselect-upgrade | 根据dselect的选择来进行软件包升级 | |
clean | 删除缓存区中所有已下载的包文件 | |
autoclean | 删除缓存区中老版本的己下载的包文件 | |
check | 检查系统中依赖关系的完整性 | |
option | -d | 仅下载软件包,而不安装或解压 |
-f | 修复系统中存在的软件包依赖性问题 | |
-m | 当发现缺少关联软件包时,仍试图继续执行 | |
-q | 将输出作为日志保留,不获取命令执行进度 | |
--purge | 与remove子命令一起使用,完全卸载软件包 | |
-reinstall | 与install子命令一起使用,重新安装软件包 | |
-b | 在下载完源码包后,编译生成相应的软件包 | |
-s | 不做实际操作,只是模拟命令执行结果 | |
-y | 对所有询问都作肯定的回答,apt-get不再进行任何提示 | |
-u | 获取已升级的软件包列表 | |
-h | 获取帮助信息 | |
-v | 获取apt-get版本号 |
- apt-cache
1 | sudo apt-cache subcommands [option] pkg |
点击查看 参数说明
subcommands | showpkg | 获取二进制软件包的常规描述信息 |
showsrc | 获取源码包的详细描述信息 | |
show | 获取二进制软件包的详细描述信息 | |
stats | 获取软件源的基本统计信息 | |
search | 根据正则表达式检索软件包 | |
depends | 获取该软件包的依赖信息 | |
rdepends | 获取所有依赖于该软件包的软件包 | |
pkgnames | 列出所有已安装软件包的名字 | |
policy | 获取软件包当前的安装状态 | |
option | 有[ -p | -s | - q | - i | - c | -h ]等, 但是不怎么用,详情可查看手册(man apt-cache) |
6.3.2常用命令
在使用以下命令时,若提示没有权限,则可以在前边加上 sudo 。
1 | 1.修复软件包依赖关系 |