万字详解Linux下安装软件的方式(yum配置+rpm+源码安装)

Posted 何翰宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万字详解Linux下安装软件的方式(yum配置+rpm+源码安装)相关的知识,希望对你有一定的参考价值。

文章目录


注意:本文采用CentOS7.6

一、Linux下有哪些软件安装方式

  1. RPM软件包管理(格式一般为软件名.rpm
  2. yum软件管理包(使用yum命令安装软件)
  3. 源码编译安装(手动编译+安装)

1.rpm包(二级制软件包)

  • 二进制包,指的是已经编译后的软件包,直击安装就能使用了
  • 二进制包需要根据自己的CPU以及操作系统去选择合适的包,和Window的.exe软件包类似

2. 源码软件包

  1. 源码包,是程序员写好的源代码,不能在计算机上直击运行
  2. 源码包,需要编译生成二进制软件包后,才能安装使用,源码包一般可以在任何计算机上使用
  3. 源码包的命名方式一般为
    • .tar.gz
    • .tar.bz2
    • tar.xz
    • zip

3. 二进制源码包

  1. 二进制源码包,是一个半成品,安装后不能直接使用
  2. 二进制源码包,需要使用rpmbuild工具重建成真正的rpm包或者重建成源码包才可安装使用
  3. 二进制源码包,命名方式一般为:
    • mysql-community-5.7.25-1.el6.src.rpm
    • mysql-community-5.7.25-1.el7.src.rpm

4. 常见的二进制软件包

系统平台包类型工具在线安装
RedHat/CentOS/Fedora/SUSErpmrpm,rpmbuildyum
Ubuntu/Debiandebdpkgapt

5. 二进制包和源码包区别

软件包类型是否编译安装难易程度可定制性
二进制包直接安装
源码包麻烦(配置+编译+安装)

6. 二进制软件包的安装方式

  1. 基于rpm进行安装(先下载软件到本地再进行安装)
  2. 基于yum进行安装(在线下载然后进行安装)

二、各种软件包安装步骤

1. rpm软件包的安装和卸载

1)rpm安装

命令:rpm -ivh 软件包名
注意:软件包名必须写全

  • -i:install 安装
  • -v:显示进度条
  • -h:表示以 # 形式显示进度条

2)rpm卸载

命令:rpm -e [软件包名]

3) rmp升级包

命令:rpm -Uvh 软件包
或者:rpm -Fvh

常用选项:

  • -v:输出详细信息
  • -h:打印散列标记,一般和-v一起使用
  • -U:升级软件包,如果该软件包没安装,会自动帮你安装
  • -F:升级软件包,如果该软件包没安装,不会自动帮你安装

4)查看rpm包相关信息

  1. 查看已经安装的软件的文件列表
    命令:rpm -ql 软件包名
  2. 查看已经安装的所有rpm包
    命令:rpm -qa 软件包名
  3. 查看未安装的rpm包里的文件列表
    命令:rpm -qlp 软件包(xxx.rpm)
  4. 查看已经安装软件的文档列表
    命令:rpm -qd 软件包名
  5. 查看已经安装软件的配置文件
    命令:rpm -qc 软件包名
  6. 查看已经安装软件的详细信息
    命令:rpm -qi 软件包名
  7. 查看指定文件来自哪个rpm包
    命令:rpm -qf 文件名

4)rmp其它选项

  • --force:表示强制

    强制安装软件包:rpm -ivh [软件包名] --force
    强制卸载软件包:rpm -e [软件包名] --force

  • --nodeps:忽略依赖关系
    忽略依赖关系卸载:rpm -e [软件包名] --nodeps
    忽略依赖关系安装:rpm -ivh [软件包名] --nodeps

其它:

  • rpm --import key_file 导入公钥用于检查rpm文件的签名
  • rpm --checksig package.rpm 检查rpm包的签名

5)如何获取rpm包

Linux只是内核,Linux发行版本:GNU/Linux

  1. 网站
  2. 相应软件的官网
    有些软件只能在官网才能找到rpm包
    比如:mysql
    mysql官网

6)如何选择合适的rpm包

  1. 选择适合当前系统的版本号
    • 找不到适合的,才去尝试别的系统版本号
    • el6兼容el5;el5无法安装 el6
  2. 选择适合当前计算机cpu的架构
    • x86_64包,只能安装在64位的系统上
    • i386,i586,i686的软件包可以安装在32和64位系统上
    • noarch表示这个软件包与硬件构架无关,可以通用
    • 32位系统不能安装64位包

注意:建议不要跨大版本号去安装软件包,尽量使用当前系统版本自带软件包安装

2. yum软件包管理工具

yum就是一个软件包管理器,不同版本的Linux的软件管理器名字可能会有差异,Centos上就是使用的yum

1)yum安装rpm包

命令:yuim -y install [软件包名]
安装包组命令:`yum -y groupinstall [包组名]

注意:包组里面包含很多的软件包

2)yum工具卸载rpm包

命令:yum -y remove [软件包名]
卸载一组包:yum -y groupremove [包组名]

3)yum升级rpm包

命令:yum update [软件包名]

4)yum常用选项

  • 列出仓库里的软件包:yum list
  • 列出可用仓库:yum repolist
  • 清空yum缓存:yum clean all
  • 创建yum缓存:yum makecache

三、源码安装

源码安装一般可以去软件的官网,官网的源码包一般都是xxx.tar.gz格式

1. 源码安装步骤

  1. 配置.configure(配置软件安装路径,也可以不配置,不配置使用默认路径)
  2. 编译make(把软件的源代码编译成类似于rpm可以直接安装的软件)
  3. 安装make install(把编译好的程序安装到Linux系统)

2. 源码安装示例

使用源码安装安装cmarix代码雨

  1. 对软件进行解压缩
    命令:tar -zxf cmatrix-1.2a.tar.gz

  2. 进入到cmatrix-1.2a文件夹,对软件进行配置

    使用命令:./configure执行配置文件,没有指定安装目录,就会安装到默认路径

  3. 编译软件

命令:make

常见错误

cmatrix.c:37:20: fatal error: curses.h: No such file or directory
出现以上问题的主要原因在于系统中没有找到ncurses-devel软件包

因为这个软件是 C/C++写的,需要C/C++的编译器
安装命令:yum install gcc gcc-c++ ncurses-devel -y
如果遇到这种情况,把原来的解压目录删了,重洗解压安装
4. 安装软件
命令:make install

  1. 测试

命令:cmatrix

3. 详解源码安装的配置过程

一条命令解决编译安装:./configure && make && make install

  • cd [软件源码包]
  • ./configure [选项]

查看./configure用法

  • ./configure --help

  • --prefix=... Directories to put files in /usr/local 软件家目录

  • bindir=... $prefix/bin 命令的目录

  • --etcdir=... $prefix/etc 配置文件的目录 httpd => /etc/httpd/httpd.conf

  • --mandir=... $prefix/share/man man 文档路径

  • --locale=... $prefix/share/locale 语言编码

1. axel多线程下载软件源码安装

  1. 对源码软件包进行解压缩
    命令:tar -xzf axel-2.4.tar.gz


2. 进入axel目录进行配置(不采用默认配置)

指定新的安装目录 /opt/axel

  1. 编译安装
    命令:make && make install

  2. 测试和使用

命令:axel http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7


出现以上问题的主要原因在于:我们没有采用默认的安装方式,所以导致当我们执行axel命令的时候,找不到对应命令

解决这个问题有两种方式

  • 第一种方式:采用软链接形式(类似Windows中的快捷方式)
  • 第二种方式:使用环境变量(重要,Linux中的环境变量)

2. 使用软链接解决command not found

找不到是因为我指定的安装目录不是默认的安装目录,指定安装到了/opt/axel/bin


解决方案:
/opt/axel/bin/axel创建一个快捷方式到/usr/local/bin

注意:这几个目录都是一些命令

  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /root/bin

命令:ln -s [源文件路径] [软连接路径]

执行命令:ln -s /opt/axel/bin/axel /usr/local/bin/axel

查看/usr/local/bin/目录


相当于在usr/local/bin目录下创建了一个快捷方式

执行命令:axel http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7下载完成

3. 使用环境变量解决command not found

其实我们的命令都是通过环境变量执行的

终端 => 命令 => 系统的环境变量(PATH => /etc/profile) => 一些命令的存放路径

axel多线程下载软件,通过源码的方式安装成功后,由于没有使用默认的安装路径,导致axel这个命令没有出现在系统的环境变量中,所以其会出现command not found。

  1. 查询当前系统的环境变量
    命令:echo $PATH

  2. 把acel所在目录添加到环境变量

  • 使用vim编辑/etc/profile文件,把export PATH=$PATH:/opt/axel/bin追加到最后一行
  • 或者直接使用命令echo 'export PATH=$PATH:/opt/axel/bin' >> /etc/profile追加到最后一行

再执行命令:source /etc/profile,让配置文件马上生效


使用axel命令下载文件

4. 解决源码安装man手册找不到问题


解决方案
命令:vim /etc/man.config
在最后一行增加MANPATH /opt/axel/share/man

5. 卸载源码安装的软件

  1. 进入到源码安装包中

  2. 安装软件的安装包等程序
    命令:make uninstall

  3. 卸载编译与配置过程
    命令:``make distclean

  4. 删除软件的目录
    rm -rf /opt/axel

四、yum

1. yum源

1. yum源作用

yum类似于手机的应用商店

2. yum源优点

RPM安装(下载软件、单独安装、需要解决依赖关系)

源码安装(下载软件的源码包,解压,进入目录=>配置+编译+安装)

yum源:相当于rpm软件包管理的升级版

能够解决软件包之间的依赖关系,提高工作效率

注意: yum源底层还是基于RPM进行软件安装操作的,所以yum安装软件后,我们也可以通过rpm -qa |grep 软件名称

3. yum源分类

1)本地yum源

yum仓库在本地(系统光盘/镜像文件) => 不需要网络的支持

2)网络yum源

yum仓库不在本地,在远程

国内比较知名的网络源

国外比较知名的网络源
centos源、redhat源、epel源等

特定软件:相关的网络源(nginx、MySQL、Zabbix等),一般的源里找不到它们

4. 本机yum备份

/etc/yum.repos.d目录里


使用命令:tar -zcf repo.tar.gz *.repo,对本地yum源进行备份


再用命令:rm -rf *.repo,删除以.repo结尾的文件

2. 本地yum源配置

本机yum源,可以使用光盘镜像作为YUM源仓库,或者下载很多软件,使用软件包作为YUM源仓库

使用光盘镜像作为yum源仓库

  1. 在VM系统中装在CentOS7.8系统的光盘镜像

  2. 把光盘挂载到某个目录(mount)

    命令:mount 设备文件原始地址(/dev目录) 要挂载的位置路径(盘 符)
    常用选项:

    • -o:挂载范式
    • ro:ro代表以readonly,只读的方式进行挂载
    • rw:rw表示以read/write,读写的方式进行挂载

    挂载到/mnt目录下
    先把目录清空:rm -rf /mnt/*

    挂载命令:mount -o ro /dev/sr0 /mnt

    sr0是光盘文件

    使用lsblk命令:用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等


解挂命令:umount /mnt

  1. 把光盘故挂载添加到开机启动文件中
    命令:echo 'mount -o ro /dev/sr0 /mnt' >> /etc/rc.local

    /etc/rc.local,属于系统的开机启动文件。系统启动后,会自动加载并执行这个文件

  2. 编写本地yum本地仓库文件

    第一步:创建一个以*.repo结尾的文件,名称随意

    第二步:编写yum.repo文件

    yum仓库的标准格式

  • [仓库标识名称],名称任意,在一个文件中可以拥有多个标识
    - name=仓库名称
    - baseurl=仓库的路径,支持多种格式,file://本地路径,ftp://,http://或https://
    - gpgcheck=gpg密钥,值可以是0(代表不检测),1(代表检测,如果是1,下方还要定义一个gpgkey=密钥连接)
    - enabled=是否启动当前仓库,值可以0,也可以是1,默认为1,代表启动仓库
  1. 清空yum缓存
  • 清空原来的yum缓存:yum clean all
  • 创建新yum缓存:yum makecache
  • 列出可用仓库:yum repolist

  1. 测试本地yum是否可用

安装Apache
命令:yum -y install httpd

man 5

在Linux系统中,给定我们一个配置文件,怎么查询这个文件中每一个选项的作用呢?
命令:man 5 [配置文件名]

比如:man 5 yum.conf

3. 网络yum源配置

  1. 使用比较知名平台的YUM源(阿里云、腾讯、清华)
  2. 有些特定软件(如Nginx、MySQL、Zabbix等等)需要根据官网文档自定义网络YUM源
  • 阿里源:https://opsx.alibaba.com/mirror
  • 网易源:http://mirrors.163.com/
  • 清华源:https://mirrors.tuna.tsinghua.edu.cn/
  • 华为源:https://mirrors.huaweicloud.com/home

百度搜索 某某 mirror镜像源即可

  1. 知道想要的yum源官网,找到CentOS

  2. 根据官网提示,配置

    • 备份配置文件:cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
  3. 配置方案
    命令:wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo


4. 执行yum clean all清除原有yum缓存
5. 执行yum makecache(刷新缓存)或者yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)


6. 测试
安装phpyum -y install php

4. EPEL源配置

什么是EPEL源?

答:EPEL是对官网源的一个扩展。

CentOS-Base.repo文件 => 基础源(官方在带的YUM源)

epel.repo文件 => 扩展源,是对官方YUM源的一个补充

命令:yum install epel-release -y

测试:一般源是没有小火车sl的,但epel源有

5. 特定软件的yum源配置

比如特殊的几个软件,如Nginx、MySQL、Zabbix

找到官方文档,把YUM源配置,写入到一下文件中(repo文件)


找到官网




/etc/yum.repos.d目录下创建nginx.repo
把一下配置文件写入保存

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true


清理缓存:
yum clean all
yum makecache

下载:yum -y install nginx

6. 自建yum源仓库

1. 缓存安装软件包

什么时候需要缓存软件?

  • 下次还需要安装相同版本的软件包
  • 由于网络原因导致网络安装非常慢,将软件包缓存下来,配置本地仓库

2. 如何缓存软件安装包

编辑配置文件/etc/yum.conf
keepcache:为1代表开启缓存,为0代表关闭缓存

3. 把软件及依赖软件全部下载到某个路径

只下载不安装软件:可以获得软件的软件包

命令:yum install --downloadonly --downloaddir=[保存路径] [软件名称]

4. 自定义YUM仓库

  1. 在系统中安装createrepo 制作仓库的软件
    命令:yum -y install createrepo
  2. custom文件夹做成一个本地的自建仓库
    命令:createrepo custom
  3. /etc/yum.repos.d目录中创建一个custom.repo仓库

    用vim命令编辑:vim custom.repo
[soft]
name=customyum
baseurl=file:///custom
gpgcheck=0
enabled=1

  1. 清理缓存+重建缓存:
    命令:yum clean all
    命令:yum makecache

注意:这个是本地仓库目录,仓库里要提前保存有软件包,才能使用yum安装

以上是关于万字详解Linux下安装软件的方式(yum配置+rpm+源码安装)的主要内容,如果未能解决你的问题,请参考以下文章

Linux万字详解Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

linux 下yum软件库配置文件详解!.repo

linux 下yum软件库配置文件详解!.repo

怎么解决安装linux软件的依赖问题

yum 命令详解-yum仓库配置文件详解

YUM仓库配置及命令详解