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

何翰宇 何翰宇     2022-11-29     735

关键词:

文章目录


注意:本文采用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. 测试
安装php:yum -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软件库配置文件详解!.repo

就是那个.repo结尾的配置文件!每一行代表着什么?哪一行是可以删除的?大家一般都怎么配置这个.repo顺道解一下,光盘挂在/mnt/cd下!怎么使用这个路径也能进入光盘/misc/cd按我的方法配置YUM,绝对成功。配置好后自动从网络... 查看详情

yum命令详解-yum仓库配置文件详解(代码片段)

...3、自动解决依耐4、命令简单好用5、生产最佳实践yum命令详解#linux安装软件的三种方式1、rpm安装2、源码安装3、二进制安装yum命令yumrepolistyumrepolistall #查看所有仓库#只能列出在/etc/yum.repo.d下面以repo结尾,enabled=1的仓库中可用的... 查看详情

精通linux系列linux下常用安装服务软件yum方式的介绍(代码片段)

...们点赞👍、收藏⭐、留言💬文章目录Linux下常用安装服务软件yum方式的介绍1:yum安装:基于C/S架构,yum安装称之为傻瓜式安装yum安装方式的使用yum-removezsh#卸载软件yumsearchgcc#搜索gcc软件yumupdate#升级软件Linux下... 查看详情

linux下yum安装及配置

...t+t呼出终端,在终端里面输入yum,它会告诉你,你还没有安装,并且把安装的方法一起告诉你了03输入它下面提示的命令,按下回车键04之后会提示它接下来的操作,这里输入y(不区分大小写)05安装完成之后就可以使用了,输... 查看详情

精通linux系列linux下常用安装服务软件yum方式的介绍(代码片段)

🚀作者:“大数据小禅”🚀专栏简介:本专栏主要分享Linux技术,会涉及到常用的Linux命令操作,常用的服务部应用署以及相关运维知识,还有一些Linux系统的深层解析,Linux系列专栏地址,欢... 查看详情

centos7下yum搭建lnmp环境(yum安装方式)

我们都知道linux下安装软件主要有三种方式:1.源码编译安装,即下载软件源代码,利用gccg++make等编译工具进行编译安装;此方式的优点:可以指定软件版本,可选择性好;编译时可以手动指定需要加载的模块;管理的自由度大... 查看详情

yum详解(代码片段)

目录YUM安装yum相关命令控制yum安装的配置文件YUM安装1.必须有网络,通过网络获取软件2.管理RPM包3.自动解决依赖4.命令简单好记5.生产最佳实践yum相关命令-使用阿里源的base源,可将baseurl中三个路径删除下面两个路径,路径为阿... 查看详情

yum源配置与详解

一、yum简介yum是解决rpm软件包的依赖性而开发的一种软件包管理器。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件... 查看详情

linux发行版的软件包安装管理程序

...话,则可以使用fedora的EPEL项目,或者dag等。 参考技术C的安装程序,或者用Zip等解压缩软件解压缩即可安装。在Linux下安装软件对初学者来说,难度高于Windows下软件安装。下面我就详细讲解Linux下如何安装软件。先来看看Linux软... 查看详情

linux下软件编译安装前提和方式

请问在linux下编译安装软件的时候,需要提前安装好什么软件和库之类的啊,才能进行编译安装源码包,再者,是怎样的命令来安装源码包啊??????在linux系统中,如果要用源代码包进行编译安装,就需要用到gcc这个工具... 查看详情

linux中yum命令使用方法

Linux系统下常用yum安装命令详解yum常用安装命令 使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。1、安装killall命令yuminstall-ypsmisc2、安装sz(下载)和rz(上传)命令yuminstall-ylrzsz3、安装if 查看详情

如何解决linux下的软件包依赖问题

利用yum安装软件(自动解决依赖关系)YUM有以下特点:1、可以同时配置多个资源库(Repository)2、简洁的配置文件(/etc/yum.conf)3、自动解决增加或删除rpm包时遇到的依赖性问题使用方便4、YUM分为服务器端和客户端搭建yum服务器:1、... 查看详情

linux中的yum安装介绍(代码片段)

Linux中的yum安装文章目录Linux中的yum安装Linux软件包管理器yum什么是软件包yum软件包管理器查看软件包安装卸载Linux软件包管理器yumLinux当中怎么安装软件呢?Linux软件安装方式:源码安装rpm包安装yum(推荐)什么是软件包在Lin... 查看详情

linux软件管理-yum工具(代码片段)

...python开发需要对应的软件仓库(repository)自动化升级、安装、移除rpm软件包可以很好的解决RPM软件包依赖问题可以自定义多个资源库/yum源(repository)3.YUM工作流程执行yum命令读取yum配置文件,获取仓库信息在仓库中搜索元数据... 查看详情

linux下yum安装软件包找不到镜像的解决办法(代码片段)

...个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!       YUM的工作原理并不复杂,每一个RPM软件的 查看详情

在linux系统中配置yum源仓库(代码片段)

...配置本地yum源仓库三、yum常用操作命令四、使用yum方式去安装五、编译安装的基本过程1.编译安装的基本过程2.验证结果几种方式总结前言在主机中安装了Linux操作系统后,就具备了提供软件服务、网络服务等功能的基础,... 查看详情

我在linux下检查yum,有如下信息,请帮助指点

...有如下信息,请帮助指点参考技术A常用的方法yuminstallXXX安装XXX软件yumremoveXXX删除XXX软件yumupdate更新系统已安装的软件yumupdate-xXXX更新系统已安装软件但排除XXXyuminstallXXX*安装XXX开头的所有软件当然了,还有其它更高级的应用,你... 查看详情

详解linux软件安装中rpm与yum区别和联系

参考技术A一般Linux软件安装有这么几种方式:那么其中rpm与yum有什么区别呢?RPM管理支持事务机制。增强了程序安装卸载的管理。RPM的功能:打包、安装、查询、升级、卸载、校验、数据库管理。1、RPM的缺点由于Linux中的程序大... 查看详情