软件管理

软件管理

  • rpm安装
  • yum安装
  • 源码编译安装

rpm安装

  • rpm包介绍
  • rpm管理软件包

认识rpm软件包

rpm软件包的文件名组成:

image-20220417160546030

  • 软件包的报名
  • 软件包版本
  • 修订次数,编译平台
  • 处理器架构

rpm管理软件包

rpm命令

常用参数组合:

安装软件:
-ivh	安装软件显示详细信息和进度
-Uvh	更新或安装软件,软件可以没有安装过
-Fvh	更新安装软件,软件需要安装过旧版本
-qa		列出安装的软件名
-qi		列出软件的详细信息
-ql		列出软件相关的文件与目录位置
-qc		列出软件的所有配置文件
-qd		列出软件的说明文件,与man相关的文件
-qR		列出与该软件相关的依赖软件所含的文件
-qf		后面接文件名,找出该文件属于哪一个软件
-qp		查找软件包文件的相关信息
--nodeps  			忽略依赖关系进行安装
--force  			相当于--replacefiles与--replacepkgs的结合体
--replacefiles		覆盖文件,忽略冲突使用场景:安装过程出现某个文件已					 经安装,或者出现版本不合的信息
--replacepkgs    	重新安装已经安装过的软件,使用场景:提出某软件已安					 装
--oldpackage    	安装旧版的软件包
--test				测试是否可以安装
--justdb			更新软件在数据库内的信息,当RPM数据库损坏或错误时
--nosignature		跳过数字签名的检查
--prefix			指定安装路径
--noscripts			使用场景:不想在安装过程中自动自行某些命令
-a  查询、列出所有已经安装的套件。
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+  设置包装套件的完成阶段,并指定套件档的文件名称。
-c  只列出组态配置文件,本参数需配合"-l"参数使用。
-d  只列出文本文件,本参数需配合"-l"参数使用。
-e<套件档>或--erase<套件档>  删除指定的套件。
-f<文件>+  查询拥有指定文件的套件。
-h或--hash  套件安装时列出标记。
-i  显示套件的相关信息。
-i<套件档>或--install<套件档>  安装指定的套件档。
-l  显示套件的文件列表。
-p<套件档>+  查询指定的RPM套件档。
-q  查询软件包是否安装。   rpm -q 包名
-R  显示套件的关联性信息。
-s  显示文件状态,本参数需配合"-l"参数使用。
-U<套件档>或--upgrade<套件档> 升级指定的套件档。
-v  显示指令执行过程。
-vv  详细显示指令执行过程,便于排错。
-addsign<套件档>+  在指定的套件里加上新的签名认证。
--allfiles  安装所有文件。
--allmatches  删除符合指定的套件所包含的文件。
--badreloc  发生错误时,重新配置文件。
--buildroot<根目录>  设置产生套件时,欲当作根目录的目录。
--changelog  显示套件的更改记录。
--checksig<套件档>+  检验该套件的签名认证。
--clean  完成套件的包装后,删除包装过程中所建立的目录。
--dbpath<数据库目录>  设置欲存放RPM数据库的目录。
--dump  显示每个文件的验证信息。本参数需配合"-l"参数使用。
--excludedocs  安装套件时,不要安装文件。
--excludepath<排除目录>  忽略在指定目录里的所有文件。
--force  强行置换套件或文件。
--ftpproxy<主机名称或IP地址>  指定FTP代理服务器。
--ftpport<通信端口>  设置FTP服务器或代理服务器使用的通信端口。
--help  在线帮助。
--httpproxy<主机名称或IP地址>  指定HTTP代理服务器。
--httpport<通信端口>  设置HTTP服务器或代理服务器使用的通信端口。
--ignorearch  不验证套件档的结构正确性。
--ignoreos  不验证套件档的结构正确性。
--ignoresize  安装前不检查磁盘空间是否足够。
--includedocs  安装套件时,一并安装文件。
--initdb  确认有正确的数据库可以使用。
--justdb  更新数据库,当不变动任何文件。
--nobulid  不执行任何完成阶段。
--nodeps  不验证套件档的相互关联性。
--nofiles  不验证文件的属性。
--nogpg  略过所有GPG的签名认证。
--nomd5  不使用MD5编码演算确认文件的大小与正确性。
--nopgp  略过所有PGP的签名认证。
--noorder  不重新编排套件的安装顺序,以便满足其彼此间的关联性。
--noscripts  不执行任何安装Script文件。
--notriggers  不执行该套件包装内的任何Script文件。
--oldpackage  升级成旧版本的套件。
--percent  安装套件时显示完成度百分比。
--pipe<执行指令>  建立管道,把输出结果转为该执行指令的输入数据。
--prefix<目的目录>  若重新配置文件,就把文件放到指定的目录下。
--provides  查询该套件所提供的兼容度。
--queryformat<档头格式>  设置档头的表示方式。
--querytags  列出可用于档头格式的标签。
--rcfile<配置文件>  使用指定的配置文件。
--rebulid<套件档>  安装原始代码套件,重新产生二进制文件的套件。
--rebuliddb  以现有的数据库为主,重建一份数据库。
--recompile<套件档>  此参数的效果和指定"--rebulid"参数类似,当不产生套件档。
--relocate<原目录>=<新目录>  把本来会放到原目录下的文件改放到新目录。
--replacefiles  强行置换文件。
--replacepkgs  强行置换套件。
--requires  查询该套件所需要的兼容度。
--resing<套件档>+  删除现有认证,重新产生签名认证。
--rmsource  完成套件的包装后,删除原始代码。
--rmsource<文件>  删除原始代码和指定的文件。
--root<根目录>  设置欲当作根目录的目录。
--scripts  列出安装套件的Script的变量。  安装软件时执行的脚本
--setperms  设置文件的权限。
--setugids  设置文件的拥有者和所属群组。
--short-circuit  直接略过指定完成阶段的步骤。
--sign  产生PGP或GPG的签名认证。
--target=<安装平台>+  设置产生的套件的安装平台。
--test  仅作测试,并不真的安装套件。
--timecheck<检查秒数>  设置检查时间的计时秒数。
--triggeredby<套件档>  查询该套件的包装者。
--triggers  展示套件档内的包装Script。
--verify  此参数的效果和指定"-q"参数相同。
--version  显示版本信息。
--whatprovides<功能特性>  查询该套件对指定的功能特性所提供的兼容度。
--whatrequires<功能特性>  查询该套件对指定的功能特性所需要的兼容度。

RPM软件包的安全机制——数字签名

数字签名:非对称加密技术

RPM包坐着生成一对公私钥,使用私钥加密---签名,公钥、rpm包会给用户下载。

生产环境需要校验软件包的安全性

  • 导入 GPG秘钥 rpm --import pubkey

  • 检验已经安装的软件包

    • rpm -V 包名
    • rpm -Vp RPM包
    • rpm -K RPM包
  • 安装之前检验

    • rpm -qa |grep pubkey 查看秘钥
    • rpm -e pubkey 卸载秘钥
    • rpm -K RPM包 检验可靠性

rpm拆包,提取文件

rpm2cpio RPM包 |cpio -id

yum安装

yum 能够解决软件的依赖关系

将软件包放在目录下,生成软件包的索引——repodata,来解决依赖关系

yum仓库命名 *.repo

[仓库名]
name=描述
baseurl=仓库的路径repodata所在的目录路径,支持file,http,ftp等
gpgcheck=是否验证秘钥  1启用校验,  0 不校验
enabled=是否启用仓库  1启用  0关闭
gpgkey=GPG秘钥位置的路径

yum clean all

yum makecache

yum repolist

yum命令

yum install
yum group install  "包组名"  安装包组
yum reinstall
yum remove
yum group remove
yum update 

#查询
yum repolist all 列出所有仓库的信息
yum list [all...] 列出仓库里面所有的软件包
yum list available|updates|installed  列出可用的|可更新|已安装的软件包
yum info package 查看软件包的信息
yum group info packagegroup 查看包组信息
yum group list [hidden] 列出所有的包组
#搜索文件和软件包
yum provides filename 查找文件来自哪个包
yum search keyword 查找与keyword相关的软件包

#查询软件包的历史记录
yum history 

yum的日志:/var/log/dnf.rpm.log

yum与dnf

RHEL7之前 yum yum只能同时有一个yum进程

RHEL8开始使用 dnf

创建私有yum源

  • 将rpm包放在一个目录下面
  • 将该目录通过http或者ftp共享出去
  • 安装creatrepo_c软件包,并执行creatrepo -v /packagedir
    • 会生成一个repodata的子目录
    • 软件包的所有元数据信息都放在repodata目录下
yum install -y createrepo_c
yum install -y --downloadonly --downloaddir=/tmp/myrepo  httpd -y
createrepo /tmp/myrepo

下载rpm包:

yum install --downloadonly --destdir=路径 包名

管理软件包的模块流

模块流:一组独立的rpm包

image-20220418173720196

yum module list [模块]
yum module info  模块名[:模块版本]
								--profile 查看所安装的软件包信息
								
#安装和移除模块流
yum module install name[:版本] 
yum module remove name
#安装模块流会自动启用模块流,移除模块流,模块流依然处于启用状态,需要禁用模块流才能安装其他版本的模块流

#开启和禁用模块流
yum module enable name 
yum module disable name

切换模块流

1.删除模块流
yum module remove 
2.重置模块流,会删除模块配置文件
yum module reset 
3.安装启用其他模块流
yum module install 

源码编译安装

编译安装需要编译环境:gcc make 等

  1. 下载源码包
  2. 解压源码包
  3. 配置源码配置文件./configure
  4. 预编译make
  5. 编译安装make install
posted @ 2023-05-09 16:36  loser_xu  阅读(19)  评论(0编辑  收藏  举报