GPU技术支持-基础篇-包管理工具
目录
前言
转载请附上原文出处链接
稀土掘金本文链接:https://juejin.cn/post/7160210027779719182
CSDN本文链接:https://blog.csdn.net/qq_43252610/article/details/127600253
概述
包管理工具「package manager」是软件工具的集合,他们能自动的执行安装、更新、配置、卸载软件(或者说包「package」)的操作。
那么包具体是个啥呢?
包是包含了软件、共享库、文档、软件名称、用途描述、版本号、供应厂商、校验和、所需依赖等等信息的归档文件「archive files」。
一般包管理工具存在以下典型功能特性:
- 能够提取包的归档文件
- 能够通过校验和或者数字证书来确保包的完整性和真实性
- 能够从软件存储库或者应用程序商店查找、下载、安装、更新现有包
- 按功能对包进行分组,避免用户混淆
- 管理依赖关系以确保一个包安装了它所依赖的所有包,从而避免“依赖地狱「dependency hell」”
备注:依赖地狱后面再进行说明
一般软件开发商先在固定的硬件和操作系统平台上将软件进行编译,同时将相关的归档文件和信息按照指定格式(例如deb、rpm)进行打包,然后得到的包就可以给到用户使用。
用户用对应的包管理工具对软件开发商发布的包进行安装、卸载等操作。安装时包管理工具会读取包中记录的所需依赖,自动检测当前系统环境是否满足要求,如果满足要求就会开始安装。安装之后还会将包的信息存储在包管理工具的管理机制中,方便未来对包进行升级、卸载等操作。
目前在 Linux 中常用的包管理工具有两种,分別是:
-
dpkg「Debian Package」:
dpkg是Linux操作系统Debian及其众多派生系统中的基础包管理工具。B2D、Ubuntu、银河麒麟(desktop)、UOS(desktop)等系统都是使用dpkg。
-
rpm「RPM Package Manager」:
rpm是由Red Hat公司开发的,PCLinuxOS、Fedora、 AlmaLinux、CentOS、openSUSE、OpenMandriva、银河麒麟(Server)、中标麒麟等系统都是使用rpm。
包管理工具简介
dpkg「Debian Package」
常用功能 | 命令 |
---|---|
查询已安装的软件包 | dpkg -l | grep packagename |
安装软件包(需要root权限) | dpkg -i filename.deb |
卸载软件包(需要root权限) | dpkg -r packagename |
更新软件包 | |
卸载软件包及配置(需要root权限) | dpkg -P packagename |
进阶阅读:GPU技术支持-进阶篇-dpkg命令解析及使用
rpm「RPM Package Manager」
常用功能 | 命令 |
---|---|
查询已安装的软件包 | rpm -qa | grep packagename |
安装软件包(需要root权限) | rpm -i filename.rpm 或 rpm –ivh filename.rpm |
卸载软件包(需要root权限) | rpm -e packagename |
更新软件包(需要root权限) | rpm –U filename.rpm |
进阶阅读:GPU技术支持-进阶篇-rpm命令解析及使用
依赖地狱「dependency hell」
dpkg/rpm的包管理工具虽然在一定程度上方便了用户使用,也能解决一些基础的依赖问题,但是在一些依赖问题上仍然无法较好解决。
例如安装包A时,却检测到系统中未安装包B,包A的依赖项中存在包B,导致包A无法安装成功,好不容易下载到了包B,却检测到系统中未安装包C,包B的依赖项中存在包C,导致包B无法安装成功…
又例如包A依赖于libfoo.1.3.so,系统当前使用的是libfoo.1.1.so,libfoo.1.1.so由包B提供,需要自己去寻找更高版本的包B,升级包B。如果现有的包C、包D依赖于libfoo.1.1.so,那么升级包B时可能还会引入需要额外升级包C、包D的情况…
这些各种依赖问题又被称为依赖地狱「dependency hell」!
为了更好的解决依赖的问题,也为了简化各种包的获取安装过程,基于dpkg/rpm的包管理工具的各种**前端「Front ends」**工具也诞生了。
这些前端工具一般都存在一个由系统进行维护的存储库(软件源),里面包含了各种软件包,方便通过网络下载安装相关的包。用户可以使用部分关键词搜索存储库(软件源)的包进行安装,存在依赖问题时,也会智能解决或者提供给用户解决方案。
dpkg
- APT,Advanced package tool
rpm
- yum,Yellow dog Updater, Modified
- DNF,Dandified YUM
- Zypper
- urpmi
下面介绍两个最常用的前端工具:apt、yum。
apt「Advanced package tool」
**apt「Advanced package tool」**是一个在Debian和基于Debian的Linux 发行版上的的Shell前端软件包管理工具。apt 通过从预编译文件或编译源代码自动检索、配置和安装软件包,简化了在类 Unix 计算机系统上管理软件的过程。
常用功能 | 命令 |
---|---|
搜索软件源中的软件包 | apt-cache search packagename |
安装软件包(需要root权限) | apt-get install packagename |
卸载软件包(需要root权限) | apt-get remove packagename |
更新软件包(需要root权限) | apt-get install --only-upgrade packagename |
进阶阅读:GPU技术支持-进阶篇-apt命令解析及使用
yum「Yellow dog Updater, Modified」
**yum「Yellow dog Updater, Modified」**是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理工具。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
常用功能 | 命令 |
---|---|
搜索软件源中的软件包 | yum search packagename |
安装软件包(需要root权限) | yum install packagename |
卸载软件包(需要root权限) | yum remove packagename |
更新软件包(需要root权限) | yum update packagename |
进阶阅读:GPU技术支持-进阶篇-yum命令解析及使用
更好的用户体验
上面说的包管理工具都是基于命令行进行操作的,那有没有像Windows中的应用管理或者应用商店这些图形化界面操作的工具呢?
有,当然有!
这些工具相当于基于apt/yum这些包管理工具开发的**前端「Front ends」**工具,提供更友好的图形界面,对于应用的分类、预览都更加智能,应用安装、卸载、升级等操作也对普通用户更友好。
Ubuntu的软件商店
Kylin的软件商店
UOS的软件商店
参考资料
- wikipedia-Package manager:https://en.wikipedia.org/wiki/Package_manager
- wikipedia-dpkg:https://en.wikipedia.org/wiki/Dpkg
- wikipedia-APT(software):https://en.wikipedia.org/wiki/APT_(software)
- wikipedia-RPM Package Manager:https://en.wikipedia.org/wiki/RPM_Package_Manager
- wikipedia-Yum(software):https://en.wikipedia.org/wiki/Yum_(software)
- wikipedia-Dependency hell:https://en.wikipedia.org/wiki/Dependency_hell
- 鳥哥私房菜-第二十二章、軟體安裝 RPM, SRPM 與 YUM:https://linux.vbird.org/linux_basic/centos7/0520rpm_and_srpm.php