有时候我们自带的yum源不太好用,这是因为这个源主要都是国外的网站资源,这回给我们带来一些麻烦,所以可以将yum源更换成国内的源。

首先,把之前备份的文件都恢复,删除本地的dvd库
[root@localhost yum.repos.d]# \rm dvd.repo
然后将刚才拷贝的文件在拷贝回去
[root@localhost yum.repos.d]# cp ../yum.repos.d.bak/* .
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
然后将刚才拷贝的文件中的CentOS-Base.repo 删除掉,然后将源换成国内163的源,用curl -O这个命令下载。
[root@localhost yum.repos.d]# curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1572 100 1572 0 0 15975 0 --:--:-- --:--:-- --:--:-- 16040
然后我们查询一下
[root@localhost yum.repos.d]# ll
总用量 28
-rw-r--r--. 1 root root 1572 2月 16 13:44 CentOS7-Base-163.repo(这就是我们刚下载好的国内源)
-rw-r--r--. 1 root root 1309 2月 16 13:26 CentOS-CR.repo
-rw-r--r--. 1 root root 649 2月 16 13:26 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 2月 16 13:26 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 2月 16 13:26 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 2月 16 13:26 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 2月 16 13:26 CentOS-Vault.repo
这时候我们就已经成功的更换了yum源。
下载yum源有两种方法,一种就是wget,另一种就是curl -O,这两者后面都要接下载源的地址。

安装扩展源
有时候我们只有个163Bash会不够用,有些rpm包没有,所以我们要用yum来安装扩展源epel-release。
首先来查看一下当前目录下都有那些文件
[root@localhost yum.repos.d]# ll
总用量 28
-rw-r--r--. 1 root root 1572 2月 16 13:44 CentOS7-Base-163.repo
-rw-r--r--. 1 root root 1309 2月 16 13:26 CentOS-CR.repo
-rw-r--r--. 1 root root 649 2月 16 13:26 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 2月 16 13:26 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 2月 16 13:26 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 2月 16 13:26 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 2月 16 13:26 CentOS-Vault.repo
当前目录下有7个文件,然后我们安装epel-release。
[root@localhost yum.repos.d]# yum install -y epel-release
然后我们再查看一下当前目录下的文件
[root@localhost yum.repos.d]# ll
总用量 36
-rw-r--r--. 1 root root 1572 2月 16 13:44 CentOS7-Base-163.repo
-rw-r--r--. 1 root root 1309 2月 16 13:26 CentOS-CR.repo
-rw-r--r--. 1 root root 649 2月 16 13:26 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 2月 16 13:26 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 2月 16 13:26 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 2月 16 13:26 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 2月 16 13:26 CentOS-Vault.repo
-rw-r--r--. 1 root root 957 12月 28 2016 epel.repo
-rw-r--r--. 1 root root 1056 12月 28 2016 epel-testing.repo
这时我们发现最后多出了两个文件,其中epel.repo是核心。
然后我们再打开yum列表
[root@localhost yum.repos.d]#yum list
zinnia-doc.noarch 0.06-22.el7 epel
zinnia-perl.x86_64 0.06-22.el7 epel
zinnia-python.x86_64 0.06-22.el7 epel
zinnia-tomoe-ja.x86_64 0.06-22.el7 epel
zinnia-tomoe-zh_CN.x86_64 0.06-22.el7 epel
zinnia-utils.x86_64 0.06-22.el7 epel
zipios++.x86_64 0.1.5.9-9.el7 epel
这时我们发现已经有许多的epel存在,这就是我们刚才安装的扩展包。

yum下载rpm包
网上的rpm包有很多,虽然我们可以在本地的光盘里找到,但是epel在本地是找不到的,但是我还想把它下载到本地,供其他电脑使用,省的再下载浪费时间,
首先我们先要确认我们下载的rpm报是否已经安装过了,如果安装过了的话,在我们在使用这个方法他就是提示这个包已经安装过了。
我们试着下载一个程序
[root@localhost yum.repos.d]# yum install zvbi --downloadonly(这里的downkandonly是一个yum的插件,他的作用是只下载,不安装)
然后我们查看一下它将包下载到哪里
[root@localhost yum.repos.d]# ls /var/cache/yum/x86_64/7/epel/packages/
zvbi-0.2.35-1.el7.x86_64.rpm
通过查看我们知道,它将包下载到了/var/cache/yum/x86_64/7/epel/packages/ 这里,其实这也不是绝对的,因为这跟文件的源源有关系,如果文件的源是Bask那么我们就要将packages前面的epel更换成Bash,packages 前面都是包的源,所以在我们查看的时候一定要输入包源才能看到包是否被下载。
但是这个查看比较麻烦,我们也可以指定路径下载,只要在后面加参数--downloaddir=绝对路径就可以。比如我们放到tmp下。
[root@localhost yum.repos.d]# yum install zvbi --downloadonly --downloaddir=/tmp/
然后查看
[root@localhost yum.repos.d]# ll /tmp
-rw-r--r--. 1 root root 425256 2月 17 2016 zvbi-0.2.35-1.el7.x86_64.rpm
这时我们已经可以在tmp下看到我们刚下载的包了。

如果我们想下载一个已经安装好了的包,但是这样操作系统会提示我们不可行,我们可以用vim来试一下
[root@localhost yum.repos.d]# yum install vim-enhanced --downloadonly --downloaddir=/tmp/
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile

  • epel: mirrors.ustc.edu.cn
    软件包 2:vim-enhanced-7.4.160-2.el7.x86_64 已安装并且是最新版本
    无须任何处理。
    在这种情况下,我们可以用这个参数,yum reinstall来重新安装,就可以解决问题
    [root@localhost yum.repos.d]# ll /tmp
    -rw-r--r--. 1 root root 1085368 8月 11 2017 vim-enhanced-7.4.160-2.el7.x86_64.rpm
    这时我们就可以在tmp先发现这个包了。

安装源码包
还有最后一种方法,就是安装源码包。首先我们要先去下载一个源码包,下载什么,去哪里下载,这都要根据我们的实际需求。
我们可以形成一个习惯,将源码包全部放到/usr/local/src这里,方便我们找,也方便管理。
我们先下载一个apache

[root@localhost src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.32.tar.gz
--2018-02-16 15:04:13-- http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.32.tar.gz
正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:178
正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.6.178|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2018-02-16 15:04:13 错误 404:Not Found。
如果我们发现这个网站找不到,那么我们可以去r.aminglinux.com中去找我们需要的东西下载。
我们换个源后继续下载,然后查看
[root@localhost src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.29.tar.gz
--2018-02-16 15:09:50-- http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.29.tar.gz
正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:178
正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.6.178|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:8638793 (8.2M) [application/octet-stream]
正在保存至: “httpd-2.4.29.tar.gz”

100%[============================================================================================================>] 8,638,793 1.50MB/s 用时 5.6s

2018-02-16 15:09:56 (1.48 MB/s) - 已保存 “httpd-2.4.29.tar.gz” [8638793/8638793])
[root@localhost src]# ll
总用量 8440
-rw-r--r--. 1 root root 8638793 10月 21 03:39 httpd-2.4.29.tar.gz
我们发现已经将我们需要的包现在好了。然后我么解压这个包,然后查看。
[root@localhost src]# tar jxvf httpd-2.4.29.tar.gz
[root@localhost src]# ls
httpd-2.4.29 httpd-2.4.29.tar.gz
然后我们进入刚才解压完后得到的那个目录,再查看
[root@localhost src]# cd httpd-2.4.29
[root@localhost httpd-2.4.29]# ls
ABOUT_APACHE ap.d CHANGES docs httpd.spec libhttpd.dep Makefile.win README srclib
acinclude.m4 build CMakeLists.txt emacs-style include libhttpd.dsp modules README.cmake support
Apache-apr2.dsw BuildAll.dsp config.layout httpd.dep INSTALL libhttpd.mak NOTICE README.platforms test
Apache.dsw BuildBin.dsp configure httpd.dsp InstallBin.dsp LICENSE NWGNUmakefile ROADMAP VERSIONING
apache_probes.d buildconf configure.in httpd.mak LAYOUT Makefile.in os server
每一个源码包都会有一个说明文档。比如这个包中就有一个README(自述文档),还有一个常用的就是install(安装文档)。
我们每安装一个源码包最好都要读一下他的安装文档,比如apache这个安装文档
$ ./configure --prefix=PREFIX
$ make
$ make install
前三步是apache的安装步骤。
$ PREFIX/bin/apachectl start
最后一步是启动程序。
后续还还有很多的源码包都是这样安装的。

现在我们来安装一下apace2
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/apache2(首先确定路径)
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure:
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... no
configure: error: APR not found. Please read the documentation.
到这里我们发现安装报错了,这里有一个小技巧,如果我们看不出上一条命令是否对,那么我们就用echo $?来查看
[root@localhost httpd-2.4.29]# echo $?
1
如果是非0的,那就说明我们上一条命令是错的,所以我们上一条的命令是错的
还有一个技巧,就是在我们安装时,如果报错checking for xxx... no,就说明这个程序没有安装,从上面可以看到checking for APR... no这个程序没有被安装,那我们就先用yum安装apr这个包。
[root@localhost httpd-2.4.29]# yum install -y apr
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile

  • epel: mirrors.ustc.edu.cn
    软件包 apr-1.4.8-3.el7_4.1.x86_64 已安装并且是最新版本
    无须任何处理
    这里提示我们的apr安装包已经安装,但是安装依然不成功
    [root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/apache2
    checking for chosen layout... Apache
    checking for working mkdir -p... yes
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking target system type... x86_64-pc-linux-gnu
    configure:
    configure: Configuring Apache Portable Runtime library...
    configure:
    checking for APR... no
    所以我们要从新下载这个包,用wget来下载,用法是wget+下载的网址,下载完成后后我们将它解压安装,安装的步骤和apache一样,首先都要确实路径,比如我们将apr安装到/usr/src/下
    [root@localhost httpd-2.4.29]# ./configure --prefix=/usr/src/apr
    然后make && make install
    然后我们安装apr-util,但是这时我们要在./configure --prefix=/usr/src/apr-util 后面添加一行字符串 --with-apr=/usr/apr ,才能顺利安装,步骤和上面一样,但是我们安装这里的时候需要安装一个gcc包
    [root@localhost httpd-2.4.29]# yum install -y gcc
    然后我们继续安装apr-util,步骤和上面一样。
    然后我们继续回到apache安装,但是它还可能报错缺少pcre,然后我们继续按照上面的方法安装,这时后面要加两个--with,然后接上刚才安装的apr和apr-uilt 的安装绝对路径,这样就可以继续安装了。详情可以参考这里http://blog.csdn.net/moqiang02/article/details/19606019
    当这三部全部完成后,我们还是回到apache,继续安装,后面还是接apr和apr-uilt。
    每一步安装完成后我们用echo $?来查看是否出错,一般前两部没有错的话第三部都不回出错的。

安装完成后,我们可以得到很多的目录
[root@localhost httpd-2.4.29]# ls /usr/local/apache2
bin build cgi-bin conf error htdocs icons include logs man manual modules
用rpm包安装时他会有几个文件或者几个目录,而且要把这几个文件和目录分撒到各个目录下。而我们安装源码包时可以指定目录,那就意味如果我么们不想要卸载这个包就直接删除这个目录就可以。还有一点我们要注意的是如果我们要下载源码包,一定要去官方或者可信的地方去下载,如r.aminglinux.com。其他站点的源码包容易出现***病毒,所以一定要谨慎下载。