Linux软件管理

1、软件管理简介

Redhat和Centos中软件管理是依靠软件包管理器(RPM)来实现的

RPM(Redhat Package Manager)软件包管理器提供了在Linux操作系统中安装、升级、卸载的方法,并提供对系统中的软件状态信息的查询;除了这些功能外,RPM软件包管理器还提供了制作软件包的功能

2、软件包管理器简介

2.1 软件包管理器的职责

  • 将二进制文件、库文件、配置文件、帮助文件打包成一个文件
  • 安装软件时按需将二进制、库文件、配置文件、帮助文件放到相应的位置
  • 生成数据库,追踪所安装的每一个文件
  • 软件卸载时根据安装时生成的数据库将相应的文件删除

2.2 软件包管理器的核心功能

  • 制作软件包
  • 安装软件
  • 卸载软件
  • 升级软件
  • 查询软件
  • 校验软件

3、软件包简介

3.1 软件包组成

  • 软件包的组成清单
    • 文件清单
    • 安装或卸载的运行脚本
  • 数据库
    • 程序包名称及版本
    • 依赖关系
    • 功能说明
    • 安装生成的各个文件的路径及校验码信息

3.2 软件包分类

源码格式
特点:需要编译成二进制格式才能进行

  • 命名方式:name-VERSION.tar.gz
    • VERSION:主版本号.次版本号.系统发行版本

二进制格式
特点:编译好的,安装之后可以直接运行

  • 软件的作者下载软件的源码,编译配置为二进制软件包
  • Redhat和Centos中使用的二进制包为rpm包

源码格式和二进制格式的区别

  • 源码格式的包编译为二进制包时可以选择需要的特性,如果未选择,则编译后安装后的软件就不会有相应的功能
  • 源码包在编译成为二进制包时可以实现软件功能的定制
  • 二进制包的本版落后于源码包。

4、rpm简介

Redhat和Centos中二进制包的扩展包为.rpm,这是由红帽公司最先发布的一种用来打包软件的文件格式,我们叫做rpm包;RPM软件包管理器就是管理rpm包

4.1 rpm包命名规范

5、软件包的获取途径

5.1 系统发行的光盘

Linux的IOS镜像文件自带了非常多的系统扩展RPM安装包,且这些软件版本最适合当前Linux系统
IOS镜像文件自带的扩展RPM安装包的存放目录为:Packages
使用IOS镜像文件自带的扩展RPM安装包前必须先挂载ISO镜像,挂在方法如下:

# 创建挂载点,挂载光盘镜像到挂载点
[root@jlin ~]# mkdir /mnt/cdrom
[root@jlin ~]# mount /dev/sr0 /mnt/cdrom/

# 复制挂载点里面所有的文件到/media/目录,避免光盘断开连接就读取不到扩展RPM安装包
[root@jlin ~]# cp -r /mnt/cdrom/ /media/
[root@jlin ~]# cd /media/cdrom/
[root@jlin cdrom]# ll
总用量 320
-rw-r--r-- 1 root root     14 7月  10 08:27 CentOS_BuildTag
drwxr-xr-x 3 root root     35 7月  10 08:27 EFI
-rw-r--r-- 1 root root    227 7月  10 08:27 EULA
-rw-r--r-- 1 root root  18009 7月  10 08:27 GPL
drwxr-xr-x 3 root root     57 7月  10 08:27 images
drwxr-xr-x 2 root root    198 7月  10 08:27 isolinux
drwxr-xr-x 2 root root     43 7月  10 08:27 LiveOS
drwxr-xr-x 2 root root 221184 7月  10 08:29 Packages
drwxr-xr-x 2 root root   4096 7月  10 08:29 repodata
-rw-r--r-- 1 root root   1690 7月  10 08:29 RPM-GPG-KEY-CentOS-7
-rw-r--r-- 1 root root   1690 7月  10 08:29 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root   2883 7月  10 08:29 TRANS.TBL

5.2 开源镜像站

开源镜像站上会存放RPM安装包

  • 阿里巴巴开源镜像站

http://mirrors.aliyun.com

  • 网易开源镜像站

http://mirrors.163.com

  • 清华大学开源镜像站

https://mirrors.tuna.tsinghua.edu.cn

5.3 搜索引擎

有一些搜索引擎直接提供rpm包搜索功能

  • rpmfind

http://rpmfind.net

  • rpm pbone

http://rpm.pbone.net

  • pkgs

http://pkgs.org/

6、rpm包管理

6.1 RPM包安装

// 语法:rpm -ivh /PATH/TO/PACKAGE_FILE ...
// 选项:
-i:安装
-v:显示详细信息
-h:显示安装进度条
--test:测试安装,但不真正执行安装过程
--nodeps:忽略依赖关系
--force:强行安装,可以实现重装或降级
--replacepkgs:重新安装,替换原有安装
--oldpackage:降级
--nodigest:不检查包的完整性
--nosignature:不检查报的来源合法性
--noscripts:不执行rpm包自带的四类脚本:
	--nopre:不执行rpm包自带的preinstall脚本
	--nopost:不执行rpm包自带的postinstall脚本
	--nopreun:不执行rpm包自带的preuninstall脚本
	--nopostun:不执行rpm包自带的postuninstall脚本
	preinstall:安装过程开始之前运行的脚本,标记为%pre:--nopre
	postinstall:安装过程完成之后运行的脚本,标记为%post:--nopost
	preuninstall:卸载过程开始执行之前运行的脚本,标记为%preun:--nopreun
	postunistall:写在过程完成之后运行的脚本,标记为%postrun:--nopostun

// 安装软件包,需要指定软件包绝对路径
[root@jlin ~]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

// 在软件包所在目录下可以不指定绝对路径
[root@jlin ~]# cd /mnt/cdrom/Packages/
[root@jlin Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm

// 测试一个软件包是否能在该系统上安装
[root@jlin ~]# rpm -ivh --test /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

// 如果软件包已经安装,强制再次安装
[root@jlin ~]# rpm -ivh --force /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

// 安装httpd服务需要依赖其他组件,使用--nodeps可忽略以来强制安装
[root@jlin ~]# rpm -ivh --nodeps /mnt/cdrom/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm

6.2 RPM包查询

// 查询httpd的rpm包是否安装
[root@jlin ~]# rpm -q httpd

// 模糊查找系统已安装的rpm包
[root@jlin ~]# rpm -qa | grep ftp

// 查询已安装的httpd软件包相关信息
[root@jlin ~]# rpm -qi httpd

// 查询已安装的rpm包生成的文件
[root@jlin ~]# rpm -ql httpd

// 查询已安装的rpm包生成的配置文件
所有
[root@jlin ~]# rpm -qc httpd

// 查询配置文件或命令来自于哪个rpm包
[root@jlin ~]# rpm -qf /etc/httpd/httpd.conf
[root@jlin ~]# rpm -qf /usr/sbin/httpd

// 查询未安装的软件包会产生哪些文件
[root@jlin ~]# rpm -qpl / mnt/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm

// 查询未安装的软件包的说明信息
[root@jlin ~]# rpm -qpi /mnt/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm

6.4 RPM包升级

// 升级tree软件包
[root@jlin ~]# rpm -Uvh /mnt/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm

6.5 RPM包卸载

// 先查询,然后卸载
[root@jlin ~]# rpm -qa lgrep httpd
[root@jlin ~]# rpm -e httpd

6.6 RPM包校验

// 校验已经安装的软件包的文件是否被修改;如果执行以下命令无内容输出说明安装的软件
[root@jlin ~]# rpm -v vsftpd

S #文件的容量大小是否被改变
M #文件的类型或者文件的属性是否被修改
5 #MD5加密的内容已经不同
D #装置的主/次代码已经改变
L #路径已经被改变
U #文件的所属主已被修改
G #文件的所属组已被修改
T #文件的创建时间已被改变

6.7 RPM重建数据库

// 数据库信息在/var/lib/rpm目录

// 重建数据库,重建Packages数据库,一定会重建
rpm --rebuilddb

// 初始化数据库,重建所有数据库,没有才建立,有就不建立
rpm --initdb

6.8 检查软件包来源合法性

加密类型:
	对称加密 #加密解密使用同一个密钥
	公钥加密 #一对密钥,公钥和私钥。公钥隐含于私钥中,可以提取出来并公布出去
	单向加密 #只能加密不能解密

// 红帽官方公钥存放位置
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

// 检查指定rpm包合法性,出现oK字样表示包没问题
rpm -K PACKAGE_FILE

// 导入密钥文件
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release1

Centos 7发行版光盘提供的密钥文件名为:RPM-GPG-KEY-Centos-7
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Linux 软件管理的重点可以归纳为以下几个方面: 1. 包管理器:Linux 发行版通常都提供了包管理器来管理软件安装和升级。常见的包管理器有 apt (Debian/Ubuntu),yum/dnf (Red Hat/CentOS/Fedora),zypper (openSUSE),pacman (Arch Linux) 等。通过包管理器,你可以方便地搜索、安装、升级和卸载软件包。 2. 依赖管理Linux 软件通常有依赖关系,依赖管理是确保软件能够正确运行的关键。包管理器可以自动解决软件包依赖关系,并自动安装所需的依赖项。如果你手动下载软件包,可能需要手动解决依赖关系。 3. 软件管理:包管理器从软件源中获取软件包。软件源是存储软件包的服务器或镜像站点。你可以配置包管理器使用特定的软件源。合理选择软件源可以提高下载速度和软件包的更新频率。 4. 软件仓库:除了官方软件源外,许多 Linux 发行版还提供了额外的软件仓库,如 Ubuntu 的 Universe、Multiverse,Fedora 的 RPM Fusion 等。这些仓库提供了更多的软件选择,但需要手动添加并更新。 5. 编译和源码管理:有些软件可能没有预编译的软件包可用,你需要手动编译源代码。在这种情况下,你需要了解如何使用编译器、解决编译依赖关系,并配置编译选项。 6. 软件更新与安全性:及时更新软件是保持系统安全和稳定的重要措施。包管理器可以轻松地进行系统和软件包的更新。确保及时启用自动更新功能,并定期检查和安装可用的安全更新。 以上是 Linux 软件管理的一些重点。不同的发行版可能有细微的差异,但核心原则是相似的。熟悉你所使用的发行版的软件管理工具和流程,可以更好地管理和维护你的 Linux 系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汉只只

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值