linux系统安装rpm命令(Linux软件管理一)(1)

Linux软件安装包

简介

Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。 GPL,全称 General Public License,中文名称“通用性公开许可证”,简单理解 GPL 就是一个保护软件自由的一个协议,经 GPL 协议授权的软件必须开源

Linux软件包类型

#源码包 一大堆源代码程序。源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。为解决此问题出现了二进制包 # 二进制包 源码包经过成功编译之后的包。安装速度快 安装过程报错几率小 二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。 # 目前主要有以下两大主流的二进制包管理系统: 1、RPM 包管理系统 rpm全称RPM Package Manager缩写,红帽开发,功能强大,安装、升级、査询和卸载非常简单方便。很多 Linux 发行版都默认使用此机制作为软件安装的管理方式。 2、DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。(.deb结尾) # 怎么选? 前者相当于自己动手做家具,板材、油漆、颜色和样式都由自己决定。后者相当于去商场买家具 # 注意:1、不管是源码包,还是二进制包,安装时都可能会有依赖关系!2、rpm对应自动解决依赖是用yum安装,rpm命令安装不解决依赖。 3、yum与rpm的区别总结:yum适用于所有环境,而rpm要搭建本地yum源才可以使用!yum是上层管理工具,自动解决依赖性,而rpm是底层管理工具。rpm只能安装已经下载到本地机器上的rpm包,yum可以在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这是rpm所不具备的

RPM包命名规则

#RPM 二进制包命名的一般格式如下: 包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名 # 以tree命令为例 我卸载下,重新安装时便显示包名 tree-1.6.0-10.el7.x86_64.rpm tree 软件名 1.6.0 版本号 -10 发行次数 el7 el是软件发行商。7:适用于系统的版本 Cent7 RedHat7 x86_64 适合的硬件平台 系统平台 rpm 包扩展名 给人看的

RPM软件包的获取途径

1.光盘(通过挂载的方式访问) 2.网络下载,比如 RedHat或官方网站 ftp://ftp.redhat.com/ RPM查询官网网站 http://rpmfind.net/ Nginx软件官方网站 https://nginx.org/ MySQL软件官方网站 https://www.mysql.com/ # PS:挂载相关命令: mount 挂载对象 挂载到哪里(一般是创建个空目录) mount可将指定设备中指定的文件系统加载到Linux目录下(也就是装载点) 卸载 umount

RPM包的安装(rpm命令)

# 安装 RPM 的命令格式一般为: [root@localhost ~]# rpm -ivh 包全名 # 注意一定是包全名。如果软件包在光盘中,需提前做好设备的挂载工作。 # 选项 -i 安装(install) -v 显示安装过程(verbose) -h 显示安装进度条(hash) --test: #仅测试,不安装 --force: #强制安装 --nodeps: #忽略依赖关系直接安装

实操举例

## 例如: [root@localhost /]# mkdir xxx 创建xxx目录 [root@localhost /]# mount /dev/cdrom xxx 挂载 [root@localhost /]# df -h 看一眼: Filesystem Size Used Avail Use% Mounted on(挂载点) /dev/sda3 19G 1.3G 18G 7% / devtmpfs 476M 0 476M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/sda1 497M 120M 378M 25% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /xxx [root@localhost /]# ll /xxx/Packages 这时可以看到/xxx/Packages下面好多rmp包文婧 ....... -rw-rw-r--. 1 root root 61792 Nov 12 2018 python2-blockdev-2.18-3.el7.x86_64.rpm -rw-rw-r--. 1 root root 514504 Apr 25 2018 python2-cryptography-1.7.2-2.el7.x86_64.rpm -rw-rw-r--. 1 root root 30040 Nov 12 2018 python2-futures-3.1.1-5.el7.noarch.rpm -rw-rw-r--. 1 root root 696780 Nov 12 2018 python2-ipaclient-4.6.4-10.el7.centos.noarch.rpm -rw-rw-r--. 1 root root 676840 Nov 12 2018 python2-ipalib-4.6.4-10.el7.centos.noarch.rpm -rw-rw-r--. 1 root root 1535668 Nov 12 2018 python2-ipaserver-4.6.4-10.el7.centos.noarch.rpm (省略) # 然后安装samba-4.8.3-4.el7.x86_64.rpm,显示需要依赖 [root@localhost /]# rpm -ivh /xxx/Packages/samba-4.8.3-4.el7.x86_64.rpm ## 再如:先删除tree,再安装(已挂载在mnt下) [root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm 需要指定软件包绝对路径 Preparing... ################################# [100%] Updating / installing... 1:tree-1.6.0-10.el7 ################################# [100%] 注意,直到出现两个 100% 才是真正的安装成功,第一个 100% 仅表示完成了安装准备工作。 #在软件包所在目录下可以不指定绝对路径 [root@zls ~]# cd /mnt/Packages/ [root@zls Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

--test: #测试安装。不会实际安装,只是检测一下依赖性。 --force: #强制安装 --nodeps: #忽略依赖关系 软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。 例: #测试一个软件包是否能在该系统上安装 [root@zls ~]# rpm -ivh --test /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm #如果软件包存在, 强制再次安装 [root@zls ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm #安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装 [root@zls ~]# rpm -ivh --nodeps /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

RPM包查询

使用 rpm 做查询命令的格式如下: [root@localhost ~]# rpm 选项 已安装包名 (包名即可识别,不需全名) # 选项 rpm -q # 查看指定的rpm包是否安装 rpm -qa # 查看系统中已安装的所有RPM软件包列表 rpm -qi 查看指定软件的详细信息 rpm -ql 列出rpm包相关的配置文件和目录 rpm -qc # 只查询指定软件包的配置文件 rpm -qd 查询指定软件包的帮助文档 rpm -qf 反向查,查询文件或目录属于哪个RPM软件 rpm -qp 查询未安装的包相关信息 rpm -q --scripts 查询rpm包安装前和安装后执行的脚本 #查询包是否安装 [root@localhost ~]# rpm -q httpd package httpd is not installed #查询系统是否已安装tree、vim、lrzsz(安装过会显示出来,没有则不显示) [root@sky /]# rpm -qa |grep -E 'tree|vim|lrzsz' lrzsz-0.12.20-36.el7.x86_64 vim-common-7.4.629-8.el7_9.x86_64 vim-minimal-7.4.160-5.el7.x86_64 vim-filesystem-7.4.629-8.el7_9.x86_64 vim-enhanced-7.4.629-8.el7_9.x86_64 [root@sky /]# tree -bash: tree: command not found 查询vsftpd软件包的相关信息 [root@zls ~]# rpm -qi vsftpd 查询rpm包所安装的文件 [root@zls ~]# rpm -ql vsftpd 查询rpm包相关的配置文件 [root@zls ~]# rpm -qc vsftpd 查询配置文件或命令来自于哪个rpm包 [root@zls ~]# rpm -qf /etc/vsftpd/vsftpd.conf [root@zls ~]# rpm -qf /usr/sbin/vsftpd //查询未安装的软件包会产生哪些文件 [root@zls ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm //查询未安装的软件包会产生哪些文件 [root@zls ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm #以上查询只能查询已存在 已安装的包,如果没有安装,需要联网查询

RPM包升级

U:如果老版本存在就升级,老版本不存在就安装 例子 -ivh 安装时提示已经有了旧版本 无法安装 这时就-Uvh wget 两个包 [root@localhost ~]# wget https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.12.0-1.el7.ngx.x86_64.rpm -rw-r--r--. 1 root root 655648 Apr 26 2016 nginx-1.10.0-1.el7.ngx.x86_64.rpm -rw-r--r--. 1 root root 732968 Apr 13 2017 nginx-1.12.0-1.el7.ngx.x86_64.rpm # 先把10装上 [root@localhost ~]# rpm -ivh nginx-1.10.0-1.el7.ngx.x86_64.rpm nginx-1.12.0-1.el7.ngx.x86_64.rpm 查看下 [root@localhost ~]# rpm -qa | grep nginx nginx-1.10.0-1.el7.ngx.x86_64 10已经安上了 # 如果用-ivh再装12 就会报错 安装不上 再看还是10 [root@localhost ~]# rpm -ivh nginx-1.12.0-1.el7.ngx.x86_64.rpm ...... [root@localhost ~]# rpm -qa | grep nginx nginx-1.10.0-1.el7.ngx.x86_64 # 用rpm -Uvh即可更新安装 [root@localhost ~]# rpm -Uvh nginx-1.12.0-1.el7.ngx.x86_64.rpm warning: nginx-1.12.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY Preparing... ################################# [100%] Updating / installing... 1:nginx-1:1.12.0-1.el7.ngx ################################# [ 50%] Cleaning up / removing... 2:nginx-1:1.10.0-1.el7.ngx ################################# [100%] [root@localhost ~]# rpm -qa | grep nginx nginx-1.12.0-1.el7.ngx.x86_64

RPM包卸载

卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。 rpm -e 要卸载的包名 [root@localhost ~]# rpm -qa | grep nginx nginx-1.12.0-1.el7.ngx.x86_64 [root@localhost ~]# rpm -e $(rpm -qa | grep nginx) $调用 [root@localhost ~]# rpm -qa | grep nginx 没了 [root@localhost ~]# rpm -qa | grep nginx nginx-1.12.0-1.el7.ngx.x86_64 [root@localhost ~]# rpm -e nginx-1.12.0-1.el7.ngx.x86_64 [root@localhost ~]# rpm -q nginx-1.12.0-1.el7.ngx.x86_64 package nginx-1.12.0-1.el7.ngx.x86_64 is not installed 没了

,