【Linux学习笔记】十三、linux软件包管理2

(四)免安装二进制包

前面讲过二进制包有2种:
1、rpm格式,需要rpm -ivh安装。这种二进制包就是一个打包好的安装程序,关于软件的安装路径都固定好了,比如配置文件默认放在/etc下面,所有配置文件、可执行程序都放在压缩包里了。清除的时候也需要清理较多的文件目录。
2、tar.gz格式,直接tar -zxvf解压即用。这种二进制软件包,是一个已经编译好的二进制命令,也就是一个我们拿来解压即可用的免安装二进制软件包。如果要删除也是只删除一个文件夹即可。

一般情况下,我们说的二级制包都是指第一种rpm包。本部分以java环境部署为例,给大家展示第二种二进制包的使用。
第一步:下载二进制java的软件包
最可靠的下载途径就是上java的官网去下载。但是需要注册。注册完就可以下载,也很方便。

这个.tar.gz包就是一个已经编译好的java程序,安装上这个程序就可以java开发了,就跟我们前面安装的golang、python等软件一样。
这个.tar.gz包只要上传到我们的linux上,然后解压缩,就可以使用了。

第二步:解压缩

正常情况下,这个软件就可以直直接运行了,但是java比较特殊,还需要配置linux的环境变量才可以使用,如果是golang,解压缩完后,只需把命令添加到PATH变量中,即可快速使用。所以我们还要配置linux环境变量。

第三步:配置java的linux环境变量

做软链接的好处是:文件jdk1.8.0_221太长,如果我们直接把这个文件名放到PATH变量中,后期我们要是修改软件的配置文件时,如果涉及到path变量,这个很长的名字很容易报错。比如我们nginx或者数据库,它的文件名更长,直接放到path中,那你的path变量就会很长很长,看着很乱。所以加个软链接就很友好了。 

第四步:验证java环境是否可以正常使用

(五)yum命令

前面讲linux下,我们要安装软件,首先要获取rpm包再安装rpm包。
而获取rpm包,一是自己去对应软件的官网下载rpm包;二是去本地操作系统光盘中找找有没有相关的rpm包;三是,就是去第三方软件仓库看看有没有相关软件包。本部分讲去第三方软件仓库获取并安装rpm软件包。

第三方软件仓库可以类比360软件管家或者手机里的应用app等,里面有一个超大的rpm软件包仓库。你可以使用它进行软件搜索、下载、一键安装、升级、卸载等操作。在linux下,你可以自建软件库,也可以使用别人的软件库。使用别人的软件库,最常见的就是使用专门做软件仓库的第三方公司,比如:
阿里源:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
清华源:清华大学开源软件镜像站 | Tsinghua Open Source Mirror
国外较知名得网络源有:centos源、redhat源、扩展epel源等。
只要你的linux有yum工具,yum工具就可以针对你当前机器的软件包环境去搜索、安装、升级、卸载这些软件包。

但是,我们想要用yum工具获取软件仓库中的软件,我们就得配置yum源。yum源配置完成后,我们就可以方便的使用yum install xxx -y,自动的从软件仓库中搜索、下载、并解决各种依赖得去安装软件了。

就是yum工具不仅可以帮助我们自动下载还可以自动搜索、自动安装还可以自动判断并解决依赖关系,我们只需要敲yum install xxx -y即可。比如你机器上安装的nginx服务,它依赖名为xxx-1.1版本的基础环境包,而你机器上的mysql数据库也依赖xxx-1.2版本的基础环境包。此时你如果手动安装mysql时,你就必须得保证1.1版本和1.2版本不能冲突,否则nginx跑起来了mysql就不能跑,mysql跑起来nginx就没法跑。此时手动安装就非常麻烦,用yum安装就很方便。

yum是一个软件自动化管理的命令,是linux操作系统内置的一个软件管理命令,管理的是centos发行系列的rpm包。所以,yum管理的也是rpm软件包,而且也是通过rpm去管理的,所以,也可以说yum是对rpm命令的再次打包升级,yum可以自动解决依赖关系,而rpm不行,得手工安装依赖。所以,能用rpm管理的软件,yum都也可以管理。但是如果你的软件是你自己手动编译安装的,比如安装在/opt目录下,那yum工具是没法帮你管理的。

1、配置yum源介绍
配置yum源的实质是:
(1)在/etc/yum.repo.d/目录下,下载了一个yum的配置文件,这个配置文件里面是一个或多个url链接,就是告诉yum去哪里找rpm包而已。
(2)所以,这些url是指向一个镜像站。比如指向了阿里云的centos仓库,就等于在线获取了一个阿里云的光盘镜像站,里面有操作系统,以及自带的各种rpm包。
(3)当你yum install安装的时候,yum就自动去这个网站里,搜索和软件名字相关的rpm包,进行下载和安装。

所以,yum源的配置有很多方法:
(1)你可以配置本地源。方法1:就是配置你本地的光盘源。比如我们前面讲的将centos7.iso进行挂载,centos7.iso里面就有大量的rpm软件包。这种方法在本部分-6会详细演示。方法2:或者你在本地自建yum仓库目录,比如你也可以像网易阿里那样自建软件仓库。这种方法会在本部分-7详细演示。在这2种方法下,你都可以离线安装了。
(2)你还可以配置网络源,就是配置第三方专门做软件仓库的公司的仓库,就是上面讲的阿里云源、清华源、国外源等,但此时你就不能离线了。这种方法本部分-2详细演示。
一些大型公司都会选择自建本地源,就是自建本地yum仓库,因为要构建企业内部的devops全链路流水线,就是从代码上传到下载都要有标准化的流水线,所以要建自己的rpm仓库,而且还安全。

2、配置网络yum源:以阿里源为例
平时我们个人用的最多的是网络源。这里我们就以配置阿里云的yum源为例,展示配置步骤。

(1)备份你Linux中默认的yum仓库配置文件

 yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel gcc zlib zlib-devel(2)阿里云的yum源配置官网是:mirrors.aliyun.com,你要先打开这个网址
(3)至少要配置2个源:打开上面网址后,你会发现有很多很多镜像源,这里我们只有配置2个源即可。第一个源是能够下载centos自带的绝大多数软件,第二个源是epel仓库,这个仓库是可以下载绝大多数第三方软件的仓库。如下图所示,点击进入下面的2个仓库

然后再复制这2个仓库源的地址: 

这两个仓库的地址就是下面我复制的:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
说明:repo是repository仓库的前4个字母。命令:wget https://mirrors.aliyun.com/repo/Centos-7.repo 表示下载这个链接的文件,下载下来就是一个名为centos-7.repo文件。而加参数-O大写表示把这个链接的这个文件下载到你机器的这个/etc/yum.repos.d/目录下,并重命名为CentOS-Base.repo。

(4)在linux平台上,下载新的yum仓库文件,完成阿里云的yum源配置

 (5)更新yum缓存
阿里云的yum源配置完成后,要先更新yum缓存:yum clean all ,先清空原来的缓存,然后再yum makecache 。

3、yum命令常见用法
至此,你就可以:
(1)用yum自动化搜索、安装、升级阿里云软件仓库里的软件了。
(2)用yum自动化管理你机器上rpm安装的软件了。
比如:
yum install xxx -y,就自动去你配置的阿里云软件源仓库里面找xxx软件了,如果找到就自动下载、安装、解决依赖;
yum search xxx,就自动搜索xxx软件了;
yum update xxx,升级xxx软件;
yum upgrade,升级操作系统的所有软件和内核。操作系统是由centos代码+linux内核代码构成的。
yum remove xxx -y,就自动卸载了xxx软件,但只卸载xxx软件的二进制命令,软件的日志、配置文件等还在。
yum clean all,清空yum缓存文件。
yum makecache,生成新的yum缓存文件。
yum repolist all,显示当前都有哪些yum源。
yum list |wc -l ,当前yum源中有多少rpm软件包。
说明:通过yum安装的软件,也可以通过systemctl工具去管理启停操作

4、linux常见的基础依赖环境
linux常见的基础软件是我们在装机的时候,系统安装的时候,就应该安装上了,但我们一般都用的是虚拟机,而且都安装的是mini版的最小化的操作系统,所以很多基础软件都没有,所以在后期我们安装其他复制的软件的时候,就经常会报错,报各种依赖或者各种库不存在,导致软件安装出现问题,所以我们后期要先手动至少安装如下软件:
yum install gcc patch libffi-devel python-devel zlib-devel1 bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
这些都是常见的依赖包

5、配置yum源的注意点
(1)配置yum仓库目录语法
yum的仓库文件都被统一放在了一个固定的目录/etc/yum.repos.d/下面。在这个目录里,名字是xxx.repo结尾的文件,就会被yum识别为仓库文件,并且只能是在这一层目录,否则都无法被识别为yum仓库。 就是如果在目录/etc/yum.repos.d目录里面没有.repo文件,就被视为没有yum源。

 (2)配置yum源文件语法
上面演示的配置阿里云yum源的时候,当我们wget -O xxx后,就自动在/etc/yum.repos.d/目录下生成一个yum的配置文件CentOS-Base.repo和epel.repo文件,就表示我们配置好了阿里云yum源。同理,如果我们想配置本地yum源的话,那/etc/yum.repos.d/目录下的xxx.repo文件怎么写?

这个创建语法我们可以参考阿里云的仓库文件的语法来写:

就是以后我们配置自己本地yum源的时候写xxx.repo配置文件的时候,写作格式就参考上图的写法。

(3)yum的缓存功能

 (4)查看你机器的yum源

6、配置本地yum源之:挂载本地光盘,作为镜像源
就是找一个本地光盘作为yum的rpm包仓库。
(1)找一个光盘镜像
我们是虚拟机,所以让vmware连接上centos7光盘即可。这部分内容我们在(二)-5中有详细的截图展示。
如果你是一个物理机的话,你得准备一个外置光驱+自己刻录一个centos7光盘。
(2)找到光盘文件进行挂载
这部分也讲过,参考(二)-5。 

(3)创建本地yum源文件
这个创建语法我们可以参考阿里云的仓库文件的语法来写,阿里云的语法在上面5-(2)详细讲解过。照葫芦画瓢,我们这样写: 

(4)清空旧的yum缓存,生成新的yum缓存

清空旧的yum缓存,2个命令:

  • yum clean all。清空是因为,我们之前用的是阿里云的yum源,那缓存里面的依赖包都比较新,现在我们改为本地光盘的yum源,这里的软件版本都很旧。如果我们不清空旧缓存,很可能导致安装不了。前面(二)-6部分里面讲的安装vim就是一个典型例子,就是机器上已经安装了vim的一些依赖包了,再安装版本低的vim就根本装不上,因为低版本的vim的依赖包也版本低,而系统已经有高版本的依赖包,就会一直报错安装不了vim。所以我们要先清空一下旧缓存。
  • rm -rf /var/cache/yum/

生成新的yum缓存:yum makecache。再生成一些缓存是为了方便以后继续用这个源安装软件。再生成一些缓存,以后安装这个源里的软件就快了。

 (5)此时你就可以用你的本地yum源,就是去你自己的光盘中,用yum安装软件了,就是离线也可以安装了

7、配置本地yum源之:自建yum仓库
配置网络源不安全、配置本地光盘镜像源麻烦(你除了得有很多rpm软件包和rpm依赖包,你还得刻录很多光盘,还得有光驱,麻烦),所以有的大公司都会选择自建本地yum文件夹仓库,仓库里只装一些和本公司业务相关的软件和依赖。这样不仅安全还可以在断网离线的时候安装。本部分讲怎么搭建自己的yum文件夹仓库。

关键点有:
(1)获取软件的rpm包及依赖包
比如,你可以自己到网上下载你公司需要的rpm包;
比如,你可以去你需要的软件官网去同步其rpm包到自己的文件夹仓库中;
比如,到类似阿里源下载你需要的rpm包放到自己的软件仓库里。
比如,你也可以到你以前配置的yum源中获取软件包,再放到你自己的仓库里;
比如,你可以从光盘中获取rpm包。
等等,很多途径。

(2)创建一个文件夹,将你从各种渠道获取的rpm包都放到这个文件夹里面,文件夹可以有很多层级,因为各种软件安装包及依赖要分门别类。然后让yum识别这个文件夹,那这个文件夹就是你的一个软件仓库,就是你自建的yum仓库。

(3)不是一个普通的文件夹yum就可以识别的,还得用createrepo命令,让这个文件夹和yum关联起来,就是让其成为yum可识别的文件夹。这个命令的执行结果就是在这个普通文件夹下生成一个repodata目录,这样yum就可以识别了。

(4)在/etc/yum.repos.d/目录下,创建一个.repo的yum配置文件,把你的仓库文件夹的路径写入配置文件,这样你就可以用yum工具管理你的自建仓库了。

具体步骤示例:

第一步:我想把软件安装包和依赖包都放到/opt下面,我先在/opt下面建一个文件夹,当作我的软件仓库。

 第二步:重新整理一下yum源

第三步:先在现有的条件下,下载一些rpm软件包放到/opt/liyy_software_repos 

我们的仓库里就先放这两个软件吧。
说明:用yum到网上的第三方源下载的软件及依赖,到底yum能给我们下载几个依赖,这就看当前你机器的配置,就是看当前你机器的环境,yum自动判断需要下载哪些依赖,它才会去第三方源去search那个依赖,search到就一起download了,没有search到你就还因为依赖没有安装不了了呢。

第四步:让目录/opt/liyy_software_repos/成为一个yum可识别的仓库

 第五步:本次展示怎样用Yum安装我参考里vim软件,所以我先把电脑里的vim删了

第六步:在/etc/yum.repos.d/目录下,创建一个yum的配置文件,就是写一个.repo文件,文件里面的url指向我建的仓库/opt/liyy_software_repos/目录 

第七步:使用我们自己的软件仓库,用yum安装我们自己仓库里面的软件!

补充:
你想用哪个源,哪个源的.repo文件就得放在/etc/yum.repos.d/文件夹下面,好让yum识别。但是移来移去、删来删去.repo文件很麻烦,那你可以把所有的.repo文件都放再/etc.yum.repos.d/文件夹下,但是:
(1)你把.repo文件里面的内容enable参数从1改为0,那这个源也就不能用了,这样你就不用移动或删除了。哪天想用了,再把enable改为1就可用了。
(2)或者你可以搭配另一个参数keepcache=0,那你如果偶尔用这个源下载个啥软件,这个软件的依赖就不加入yum缓存文件,这样就不会出现混乱。
(3)或者你还可以给这些源设置优先级,也是在.repo文件中加一行:priority=1,2,3,,数字越小,优先级越高。

8、案例:开发团队要部署一套数据库服务器环境来测试程序。要在测试机centos7.6上安装好MySQL-5.6.43版本,用于前期迁移准备工作。同时,要配置好本地yum源和外网源,方便后续软件包安装。

先分析一下任务,这个任务大的方面有2个任务:
(1)安装MySQL-5.6.43版本软件:
一是可以下载MySQL-5.6.43.rpm包,手动rpm安装,但这种方式很可能会出现很多依赖包不存在,所以还得要手动rpm一个个安装依赖包,而且依赖包之间还有依赖顺序,就是要安装依赖顺序去安装。所以这种安装风险大,因为你也不知道会有多少依赖,万一一大堆依赖你就傻了。
二是可以下载MySQL-5.6.43.tar.gz源码包编译安装,但这种安装方式,不同软件的不同版本,它的编译参数也不同,你还得仔细阅读软件安装说明,去了解各种参数的意思,然后configure+参数,再make &&make install。也费劲。
三是,你可以yum一键安装。因为mysql是一款常见软件了,各大yum源基本都有这个软件,所以一键安装,也省了解决依赖问题,也不用自己研究安装说明了。

(2)另外一个任务是置本地yum源和外网源:
对于外网源,一是你可以选择阿里云的yum源,你也可以选择清华源,你还可以选择yum官方提供的yum源,当然yum官方提供的yum源最靠谱。阿里云的清华的源都是它们的工程师自己配的,是第三方源,可能会有版本低、携带后门软件、携带广告插件等不安全性因素
配置本地yum源就参照上面7的步骤一步一配置即可。

获取mysql软件,版本为5.6.43

 此时我们就得去mysql官网找了:

下面开始yum安装:
我首先是用我自己的仓库源安装,但是报perl依赖没有安装失败。这里就不再截图展示了。但是perl这种依赖包是系统基础环境包,还是得用阿里源去安装。所以我就把阿里源也打开: 

 查看一下:

至此,我们把mysql指定版本的软件安装好了,也配置了2个网络源和自建一个自己的软件仓库,并且关联了yum工具。

9、小结:
安装软件有3种方式:
rpm手动安装:就是安装某软件的rpm包。这种按照方式,一是,需要手动解决所有依赖;二是,安装后生成的文件的路径都是默认的,我们不可控。删除的时候还需要手动rm删除软件的日志、配置文件等。

yum自动安装:实质上也是去安装某个软件的rpm包,只不过是yum帮我们自动安装了。这种安装方式,可以用yum去管理rpm包,yum就是管理rpm包的工具。这种安装方式可以自动解决依赖关系。但是也是安装后生成的文件的路径都是默认的,我们不好管理,删除的时候也不好全部清除。

源码编译安装:是我们获得了某个软件的开发源码包(比如用C语言写的程序,还没有编译成二进制文件呢),我们要用这个源码包去安装某软件,此时我们用源码编译安装。这种安装方式,我们可以指定软件都安装到一个我们想安装的目录下,管理该目录即可,我们是可控的。同时更重要的是,我们可以自定义安装一些软件的扩展功能。就是我们运行./configure文件的时候我们可以加安装路径参数和软件扩展功能参数。但是缺点是,无法用systemctl、yum等软件管理工具去管理脚本。而且一些依赖和环境也是需要我们提前安装好的,非常麻烦。
源码编译安装非常适合像nginx这样的web服务器、mysqp数据库、redius缓存型数据库等大型软件工具,这些软件工具比较复杂而且有很多自定义需求,对于这样的软件,选择编译安装比较好,因为可定制化嘛。

但是如果我们获取的是一个已经编译好的二进制命令软件包,我们就不需要上面3中方式去安装,这种包是解压即用的。

所以,我们在安装软件的时候,具体要用什么方式安装,你考虑的因素是你要安装的软件的大小、复杂度,以及你的具体的业务场景,比如是否是在有网络的情况下、比如是否限制了你的软件版本、比如是否要安装扩展功能等要求。然后灵活使用不同的安装方式:比如你安装的是一些基础环境(比如linux底层的一些软件)和一些小型的常用工具,用yum全部自动化安装了事即可;比如你安装的是大型定制化的软件,你就得选择源码编译安装;比如你都是断网的环境中,那你就得准备好你要安装的软件的所有rpm包,然后上传到linux,然后再按照一定顺序安装这些rpm包。比如你限定软件的版本了,你就得自己去软件官网找你需要的版本rpm安装或者源码编译安装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值