浅谈Yum 安装和 源码安装

浅谈Yum 安装和 源码安装

本文所叙述的Linux系统是基于RedHat发行版的CentOS7

yum安装

1. 前言

我们知道在Windows上下载的安装包后缀是 .exe ,与之对应的 在 Linux下的安装包的后缀是 .rpm

rpm (Red Hat Package Manager) 是红帽软件包管理器

我们在Windows电脑上下载完.exe安装包后,双击打开即可安装,完全不用操心其内部配置和代码的联系方式。

但是,在Linux下,比如你下载一个mysql5.7 的rpm包,那么当你使用rpm命令去安装的时候,就告诉你这个rpm 还依赖于其他的rpm包,你必须按照顺序来一个一个安装,这样显得非常麻烦,且对新手很不友好!

那么,有没有一种工具,让我们无需关心其rpm包之间的依赖,更加方便快捷的安装某个应用呢,答案是肯定的。

这里贴上rpm软件包管理器的常用命令作为学习和参考

# 一、查询已安装的软件包
$ rpm -q 软件包名   # 查询软件包是否安装
$ rpm -ql 软件包名  # 查询软件包的文件具体安装位置
$ rpm -qi 软件包名  # 查询软件包信息

# 二、安装、升级、卸载软件包

$ rpm -ivh 软件包名  # 安装软件包(其中,i表示安装,v表示显示安装过程,h表示显示安装进度)
$ rpm -Uvh 软件包名  # 升级软件包(U表示升级)
$ rpm -e 软件包名     # 卸载软件包

2. 横空出世

yum就是这样一个方便快捷的工具,对小白同学非常友好。

它会自己解决rpm包之间的依赖关系,我们只需要一个简简单单的命令即可完成安装

# 比如我们安装mysql
$ yum -y install mysql

像上面的命令一样,我们就只提供给我们想要安装的应用名称,即可完成安装。

那么可能有人会问了,这个yum 是从哪里找的rpm安装包呢?安不安全呢?下载速度怎么样啊?

3. yum 源仓库

这个非常好理解,这个yum 仓库里面存放的就是绝大部分rpm安装包,几乎是囊括了你所需要的软件包。

你就跟windows电脑里的软件管家对比,之前你下载一个微信、QQ啥软件的,你都要去百度上寻找官网下载

一不小心可能还下载到病毒,但你去本机自带的软件管家里下载,起码保证你方便寻找,安全可靠。

那yum仓库就跟软件管家一毛一样。里面存放了非常之多的rpm包,当你敲了命令后,他就会去这个仓库里找rpm包

并且自动解决这些包之间的依赖关系,且您放心,这个仓库都是有专人在维护的,可靠性、安全性、完整性不需要担心。

But,But,But 最大的难点就是下载速度比较慢,因为这个仓库是在国外在维护

访问下载速度自然也就慢了,如果你可以科学上网 的话,那当我没说…

当然,解决办法还是有滴!国内也是有这样的仓库的,由国内知名的大厂在维护,比如阿里云、网易、搜狐等

国内开源镜像站
https://developer.aliyun.com/mirror/
http://mirrors.sohu.com
http://mirrors.163.com

但是哦,我在上面说的是这个仓库囊括了绝大多数安装包,有的没有的,就需要第三方可信任组织的软件包

  • epel 它提供了众多centos额外的第三方包
http://mirrors.sohu.com/fedora-epel/7/x86_64/Packages/
https://developer.aliyun.com/mirror/epel/

现在,你有了国内的yum 仓库,你就可以去这个地址下下载啦

老规矩,附上一份yum 常用命令

$ yum install -y 软件名   # 安装软件
$ yum remove 软件名  # 卸载软件
$ yum update 软件名  # 更新软件
$ yum update  # 更新所有软件包
$ yum search 软件名  # 搜索指定软件
$ yum list # 列出所有软件包
$ yum list installed  # 列出已安装的所有软件包
$ yum list available  # 列出可用的安装包
$ yum clean all  # 清理下载的缓存,释放磁盘空间

BUT,又有人可能会问,那yum怎么知道要去这个地址下载软件呢?

嘿!请往下接着瞧

4. 配置仓库地址

首先要说明的一点是,yum是分为服务端和客户端。

服务端说白了就是yum 仓库,提供服务的

客户端就是我们个人、企业的主机,来获取这些服务的机器

我们先来看看yum 的客户端
# 客户端的配置文件是 /etc/yum.conf 文件  它为所有仓库提供公共配置
$ vim /etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever   # 注明缓存的文件目录位置
keepcache=0										# 本地缓存是否保留 0 否 1 是
debuglevel=2									# 调日志级别
logfile=/var/log/yum.log						# 日志文件目录位置
exactarch=1										# 精确匹配系统平台(CentOS、Ubantu)
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5								# 同时安装几个软件包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# 最后一句话解释一下,请将你的yum 仓库配置文件(也就是仓库地址咯)放在 /etc/yum.repos.d目录下,要以.repo结尾才可以
# PUT YOUR REPOS HERE OR IN separate files named file.repo  
# in /etc/yum.repos.d
# 那我们cd 到该目录下看看
$ cd /etc/yum.repos.d
# 切记,必须将*.repo文件放在这个目录下,也不能放在它的子目录下,且只在这个目录下才可行。

我们来以这个目录下的 CentOS-Base.repo 文件为例来说明文件内容

$ vim CentOS-Base.repo

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base -mirrors.sohu.com  # 仓库的名字
failovermethod=priority # roundrobin 随机挑选   priority 顺序读取
baseurl=http://mirrors.sohu.com/centos/7/os/x86_64/Packages/
	   =http://mirrors.sohu.com/centos/7/updates/x86_64/Packages/
gpgcheck=1  # 是否检测秘钥
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  # 公钥存放路径

# 指定rpm包升级的时候,去哪里找
#released updates   
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

# epel额外包的下载地址
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

自己自定义的时候的格式,按照[base]的那个来,其余的updates和 extras都也一样

我们可以去阿里巴巴的镜像网站看看如何配置

[阿里巴巴CentOS的[base]的配置源教程](centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 (aliyun.com))

[阿里巴巴CentOS的[extras]的配置源教程](epel镜像_epel下载地址_epel安装教程-阿里巴巴开源镜像站 (aliyun.com))

源码安装

上面的yum 安装方式有利有弊

  • 利:安装方便快捷,适合新手,配置相对方便,可以自动解决依赖关系

  • 弊:不能自定义应用、不能指定应用的下载版本

源码安装利弊

  • 利:可以指定下载版本,设置参数、指定安装路径、扩展第三方功能
  • 弊:不适合新手,适合老手,不能自动解决依赖关系,安装复杂、配置相对复杂

建议方式:yum 和 源码一起使用,即可解决绝大部分问题

源码安装分三步

前提条件:准备好开发工具以及开发环境

  • 开发工具:gcc make 等
  • 开发组件
    • yum groups install "Development Tools"
    • yum groups install "Platform Development"

第一步

执行脚本 configure 文件

# 1.解压提前下载好的tar.gz 的源码包
# 2.cd 到解压的目录下
# 3.然后执行./configure --prefix=软件安装路径

对于C C++ 代码进行编译安装,需要执行configure脚本来生成Makefile文件来检查依赖和外部环境

# 假设你已经下载了nginx-1.12.0.tar.gz压缩包在/opt目录下

$ cd /opt/ 
$ tar -zxvf nginx-1.12.0.tar.gz # 解压
$ cd nginx-1.12.0
$./configure --prefix=/data/nginx_test01 # 指定安装的目录到/data/nginx_test01 下
$ ls # 可以看到Makrfile文件

第二步

执行make 命令

# make 的作用就是进行源代码编译,以及提供一些功能
# 在当前目录(/opt/nginx-1.12.0)下输入make指令
$ make

第三步

开始安装 make install

# 当你执行完这条命令后,才会生成/data/nginx_test01这个文件夹
# 还是在当前目录下,输入make install命令
$ make install
# 然后这个目录文件就生成了  /data/nginx_test01

演示启动玩一下

# 上面已经编译安装完了nginx,现在我们来启动它
$ cd /data/nginx_test01
$ ls
$ cd ./sbin # bin目录是二进制文件可执行的目录
$ ls # 然后可以看见一个nginx可执行文件,执行它
$ ./nginx

# 然后去网页上访问IP加端口,看看是否成功

# 如果出现403,则需要浅浅的配置一下nginx的配置文件
$ cd /data/nginx_test01/conf
$ vim nginx.conf

# user nobody;  # 将第一行代码取消注释,nobody改成root 以root用户执行
user root;
...
...
# 保存退出


# 重启nginx
$ cd ..
$ ./sbin/nginx -s reload 
# 然后就好了

最后一步,将启动文件地址加入到PATH里,配置全局变量

就不用每次去指定目录里再去启动、重启了

# 我想直接输入 nginx启动它,就必须要配置环境变量
# 那么就可以将 /data/nginx_test01/sbin 写入环境变量

$ vim /etc/profile.d/nginx.sh
# 写入这样一条命令
$ export PATH=/data/nginx_test01/sbin:$PATH
# 保存退出

# 重新读取配置文件
$ source /etc/profile.d/nginx.sh

# 然后就可以启动、重启、停止nginx服务了
$ nginx #启动
$ nginx -s stop #停止
$ nginx -s reload
$ nginx -s restart

感谢自己的记录和坚持不懈,加油! 今日学习记录和分享到此结束! 下次再见!

你可能感兴趣的:(linux)