白日放歌须纵酒,青春作伴好还乡。这篇文章主要讲述|NO.Z.00028|——————————|LinuxBasicEnd|——|Linux&软件包安装.V07|——|源码安装|相关的知识,希望能为你提供帮助。
一、源码包安装
### --- 注意事项
### --- 应该选择哪种软件包?~~~如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,
~~~因为源码包效率更高。
~~~如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,
~~~因为rpm包简单。
### --- 源码包是从哪里来的?
~~~rpm包是光盘中直接包含的,所以不需要用户单独下载。而源码包是通过官方网站下载的,
~~~如果需要使用,是需要单独下载的。### --- 是否可以在系统中即安装rpm包的Apache,又安装源码包的Apache?
~~~答案是可以,因为两种安装方法安装的Apache,安装位置是不一样的,例如:
### --- RPM 包:不建议指定安装位置的,建议安装在默认位置(RPM 包安装的服务有标准卸载命令,不怕文件到处安装)
~~~配置文件:/etc/httpd/conf/httpd.conf
~~~网页位置:/var/www/html/
~~~日志位置:/var/log/httpd/
~~~启动方法:1) service httpd restart
~~~2) /etc/rc.d/init.d/httpd restart
~~~源码包:必须制定安装位置(源码包没有安装数据库,没有删除命令)
~~~配置文件:/usr/local/apache2/conf/httpd.conf
~~~网页文件:/usr/local/apache2/htdocs/
~~~日志位置:/usr/local/apache2/logs/
~~~启动方法:/usr/local/apache2/bin/apachectl start
二、安装流程
### --- 生产服务器上,是否会同时安装两种Apache?~~~当然不会啊,因为系统中只有一个80端口,所以你只能启动一个Apache,
~~~装多个只能浪费资源。我们建议安装源码包的Apache。
### --- 安装过程
### --- 我们来解释一下源码包安装的具体步骤。~~~(1)下载软件包。
~~~(2)解压缩。
~~~(3)进入解压目录。
~~~(4)./configure编译前准备
### --- 这一步主要有三个作用:~~~在安装之前需要检测系统环境是否符合安装要求。
~~~定义需要的功能选项。“./configure”支持的功能选项较多,
~~~可以执行“./configure --help”
~~~命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”来指定安装路径。
~~~把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,
~~~后续的编译和安装需要依赖这个文件的内容。
~~~需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,
~~~所以必须采用“./configure”方式执行(“./”代表在当前目录下)。
### --- make~~~编译
~~~make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。
~~~编译的目的就是把源码程序转变为能被 Linux 识别的可执行文件,
~~~这些可执行文件保存在当前目录下。编译过程较为耗时,需要有足够的耐心。
### --- make clean:清空编译内容(非必需步骤)。~~~如果在“./configure”或“make”编译中报错,
~~~那么我们在重新执行命令前一定要记得执行 makeclean 命令,
~~~它会清空 Makefile 文件或编译产生的“.o”头文件。
### --- make install:~~~编译安装
~~~这才是真正的安装过程,一般会写清楚程序的安装位置。
~~~如果忘记指定安装目录,则可以把这个命令的执行过程保存下来,以备将来删除使用。
三、安装流程:实验专题
### --- 系统中安装rpm包apache,现在安装源码包的apache?
### --- 答案:
~~~不会;安装位置不同;所以是在系统中可以安装一个rpm包和源码包;因为rpm有数据库,
~~~有卸载命令;所以不会报错;### --- 有些软件包源码包安装不指定安装位置
### --- 答案:
~~~因为这些软件包依赖底层内核技术;或其他软件依赖;若是改变安装位置;会报错。
~~~还有就是依赖底层内核,文件很小。不会有太大的影响;所以不指定位置代价最小。
### --- 将apache的源码包上传至服务器[root@server11 ~]# ls
httpd-2.2.9.tar.gz
[root@server11 ~]# tar -zxvf httpd-2.2.9.tar.gz
[root@server11 ~]# cd httpd-2.2.9/
### --- 安装apache服务
[root@server11 httpd-2.2.9]# ./configure// ./:当前目录下;因为configure不是系统命令,而是源码包命令,需要路径调用~~~在安装前需要检查系统换机是否符合安装要求
~~~定义需要的功能选项./config --help
~~~把系统换机的检测结果和定义好的功能选项写入到Makefile中,
~~~后出的安装都是从Makefile文件依赖进行
[root@server11 httpd-2.2.9]# ./configure --prefix=/usr/local/apache2/
configure: error: C compiler cannot create executables
### --- 报错后需要执行make clean:清空编译生成的临时文件(非必须步骤)
### --- 源码报错:
~~~安装过程必须停止
~~~查看是否no,warning,error关键字说明报错[root@server11 httpd-2.2.9]# yum install -y gcc*
[root@server11 httpd-2.2.9]# ./configure --prefix=/usr/local/apache2/
### --- 编译:make
[root@server11 httpd-2.2.9]# make~~~./config和make不会向硬盘或系统中写入任何数据,只有在make install才会写入数据,
~~~./config和make报错执行make clean清除缓存即可,make install若是报错,
~~~需要删除安装目录。
[root@server11 httpd-2.2.9]# make install
### --- 启动apache[root@server11 ~]# /usr/local/apache2/bin/apachectl start
httpd: Could not reliably determine the servers fully qualified domain name, using fe80::820d:b26d:3507:5834 for ServerName
### --- 报错:
~~~不能解析完整主机名;可以认为是正常启动
~~~怎么确定启动的是rpm包启动还是源码包启动[root@server11 ~]# ps aux |grep httpd
root254770.00.1574322008 ?Ss22:250:00 /usr/local/apache2//bin/httpd -k start
daemon254780.00.0595161356 ?S22:250:00 /usr/local/apache2//bin/httpd -k start
daemon254790.00.0595161356 ?S22:250:00 /usr/local/apache2//bin/httpd -k start
daemon254800.00.0595161356 ?S22:250:00 /usr/local/apache2//bin/httpd -k start
daemon254810.00.0595161356 ?S22:250:00 /usr/local/apache2//bin/httpd -k start
daemon254820.00.0595161356 ?S22:250:00 /usr/local/apache2//bin/httpd -k start
root254940.00.0 112816976 pts/0S+22:270:00 grep --color=auto httpd
### --- 访问一下apache
http://10.10.10.11/// 输出:It works!### --- 查看网页文件是
[root@server11 ~]# cat /usr/local/apache2/htdocs/index.html
<
html>
<
body>
<
h1>
It works!<
/h1>
<
/body>
<
/html>
// It works!的编译规则
### --- 删除~~~源码包没有删除命令,如果需要删除,直接删除安装目录即可。
四、打入补丁
### --- 补丁的生成
### --- 比较 old 和 new 文件的不同
~~~选项:
~~~-a将任何文档当做文本文档处理
~~~-b忽略空格造成的不同
~~~-B忽略空白行造成的不同
~~~-I忽略大小写造成的不同
~~~-N当比较两个目录时,如果某个文件只在一个目录中,则在另一个目录中视作空文件
~~~-r当比较目录时,递归比较子目录
~~~-u使用同一的输出格式[root@localhost ~]# diff 选项 old new
### --- 举例
[root@localhost ~]# mkdir test
~~~建立测试目录
[root@localhost ~]# cd test
### --- 进入测试目录
[root@localhost test]# vi old.txt
our
school
is
atguigu### --- 文件 old.txt,为了一会输出便于比较,每行分开
[root@localhost test]# vi new.txt
our
school
is
atguigu
in
Beijing~~~文件 new.txt
~~~比较下两个文件的不同,并生成补丁文件“txt.patch”,命令如下:
[root@localhost test]# diff -Naur /root/test/old.txt /root/test/new.txt >
txt.patch
### --- 比较两个文件的不同,同时生成 txt.patch 补丁文件[root@localhost test]# vi txt.patch
~~~查看下这个文件
--- /root/test/old.txt 2012-11-23 05:51:14.347954373 +0800
~~~前一个文件
+++ /root/test/new.txt 2012-11-23 05:50:05.772988210 +0800
~~~后一个文件
~~~后一个文件比前一个文件多两行(+表示)
@@ -2,3 +2,5 @@
school
is
atguigu
+in
+beijing
【|NO.Z.00028|——————————|LinuxBasicEnd|——|Linux&软件包安装.V07|——|源码安装|】五、打入补丁
### --- 按照补丁文件进行更新
~~~选项:
~~~-pn n 为数字。代表按照补丁文件中的路径,指定更新文件的位置。
~~~“-pn”不好理解,我们说明下。补丁文件是要打入旧文件的,
~~~但是你当前所在的目录和补丁文件中的记录的目录是不一定匹配的,
~~~所以就需要“-pn”来同步两个目录。
~~~比如我当前是在“/root/test”目录中(我要打补丁的旧文件就在当前目录下),
~~~补丁文件中记录的文件目录为“/root/test/old.txt”,
~~~这时如果写入“-p1”(在补丁文件目录中取消一级目录)
~~~那么补丁文件就会打入“/root/test/root/test/old.txt”文件中,这显然是不对的。
~~~那如果写入的是“-p2”(在补丁文件目录中取消二级目录)
~~~那么补丁文件打入的就是“/root/test/test/old.txt”,
~~~这显然也不对。如果写入的是“-p3”(在补丁文件目录中取消三级目录)
~~~那么补丁文件就是打入的“/root/test/old.txt”,
~~~我们的 old.txt 文件就在这个目录下,所以就应该是“-p3”。
~~~那么我们更新下“old.txt”文件,命令如下:[root@localhost test]# patch –pn <
补丁文件
[root@localhost test]# patch -p3 <
txt.patch
patching file old.txt
### --- 给 old.txt 文件打补丁
[root@localhost test]# cat old.txt### --- 查看下 old.txt 的内容吧。
### --- 多出来了 in Beijing 两行
our
school
is
atguigu
in
Beijing
六、实验专题
### --- 准备实验[root@server11 ~]# mkdir test
[root@server11 ~]# cd test/
[root@server11 test]# vim old.txt
[root@server11 test]# cp -a old.txt new.txt
[root@server11 test]# ls
new.txtold.txt
[root@server11 test]# vim new.txt
### --- 对比新旧文件生成补丁文件[root@server11 test]# diff -Naur /root/test/old.txt /root/test/new.txt >
pat.txt
[root@server11 test]# cat pat.txt
--- /root/test/old.txt2021-03-09 22:36:34.266894477 +0800// 文件的内容少,用减号
+++ /root/test/new.txt2021-03-09 22:37:02.720893976 +0800// 文件的内容多,用加号
@@ -2,3 +2,5 @@// 对比结果,新文件多出两行用加号表示
111111111111111111111
222222222222222222222
333333333333333333333
+444444444444444444444
+555555555555555555555
### --- 打入必定文件[root@server11 test]# patch -p3 <
pat.txt// -pn:是调整路径
patching file old.txt
### --- 查看old.txt文件[root@server11 test]# cat old.txt;和new文件一致
aaaaaaaaaaaaaaaaaaaaa
111111111111111111111
222222222222222222222
333333333333333333333
444444444444444444444
555555555555555555555
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warmd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
推荐阅读
- |NO.Z.00006|——————————|^^构建^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V2|
- |NO.Z.00001|——————————|^^构建^^|——|Nginx&Nginx常见报错&解决方案|
- |NO.Z.00027|——————————|LinuxBasicEnd|——|Linux&软件包安装.V06|——|rpm在线|本地YUM|
- |NO.Z.00003|——————————|^^构建^^|——|Nginx&Nginx.V1.16&部署&降级&升级.V2|
- |NO.Z.00001|——————————|LinuxBasicEnd|——|Linux&行业介绍|
- |NO.Z.00004|——————————|^^构建^^|——|Nginx&Nginx.V1.16&部署&降级&升级.V3|
- |NO.Z.00005|——————————|LinuxBasicEnd|——|Linux&目录结构.V2|
- |NO.Z.00002|——————————|^^构建^^|——|Nginx&Nginx.V1.16&部署&降级&升级.V1|
- |NO.Z.10000|——————————|WebNginxIng|