RPM是(Redhat Package Manager) 的缩写,由Red Hat公司提出的一种软件包管理标准
例:zsh-5.0.2-14.el8.x86_64.rpm
zsh | -5 | 0 | 2 | 14 | el8 | x86 | 64 |
软件名 | 主版本号 | 次版本号 | 修订号 | 软件发布次数 | 发行商RHEL8 | CPU架构商 | 支持系统位数 |
参数 | 说明 |
-i,--install | 安装软件包 |
-v,--verbose | 显示安装过程 |
-h,--hash | 软件包安装显示#标记 |
在rpm相关网站下载软件包:
Rpmfind mirror http://rpm.phone.net/RPM Search (pbone.net)http://rpm.phone.net/
<1> 安装软件:rpm -ivh [软件包链接]
例:安装软件sl
[root@tianqinwei ~]# rpm -ivh http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-1.el8.x86_64.rpm
<2> 升级软件:
例:升级wget
下载wget:
[root@tianqinwei ~]# wget -c http://rpmfind.net/linux/centos/8-stream/AppStream/x86_64/os/Packages/wget-1.19.5-11.el8.x86_64.rpm检查wget版本:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-7.el8.x86_64升级wget版本:
[root@tianqinwei ~]# rpm -Uvh wget-1.19.5-11.el8.x86_64.rpm
Uvh和Fvh的区别:
1> 如果系统存在旧版本,则两者作用相同,都是升级软件
2> 如果系统内不存在旧版本,Uvh是直接安装新版本,Fvh放弃操作
<3> 卸载软件:rpm -e 包名 ---(-e:erase,卸载)
例:卸载wget
[root@tianqinwei ~]# rpm -e wget
<4> 查询软件:rpm -q 包名
例:检查wget是否安装
法一:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-11.el8.x86_64
法二:
[root@tianqinwei ~]# rpm -qa | grep wget
wget-1.19.5-11.el8.x86_64
-q 查询还存在许多子命令:
- # rpm -qi 包名 查询已安装的包的信息
- # rpm -qc 包名 查询已安装包的配置信息
- # rpm -qd 包名 查询已安装包的文档信息
- # rpm -ql 包名 列出软件包的文件
- # rpm -qa 查询所有软件包
- # rpm -qf 文件路径(查询文件是哪个包安装的)
[root@tianqinwei ~]# rpm -qf /etc/ssh
openssh-7.8p1-4.el8.x86_64
例:删除vim软件包,并且重新安装
[root@tianqinwei ~]# rpm -qa | grep ^vim --- 查找以vim开头的软件包
vim-enhanced-8.0.1763-10.el8.x86_64
vim-common-8.0.1763-10.el8.x86_64
vim-minimal-8.0.1763-10.el8.x86_64
vim-filesystem-8.0.1763-10.el8.noarch
[root@tianqinwei ~]# rpm -e vim-enhanced --- 删除vim-enhanced软件包
[root@tianqinwei ~]# rpm -e vim-common
[root@tianqinwei ~]# mount /dev/cdrom /mnt/ --- 挂载安装光盘
[root@tianqinwei ~]# cd /mnt/AppStream/Packages --- 进入挂载目录
安装软件:
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm
warning: vim-enhanced-8.0.1763-10.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:vim-common = 2:8.0.1763-10.el8 is needed by vim-enhanced-2:8.0.1763-10.el8.x86_64
报错:错误的依赖关系
rpm最大的缺陷,无法解决软件包之间的依赖关系
解决方法:
<1> 先安装vim-common,再安装vim-enhanced
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm
<2> 将依赖和被依赖的软件包一起安装,中间空格隔开
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm vim-enhanced-8.0.1763-10.el8.x86_64.rpm
YUM = YellowDog Update Modifier DNF = Dandified YUM
为了有效的解决软件安装的依赖关系,我们可以使用yum进行rpm软件包管理
[root@tianqinwei ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 Feb 14 2019 /usr/bin/yum -> dnf-3
dnf源文件所在目录依旧为/etc/yum.repos.d下。
[root@tianqinwei ~]# ls /etc/yum.repos.d --- 仓库文件依旧存放在原yum的目录下面
redhat.repo
rhel8在升级的基础上增加了两个仓库:
- BaseOS:提供一套核心的底层操作系统功能,为基础软件安装库
- AppStream:包括额外的用户空间应用程序、运行时语言和数据库,以支持不同的工作负载和用力。AppStream中的内容有两种格式 --- RPM格式的和称为模块的RPM格式扩展
例1:以本地安装光盘来构建安装仓库 yum源
1>挂载光盘:
[root@tianqinwei ~]# mount /dev/cdrom /mnt/2>配置yum源:
仓库目录:/etc/yum.repos.d/
文件:要求以.repo为后缀
[root@tianqinwei yum.repos.d]# vim rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS/
gpgcheck=0[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
gpgcheck=03>检查
[root@tianqinwei yum.repos.d]# yum repolist
卸载:yum remove packagename
安装:yum install packagename
例2:配置互联网源
使用阿里云镜像:https://mirrors.aliyun.com/
1>修改名字,让其失效
[root@tianqinwei yum.repos.d]# mv rhel8.repo rhel8.repo.bak2>复制为centos8.repo
[root@tianqinwei yum.repos.d]# cp rhel8.repo.bak centos8.repo3>进入vim编辑
[root@tianqinwei yum.repos.d]# vim centos8.repo
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
gpgcheck=0[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
gpgcheck=04>检查
[root@tianqinwei yum.repos.d]# yum repolist
<1> list
<2> yum info [包名] --- 查看指定软件包的详细信息
<3> yum search 模糊包名 --- 查看模糊包名的软件包
<4> yum install [-y] 包名 --- 安装指定软件包,-y指在工作过程中需要使用者响应,此参数可直接回复yes
例:安装httpd
[root@tianqinwei ~]# yum install -y httpd
<5> yum update [-y] 包名 --- 升级指定软件包或主机中所有已安装的软件包(如果不指定包名, 则更新所有有新版本的软件)
<6> yum remove [-y] 包名 --- 卸载已安装在系统中的指定软件包
例:删除httpd
[root@tianqinwei ~]# yum remove httpd --- 一般不加-y,万一卸载的软件包中有某个工具想使用,以备不时之需
<7> yum provides 文件名 --- 查找指定文件属于哪个包
例1:查找/etc/ssh文件属于哪个包
[root@tianqinwei ~]# yum provides /etc/ssh
[root@tianqinwei ~]# yum whatprovides /etc/ssh
例2:查看ifconfig命令由哪个软件提供?
[root@tianqinwei ~]# yum provides ifconfig --- 查看ifconfig命令由那个软件提供
[root@tianqinwei ~]# rpm -e net-tools --- 卸载后也依旧能查看ifconfig命令由net-tools提供
[root@tianqinwei ~]# yum install -y net-tools --- 下载net-tools
RHEL8相应地在yum命令下,增加了一个module子命令。多了个模块(module)、模块下多了个序列 (Stream)、序列下多了个组合(profile)
<1> yum module list --- 列出所有模块
<2> yum module list [具体模块名] --- 列出具体模块
[d] default(默认的);[e] enable(启用的)
[x] disabled(禁用的);[i] installed(已安装的)
<3> 安装指定版本的模块:
例:安装nginx模块的1.14版本
法一:[root@tianqinwei ~]# yum install @nginx:1.14
法二:[root@tianqinwei ~]# yum module install nginx:1.14
<4> yum remove [模块名]
安装:
[root@tianqinwei ~]# yum provides yum-config-manager --- 查找yum-config-manageer由什么提供
[root@tianqinwei ~]# yum install dnf-utils --- 安装该dnf-utils
[root@tianqinwei yum.repos.d]# ls --- 查看是否成功生成
centos8.repo.bak redhat.repo
mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo rhel8.repo
[root@tianqinwei yum.repos.d]# cat mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo --- 查看仓库信息
若想使用时,需将gpgcheck改为0
安装较新版本的应用程序时,自由软件的最新版本大都以源码的形式最先发布。当前安装的程序无法满足需要时,编译安装可由用户自行修改、定制功能。需要为应用程序添加新的功能时,用户可以重新配置、自由修改源代码,加入新的功能。
[root@tianqinwei ~]# rpm -q wget --- 查看当前wget版本
wget-1.19.5-11.el8.x86_64
[root@tianqinwei ~]# wget -c http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz --- 下载源码<1> 删除老版的wget
[root@tianqinwei ~]# rpm -e wget<2> 安装c,c++编译环境,make
[root@tianqinwei ~]# yum install -y gcc gcc-c++ make<3> 解压(一般情况下解压到/usr/local/src目录下)
[root@tianqinwei ~]# tar xf wget2-2.0.0.tar.gz -C /usr/local/src/<4> 配置 --- ./configure(针对当前系统的软硬件环境,配置好安装参数)
(一些新软件使用的是cmake方式。)
[root@tianqinwei ~]# cd /usr/local/src/wget2-2.0.0/ --- 进入到当前解压路径
[root@tianqinwei wget2-2.0.0]# ./configure --help --- 查看帮助
--prefix=PREFIX --- 安装路径,默认安装在[/usr/local]
--bindir=DIR --- 指定用户可执行的命令放置位置,默认放在[/usr/local/bin]
--sysconfdir=DIR --- 指定配置文件,默认放在[/usr/local/etc]
[root@tianqinwei wget2-2.0.0]# ./configure --- 直接全部用默认值,按回车
报错:configure: WARNING: *** GNUTLS was not found. Fallback to libnettle for hashing and checksumming.
错误处理:安装gnutls-devel.i686(缺少gnutls-devel.i686开发包)
[root@tianqinwei wget2-2.0.0]# yum list | grep gnutls --- 查找gnults-devel.i686
[root@tianqinwei wget2-2.0.0]# yum install gnutls-devel -y --- 安装
[root@tianqinwei wget2-2.0.0]# ./configure --- 再次执行无报错,进行下一步<5> 编译make(一般如果make报错,需从./configure开始执行。只要解决报错,都得返回从./configure开始执行)
[root@tianqinwei wget2-2.0.0]# make<6> 安装make install
[root@tianqinwei wget2-2.0.0]# make install<7> 查看
[root@tianqinwei ~]# whereis wget2 --- 查看路径
wget2: /usr/local/bin/wget2
[root@tianqinwei ~]# wget2 -V --- 查看版本
GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader
<8> 检查是否可用
上一篇:工业企业用电损耗和降损措施研究
下一篇:Redis技术详解