linux软件安装:rpm安装-yum安装-编译安装-二进制安装

发布时间 2023-06-01 17:12:48作者: 金天黑日

转:https://blog.csdn.net/weixin_43880061/article/details/125354573

1 简介

  在CentOS系统中,软件管理方式通常有这几种方式: rpm安装 、yum安装、编译安装、二进制安装 。

  编译安装,从过程上来讲比较麻烦,包需要用户自行下载,下载的是源码包,需要进行编译操作,编译好了才 能进行安装,这个过程对于刚接触Linux的人来说比较麻烦,而且还容易出错。好处在于是源码包,对于有需 要自定义模块的用户来说非常方便

2 rpm安装

2.1 rpm介绍

  rpm也就是red hat package manager,是红帽公司出品的软件包管理工具,能进行软件包的安装,卸载,升级,查询

  rpm 是centos/redhat系统里软件安装管理的命令,比yum要底层,yum底层就是调用rpm去安装软件的。

 

2.2 rpm包管理机制的系统

centos

redhat

opensuse

oracle linux

fedora

 

2.3 deb包管理机制的系统

debian

Ubuntu
zfsutils
-linux_0.8.3-1ubuntu12_amd64.deb

 

2.4 rpm包

  rpm包其实就是redhat系列的Linux系统里的软件包,是别人制作好的可以直接安装使用的软件包,类似于windows里的.exe。rpm包的来源是自己或者公司

 

2.5 src.rpm

  如:openssh-8.0p1-5.el8.src.rpm

  源码的rpm包,不能直接安装使用,安装的过程其实是解压src.rpm包得到软件的源代码

 

2.6 哪里可以下载rpm包

1)镜像文件,centos或者redhat公司制作,使用方法如下

  挂载镜像
    (1)请将镜像文件放入光驱
    (2)使用mount命令挂载
      mount /dev/cdrom /mnt
    (3)使用

 

2)官方网站

 

3)第三方平台

  Rpmfind mirror

 

4)自己制作

 

2.7 使用rpm的缺点

  不能自动解决软件包之间的依赖关系,缺乏自动化以及智能化

2.8 rpm命令详解

2.8.1 查询类选项

-q --query 查询

-qa 查询系统里已经安装了的所有的软件

-qi 查询命令的详细信息

-ql 查询已经安装的软件的路径,也就是安装到了哪里

-qc 查询配置文件的路径

-qf 查询已经安装的命令或者是文件是通过哪个软件包安装过来的

-qd 显示文档文件列表

-qpl 查询没有安装的一个软件包,它会安装到哪里

-qpi 查询没有安装的一个软件包,它的信息

 

2.8.2 安装类选项

-i -- install 安装

-ivh 可以查看到安装的进度
[root@sc-lvm Packages]# rpm -ivh tree-1.7.0-15.el8.x86_64.rpm 
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:tree-1.7.0-15.el8                ################################# [100%]
[root@sc-lvm Packages]# 

--reinstall        重新安装

[root@huoyrz Packages]# rpm --reinstall tree-1.6.0-10.el7.x86_64.rpm

 

2.8.3 卸载类选项

-e        erase        卸载
[root@sc-lvm Packages]# rpm -e tree

 

2.8.4 升级类选项

-U        如果软件没有安装,升级操作会自动帮助安装,需要你提供高版本的软件包,不会自动去帮助到哪里下载
[root@sc-lvm Packages]# rpm -U tree-1.7.0-15.el8.x86_64.rpm 

 

3 yum安装

 

3.1 简介

  yum是基于rpm但更胜于rpm的软件管理工具

  yum的优点:
    更方便的管理rpm软件包
    自动解决rpm包的依赖关系,可以配置多个资源仓库

  yum是python编写的一个软件管理的工具

  rpm/yum 软件安装的过程,本质上就是解压文件,然后拷贝文件到某些目录下的过程

 

3.2 yum是如何解决依赖关系

 

3.3 仓库文件目录

1)仓库配置文件目录

  /etc/yum.repos.d/

  Yum Repository yum仓库

 

2)仓库文件

  都是以.repo结尾的,前面叫什么名字不重要,只是识别

  repo文件详解

[root@sc-lvm /]# cd /etc/yum.repos.d/   是yum会到这个目录下查找repo结尾的文件
[root@sc-lvm yum.repos.d]# ls
CentOS-Linux-AppStream.repo          CentOS-Linux-Debuginfo.repo  CentOS-Linux-FastTrack.repo         CentOS-Linux-Plus.repo
CentOS-Linux-BaseOS.repo             CentOS-Linux-Devel.repo      CentOS-Linux-HighAvailability.repo  CentOS-Linux-PowerTools.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Extras.repo     CentOS-Linux-Media.repo             CentOS-Linux-Sources.repo
[root@sc-lvm yum.repos.d]# vim grafana.repo
[grafana]   --》yum源的名字,仓库的名字
name=grafana  sanchaung  --》对这个源的描述
baseurl=https://packages.grafana.com/enterprise/rpm   --》仓库的具体位置  源的位置
repo_gpgcheck=1    --》gpg 是一种加密技术 repo_gpgcheck 对源进行检查,是否是真正的grafana的仓库
enabled=1    表示这个源可以使用   1 启用  0 禁用
gpgcheck=1  对这个源里的下载的所有的软件进行gpg校验--》检验所有从这个源下载的软件,防止是假的 --》防伪
gpgkey=https://packages.grafana.com/gpg.key  --》具体的加密和解密使用的key的位置
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
 
#yum源: 软件的仓库
 
#问渠那得清如许,为有源头活水来
 
[root@sc-lvm yum.repos.d]# vim CentOS-Linux-BaseOS.repo 
 
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra  --》查询获取离你的机器最近的镜像的位置
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial   --》gppkey的位置
===

 

3)如何获得仓库文件

1 自己vim一个 grafana

2 下载rpm包安装

3 下载repo文件 docker

 

4)阿里云的仓库文件

  centos-7.9.2009-os-x86_64-Packages安装包下载_开源镜像站-阿里云

3.4 缓存目录

  /var/cache/yum/x86_64/7

 

3.5元数据

  元数据就是解决依赖关系的数据:安装一条命令有哪些软件,每个软件依赖哪些软件等

  /var/cache/dnf  --》存放的是各个源解决依赖关系和软件信息的元数据

[root@sc-lvm dnf]# yum clean all  -->清除缓存的元数据

 

3.6 源

1)官方源

  包括centos的官方,或者是某个软件的官方(例如nginx)

 

2)第三方

  epel-release

yum install epel-release

  安装好后会存放在 /etc/yum.repos.d/epel.repo

 

3)可以自己制作源

 

3.7 如何禁用某个源

1 enableed=0

2 删除repo文件

3 修改repo文件的后缀名

4 yum-config-manager --enable docker-ce-nightly
  yum-config-manager --disable docker-ce-nightly

 

 

3.8 命令详解

3.8.1 查询类

yum search
yum list 查看哪些软件安装了,哪些软件没安装,相当于prm -qa
[root@localhost base]# yum list|more
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
已安装的软件包
NetworkManager.x86_64                     1:1.18.8-1.el7               @anaconda
NetworkManager-libnm.x86_64               1:1.18.8-1.el7               @anaconda
NetworkManager-team.x86_64                1:1.18.8-1.el7               @anaconda
NetworkManager-tui.x86_64                 1:1.18.8-1.el7               @anaconda
acl.x86_64                                2.2.51-15.el7                @anaconda
aic94xx-firmware.noarch                   30-6.el7                     @anaconda
[root@localhost base]# yum list|grep tree
tree.x86_64                               1.6.0-10.el7                 @base
gomtree.x86_64                            0.5.0-0.2.git16da0f8.el7     extras
maven-dependency-tree.noarch              2.0-7.el7                    base
maven-dependency-tree-javadoc.noarch      2.0-7.el7                    base
ostree.x86_64                             2019.1-2.el7                 extras
ostree-devel.x86_64                       2019.1-2.el7                 extras
ostree-fuse.x86_64                        2019.1-2.el7                 extras
ostree-grub2.x86_64                       2019.1-2.el7                 extras
subscription-manager-plugin-ostree.x86_64 1.24.51-1.el7.centos         updates
texlive-pst-tree.noarch                   2:svn24142.1.12-45.el7       base
texlive-pst-tree-doc.noarch               2:svn24142.1.12-45.el7       base
[root@localhost base]#
 
有@符号的,表示是已经安装,并且@符号后面接的字符串,表示使用那个源安装的
没有@符号,表示软件没有安装,可以通过那个源安装

 

yum repolist        查看哪些源可以使用
yum provides         查看某个命令是通过哪个软件包安装过来的(本机没有安装的命令也可以查询得到)
[root@sc-lvm mnt]# yum provides iostat
上次元数据过期检查:0:37:14 前,执行于 2021年09月04日 星期六 11时14分13秒。
sysstat-11.7.3-5.el8.x86_64 : Collection of performance monitoring tools for Linux
仓库        :@System
匹配来源:
文件名    :/usr/bin/iostat
 
sysstat-11.7.3-5.el8.x86_64 : Collection of performance monitoring tools for Linux
仓库        :appstream
匹配来源:
文件名    :/usr/bin/iostat
 
[root@sc-lvm mnt]# which iostat
/usr/bin/iostat
[root@sc-lvm mnt]# rpm -qf /usr/bin/iostat 
sysstat-11.7.3-5.el8.x86_64
[root@sc-lvm mnt]# 

 

3.8.2 安装类

yum install

yum reinstall

 

3.8.3 卸载类

yum remove

 

3.8.4 升级类

yum update 默认会升级所有的软件,安装好系统后马上升级所有的软件

 

3.8.5 清除缓存类

yum clean all 只要我们安装软件,就会自动下载相应源的元数据

 

3.8.6 其他

yum repolist 查看所有的仓库
[root@sc-lvm yum.repos.d]# yum repolist
仓库 id                                                 仓库名称
appstream                                               CentOS Linux 8 - AppStream
baseos                                                  CentOS Linux 8 - BaseOS
docker-ce-stable                                        Docker CE Stable - x86_64
epel                                                    Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                            Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                  CentOS Linux 8 - Extras
mysql-connectors-community                              MySQL Connectors Community
mysql-tools-community                                   MySQL Tools Community
mysql80-community                                       MySQL 8.0 Community Server
[root@sc-lvm yum.repos.d]# 

 

4 编译安装

4.1 简介

  编译安装可以根据需求来定制软件

  可以指定安装路径

  可以指定某些模块的功能开启或者禁用

 

4.2 编译安装的优缺点

4.2.1 优点

  可以自定义,非常的安全,一般安装的都是最新版本的软件

 

4.2.2 缺点

  速度稍微慢点,步骤多

 

4.3 举例说明----编译安装nginx

  转到

 

1)下载,然后解压

 

2)编译前的配置

./configure --prefix=/usr/local/nginx

  收集安装的参数:

--with-http_ssl_module 启用

--without-pcre2 禁用

  编译前的配置,生成Makefile的文件,指导make工作的配置文件

 

3)make

  将c语言编写的代码文件编译成二进制文件

 

4)make install

   将编译好的二进制文件拷贝指定的安装目录下

 

 

5 进制安装

  到官方网站下载源码包解压后,直接使用

  里面的程序都是一件编译好的可执行的二进制文件

  非常的快捷方便

  例如安装prometheus和MySQL

 

6 比喻说明

1)rpm和yum

  相当于到专卖店买衣服,款式,颜色,面料等都不可以修改了,喜欢,直接带走。速度快,安装路径都是固定了的,不能修改,部分功能也许没有开启

 

2)源码编译安装

  到裁缝店去定制衣服,颜色,面料,款式都可以自己决定,可以选择定制。时间长,好处功能完全可以自己定制

 

3)二进制安装

  解压后就可以使用,速度快