• 源码包的安装与管理


    在上一篇博客中我已经介绍了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
    
  • 相关阅读:
    拷贝某文件至某位置
    Java对象的序列化和反序列
    常见的RuntimeException异常有哪些
    array数组增删元素
    失眠怎么办
    构造函数和函数区别(关键的new操作符)
    匿名函数递归(arguments.callee)和命名函数递归
    localeCompare方法在chrome浏览器取值问题
    random()方法
    iframe 父子页面之间取值
  • 原文地址:https://www.cnblogs.com/hjnzs/p/11961335.html
Copyright © 2020-2023  润新知