源码包的安装与管理

在上一篇博客中我已经介绍了rpm包的安装与管理,今天我们来说一说源码包的安装与管理。

一、软件包的选择

  • 如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更高。
  • 如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单。
  • 在如今硬件水平的不断提高,这两种软件包安装的效果差距越来越小,还是看自己的选择,追求速度的话可以选择rpm包,更多的功能和扩展可以选择源码包安装。

二、安装过程

(1)下载软件包。
(2)解压缩。
(3)进入解压目录。
(4)./configure 编译前准备 这一步主要有三个作用:

  • 在安装之前需要检测系统环境是否符合安装要求。
  • 定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help” 命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”来指定安装路径。
  • 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,后续的编译和安装需要依赖这个文件的内容。 需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用 “./configure”方式执行(“./”代表在当前目录下)。

(5)make 编译 make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把 源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时,需要有足够的耐心。
(6)make clean:清空编译内容(非必需步骤)。 如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行 make clean 命令,它会清空 Makefile 文件或编译产生的“.o”头文件。
(7)make install: 编译安装 这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个 命令的执行过程保存下来,以备将来删除使用。

三、删除

源码包没有删除命令,如果需要删除,直接删除安装目录即可

四、打补丁

我们可以拿已经修改改过的文件与未修改过的文件进行比较,生成补丁文件,如果不小心误删除文件,可以使用补丁文件进行恢复。

4.1 diff命令介绍
[root@localhost ~]# diff 选项 old new # 比较 old 和 new 文件的不同 
选项:  
-a  将任何文档当做文本文档处理  
-b  忽略空格造成的不同  
-B  忽略空白行造成的不同  
-I  忽略大小写造成的不同  
-N  当比较两个目录时,如果某个文件只在一个目录中,则在另一个目录中视作空文件  
-r  当比较目录时,递归比较子目录  
-u  使用同一的输出格式

举例:

#创建测试目录
mkdir /test

#生成两个文件,new.txt 比 old.txt 多一行内容。
echo  "123" > old.txt
cat old.txt > new.txt
echo "456" >> new.txt

#使用diff命令生成补丁文件 
diff -auNr old.txt new.txt > txt.patch
   
#查看txt.patch,如下
cat txt.patch 
--- old.txt	2019-11-30 09:40:57.191124425 +0800
+++ new.txt	2019-11-30 09:41:11.814004591 +0800
@@ -1 +1,2 @@
 123
+456

此时我们已经生成了补丁文件,若假如我们不小心删除了new.txt文件,我们可以用patch命令恢复,由于我们使用的是相对路径生成的补丁文件,所以我们需要在刚才的test目录下执行patch命令。

#切换目录
cd /text
#打补丁,此时将old.txt文件内容恢复到与new.txt一样
patch  < txt.patch 

#查看old.txt内容
[root@love2 test]# cat old.txt 
123
456

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...