1、rpm命令格式
RPM软件可以实现几乎所有的功能,新增,删除,更新等
2、查询
查询已安装的软件包
选项 | 功能效果 |
---|---|
rpm -qa | 显示当前系统中以RPM方式安装的所有软件列表 |
rpm -q 软件名 | 查询指定软件是否安装 |
rpm -qi 软件名 | 查询指定软件包的名称、版本、许可协议、用途描述等详细信息 |
rpm -ql 软件名 | 显示指定的软件包在系统中安装的所有目录、文件列表 |
rpm -qc 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR 软件名 | 列出已安装的指定软件的的依赖的软件包及文件 |
rpm -qf 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
rpm -qpd | 查询未安装指定软件包的位置 |
rpm -qpi | 查询未安装指定软件包的完整详细信息 |
rpm -qpl | 查询未安装指定软件包的文件列表 |
rpm -qpc | 查询未安装指定软件包的配置文件位置 |
例子
[root@localhost system]# rpm -qa
#查询所有的已rpm方式安装的软件列表
[root@localhost data]# rpm -q httpd
#查看httpd有没有安装
httpd-2.4.6-67.el7.centos.x86_64
[root@localhost data]# rpm -qi httpd
[root@localhost data]# rpm -qi tree
#查看httpd的详细信息
[root@localhost data]# rpm -ql httpd
[root@localhost data]# rpm -ql tree
#目录或文件列表
[root@localhost data]# rpm -qc httpd
#配置文件位置
[root@localhost data]# rpm -qd tree
#软件包文档所在位置
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@localhost data]# rpm -qR tree
#查看依赖包
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
[root@localhost Packages]# rpm -qf /usr/bin/ls
#查看命令程序由那个包安装的
coreutils-8.22-18.el7.x86_64
[root@localhost Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm
#查看未安装软件的
[root@localhost Packages]# rpm -qpc httpd-2.4.6-67.el7.centos.x86_64.rpm
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf6
/etc/httpd/conf.modules.d/00-dav.conf
3、挂载
mount 设备 加文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)
挂载规则
1.一个挂载点同一时间只能挂载一个设备
2.一个挂载点同一时间挂载了多个设备,只能看到最后一个挂载设备的数据,其他设备将被隐藏
3.一个设备可以同时挂载到多个挂载点
4.通常挂载点一般是已存在的空的目录
选项
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
[root@localhost mnt]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost mnt]# cd /mnt/
##重新进入下有时不显示
[root@localhost mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost mnt]# cd /opt/
[root@localhost opt]# umount /mnt
[root@localhost opt]# ls /mnt/
/dev/sr0 /mnt iso9660 defaults 0 0
设备文件 挂载点 文件类型 默认挂载方式(读写)备份
4、安装、卸载、升级
rpm [选项] rpm软件包
选项 | 效果 |
---|---|
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装则进行安装 |
-F | 升级某个软件包,若未安装过则直接结束 |
-h | 在安装过程中显示以#号显示读条 |
-v | 显示安装过程的详细信息 |
–force | 强制安装某个软件包 |
-e | 卸载指定的软件 |
–nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
[root@localhost Packages]#rpm -e tree
[root@localhost Packages]#rpm -ive tree
[root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm
#进入
错误:依赖检测失败:
httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
5、yum仓库
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装
yum需要依赖于环境,依赖于服务端和客户端,允许跨网络
服务器:
1.RPM包(Packages文件夹中)
2.元数据(repodata文件夹:目录 (软件的目录),1.软件的依赖关系,2.软件的位置)
最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
客户端
1.编写客户端配置文件
仓库类型
1.光盘的基本仓库
2.epel扩展仓库
5.1 yum仓库实现过程
5.2 yum的基础命令
命令总结
命令 | 不加关键字 | 加入关键字、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用的包 | 单个可安装的包 |
yum info | 显示所有可用包的信息 | 单个具体信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum install | \ | 安装具体软件包 |
yum update | 所有软件升级需要的更新源 | 具体软件升级 |
yum remove | \ | 卸载具体软件 |
yum history | 产看当前yum操作历史 | |
yum history undo | 加入序号卸载序号里安装的软件 | |
yum history redo | 加入序号重新执行序号里的操作 |
6、dpkg包管理系统
6.2 简要介绍DPKG
dpkg(Debian Package)是 Debian 和 Ubuntu 系统的基础包管理工具,用于安装、卸载、查询 .deb
软件包。它是 apt(高级包管理工具)的底层工具,但不会自动处理依赖关系。
相当于时Ubuntu的“rpm”
- dpkg是 Debian 及其衍生发行版(如 Ubuntu)默认的低层包管理工具
- 用于安装、构建、删除、查询 .deb 格式的包
- 它不解决依赖关系
特点:
- 仅管理 本地 deb 安装包,不负责自动下载依赖;
- 执行速度快,适合脚本和自定义包管理任务;
- 与 APT 协同工作:APT 用于处理依赖并自动下载包,最终还是调用
dpkg
完成安装。
语法:
dpkg [选项] <软件包>
常见选项
选项 | 作用 |
---|---|
-i | 安装.deb 软件包 |
-r | 卸载软件包(保留配置文件) |
-p | 完全卸载软件包(删除配置文件) |
-l | 列出已安装的软件包 |
-s | 查看指定的软件包的状态 |
-L | 列出软件包安装文件路径 |
-S | 查找某个文件属于哪个软件包 |
7、 APT包管理系统
APT(Advanced Package Tool)是 Debian 系和 Ubuntu 系 Linux 发行版中的一个包管理工具,用于简化软件包的安装、更新和卸载过程。了解 APT 仓库的工作原理有助于更好地理解如何管理和维护系统中的软件包。以下是 APT 仓库的基本原理。
7.1 APT仓库的概述
7.1.1 APT仓库的优势
- 自动化依赖处理:APT 自动处理复杂的依赖关系,避免用户手动解决依赖问题。
- 集中管理:APT 通过集中仓库管理系统的软件包,简化了软件的安装和维护工作。
- 一致性和安全性:APT 使用签名和认证机制确保从仓库下载的软件包是可信的,并且来自官方或可靠的来源。
7.1.2 APT仓库的组成部分
- 二进制包(deb):这是可以直接安装的软件包,已经经过编译和打包,可以直接在系统中使用。
- 源代码包(deb-src):包含源代码,可以用于编译和定制软件包。通常开发者或需要特定版本的用户使用。
- 包清单(Package List):包含仓库中所有软件包的列表,描述了软件包的名称、版本、依赖关系、安装大小等。
- 索引文件(Index Files):用于加速软件包查找和依赖关系解析,APT 会先下载这些索引文件到本地。
7.1.3 APT仓库的原理
在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的
7.2 APT仓库文件解析
APT 仓库源配置文件决定了 Ubuntu 系统从哪些服务器下载和更新软件包。主要的配置文件包括
/etc/apt/sources.list
/etc/apt/sources.list.d/
目录下的文件
APT 会读取 /etc/apt/sources.list文件和 /etc/apt/sources.list.d/目录下的所有文件。只要文件中的格式正确,APT 都会将其内容作为仓库源配置来处理。也就是说,即使文件不以 .list结尾,APT命令仍然会读取和处理这些文件
7.2.1 配置文件
APT 的主配置文件/etc/apt/sources.list,用于定义系统的主要软件源。每一行定义一个仓库源,格式如下:
deb [选项] http://服务器地址/ubuntu 发行版名称 分支名称
deb-src [选项] http://服务器地址/ubuntu 发行版名称 分支名称
- deb:表示二进制软件包(已编译好,可以直接安装)。
- deb-src:表示源代码包(需要编译)。
- [选项]:可选,指定仓库源的附加选项,如认证密钥。[trusted=yes]
- http://服务器地址/ubuntu:软件仓库服务器的URL。
- 发行版名称:系统版本代号,如 noble(Ubuntu 24.04) 、focal(Ubuntu 20.04)、bionic(Ubuntu 18.04)
分支名称:软件包的分支,如 main、universe、restricted、multiverse
- main:Canonical 官方支持的自由开源软件。
- universe:社区维护的自由开源软件
- restricted:Canonical 支持但非自由开源的软件,如某些硬件驱动
- multiverse:非自由软件,可能因版权或法律问题无法在所有国家使用
7.3 基础命令
选项 | 作用 |
---|---|
apt list | 列出所有的安装包 |
apt search 软件包 | 搜索软件包 |
apt show 软件包 | 查看软件包的详细信息 |
apt-cache madison 软件名 | 查看仓库中指定软件的所有版本 |
apt depends 软件名 | 查看软件的依赖 |
apt install 软件名 | 安装软件 |
apt remove 软件包 | 卸载软件 |
apt autoremove 软件包 | 解决依赖关系 |
apt remove --purge 软件包 | 删除配置文件 |
apt purge 软件包 | 卸载并删除配置文件 |
apt update | 更新曾仓库 |
apt download 软件 | 只下载软件 |
7.3.1 apt 与apt -get
Debian 使用apt 工具集来管理包系统,apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUl兼顾的工具是 aptitude ,之前最常用的 Linux包管理命令都被分散在了 apt-get、apt-cache和 apt-config 这三条命令中
在 2014年apt命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和aptconfig 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get转到 apt-cache 或 apt-config,提供管理软件包所需的必要选项
apt相当于 apt-get、apt-cache和 apt-config 中最常用命令选项的集合apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常有帮助。例如:可以在使用 apt 命令安装或删除程序时看到进度条,apt 还会在更新存储库数据库时提示用户可升级的软件包个数
apt与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分apt-get 系列命令,但不是全部
apt 命令 | 被取代的命令 | 命令的功能 |
---|---|---|
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 移除软件包 |
apt purge | apt-get purge | 移除软件包及配置文件 |
apt update | apt-get update | 刷新存储库索引 |
apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
apt autoremove | apt-get autoremove | 自动删除不需要的包 |
apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
apt search | apt-cache search | 搜索应用程序 |
apt show | apt-cache show | 显示安装细节 |
apt list | 列出包含条件的包(已安装,可升级等) | |
apt edit-sources | 编辑源列表 | |
apt-cache madison docker-ce | 查看仓库中的指定软件的所有版本 | |
apt depends | apt-cache depends | 查看文件的依赖 |
ubuntu与centos建立本地yum仓库均在yum仓库的搭建中体现,在此就不再过多赘述。
linux是需要不断练习的,韶华易逝,劝君惜取少年时,大家共勉