一、概述

  • Linux系统中的软件大都是开源软件,这些软件总是以源码的形式最先发布,之后才会逐渐出现rpm、deb等封装包。下载应用程序的最新源码并编译安装,可以在程序功能、安全补丁等方面得到及时更新

  • 对于RPM格式封装的应用程序,当作者在编译源代码程序的时候,有可能绑定了许多功能,安装时被绑定的其它功能也一并安装到Linux主机上,这样就可能造成一些安全隐患。因为RPM软件包的更新并没有源代码。通过对程序源代码进行重新配置并编译安装后,可以定制更灵活、更丰富的功能

  • 当需要对现有的程序源代码进行适当修改,以便增加新的功能时,也必须释放出该软件的源代码,进行修改后再重新编译安装

二、编译安装

编译安装的基本步骤

  • 解包---tar

    解包,释放出源代码文件

  • 配置---./configure

    该过程的主要作用是生成makefile文件。配置工作通常由源代码目录中的“configure”脚本文件来完成,配置结果将保存到源码目录中的makefile文件中。如果在配置过程中出现错误,通常是缺少相关的依赖软件包所致,一般只需根据提示安装对应的软件即可,“./configure”表示执行当前目录下的configure脚本文件,不同的应用程序其配置参数会存在区别,具体配置参数可以在源代码目录中执行“./configure --help”进行查看,但是有一个“--prefix”参数却是大多数开源软件所通用的,该配置参数用于指定软件包安装的目标文件夹。

    [root@justin nagios-4.0.1]# ./configure -h
    `configure' configures this package to adapt to many kinds of systems.
    Usage: ./configure [OPTION]... [VAR=VALUE]...
    ...
    Installation directories:--prefix=PREFIX         install architecture-independent files in PREFIX[/usr/local/nagios]--exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX[PREFIX]
    ...
    Fine tuning of the installation directories:--bindir=DIR            user executables [EPREFIX/bin]--sbindir=DIR           system admin executables [EPREFIX/sbin]
    ...
    Optional Packages:--with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]--without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)--with-nagios-user=<user>sets user name to run nagios--with-nagios-group=<grp>sets group name to run nagios--with-command-user=<user>sets user name for command access--with-command-group=<grp>sets group name for command access
    ...
    Report bugs to the package provider.
    [root@justin nagios-4.0.1]#

  • 编译---make

将源代码文件转变为二进制可执行程序,编译的过程主要是根据makefile文件中的配置信息,将源代码编译、连接成可执行程序

  • 检测---make test / make check

顾名思义,这一步就是对上一步 make 的检查了,要确保 make 是没有错误的,也就是这一步的 test、check要全部是 OK 的,error 为0;这步可省略

  • 安装---make install

    编译完成以后,就可以执行“make install”命令将软件的执行程序、配置文件等相关文件复制到Linux系统中了,即应用程序的最后“安装”过程

三、源码编译安装程序的卸载

很多source的Makefile都有写uninstall规则,如果原先的source还在,可直接在Souce里make uninstall&&make clean,然后重新configure......如果没有uninstall规则一句一句看Makefile里install部分他都干了些什么,然后挨个删除


编译安装ntfs-3g

[root@justin src]# wget http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2013.1.13.tgz
[root@justin src]# tar zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz -C /usr/local/
[root@justin src]# cd /usr/local/ntfs-3g_ntfsprogs-2013.1.13
[root@justin ntfs-3g_ntfsprogs-2013.1.13]# yum -y install gcc
[root@justin ntfs-3g_ntfsprogs-2013.1.13]# ./configure --prefix=/usr/local/ntfs
[root@justin ntfs-3g_ntfsprogs-2013.1.13]# make && make install
[root@justin ntfs-3g_ntfsprogs-2013.1.13]# ntfs-3g
ntfs-3g: No device is specified.
ntfs-3g 2013.1.13 integrated FUSE 27 - Third Generation NTFS DriverConfiguration type 1, XATTRS are on, POSIX ACLS are off
Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2012 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson
Usage:    ntfs-3g [-o option[,...]] <device|p_w_picpath_file> <mount_point>
Options:  ro (read-only mount), windows_names, uid=, gid=,umask=, fmask=, dmask=, streams_interface=.Please see the details in the manual (type: man ntfs-3g).
Example: ntfs-3g /dev/sda1 /mnt/windows
News, support and information:  http://tuxera.com
[root@justin ntfs-3g_ntfsprogs-2013.1.13]#

转载于:https://blog.51cto.com/ityunwei2017/1321626

RHEL6基础二十四之RHEL软件包管理③源码安装相关推荐

  1. linux下软件包管理-源码包-二进制包

    linux软件包管理   1.软件包分类     源码包     二进制包(rpm包)      2.rpm包命名规则       命名规则:         name-major-minjor-re ...

  2. 《视觉SLAM十四讲》第二版源码slambook2编译调试

    slambook2-master/ch2 编译正常,log如下: slambook2-master/ch2# mkdir build && cd build && cm ...

  3. MFC Windows 程序设计[二十八]之字体样式(附源码)

    MFC Windows 程序设计[二十八]之字体样式 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C ...

  4. linux从源码编译软件,linux软件包管理——源码包编译安装

    做为运维人员来讲,很多时候我们直接使用别人给我们提供的RPM包来安装程序时,总达不到自己理想的效果,第一,编译开启的功能并不是自己想要的:第二,用不上最新的源代码,因为RPM包的源代码总会滞后于最新的 ...

  5. 软件包管理:源码包管理-源码包与RPM包的区别

    RPM会安装在默认位置,源码包会安装在指定位置. 绝大多数ROM包遵循此规范.写软件包是就固定好了. 主要影响体现在对服务的管理方法,服务的管理分三种:启动,重启动,停止. 启动时使用绝对路径来启动. ...

  6. RHEL6基础二十之RHEL文件挂载与卸载

    一.光盘挂载.卸载 在挂载外围设备时一般习惯性地将挂载点放在/mnt目录下,光盘对应的设备文件通常为"/dev/cdrom" [root@justin ~]# mkdir /mnt ...

  7. RHEL6基础三十四之服务器维护基础命令④sort、uniq

    sort 格式:sort [-options] filename[s] 功能:将文件的每一行作为一个单位,相互比较,最后将他们按升序输出,比较原则是从首字符向后,依次按ASCII码值进行比较. 1 2 ...

  8. 【DVWA系列】十四、JavaScript 攻击(源码分析漏洞利用)

    文章目录 DVWA CSP Bypass 绕过浏览器的安全策略 一.Low 级别 二.Medium 级别 三.High 级别 四.Impossible 级别 DVWA CSP Bypass 绕过浏览器 ...

  9. mybaits二十九:mybatis工作原理以及源码分析

    根据配置文件创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build ...

  10. 深入理解Spark 2.1 Core (十四):securityManager 类源码分析

    securityManager主要用于权限设置,比如在使用yarn作为资源调度框架时,用于生成secret key进行登录.该类默认只用一个实例,所以的app使用同一个实例,下面是该类的所有源代码: ...

最新文章

  1. 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)
  2. 华为消息推送 有透传通道吗_华为首款头戴耳机FreeBuds Studio正式发布,能否撑起品牌之名?...
  3. 以主干开发作为持续交付的基础
  4. 数据结构线性表博客作业总结
  5. java遍历树结构数据_Java数据结构——二叉树的遍历(汇总)
  6. 什么是mysql的索引_什么是MySQL索引?【详解】
  7. html页面跳转时导航栏不变_解决Vue-iview封装导航栏刷新,导航栏消失之坑
  8. 接口传值实例DatePickerDialog
  9. 单片机重要组成部分还有什么,引脚封装分布知识讲解(二)
  10. java对象锁的使用
  11. 事务Transaction
  12. Android 集成科大讯飞语音并实现语音识别
  13. Matlab入门1(有手就行)
  14. 【跟我一起学Linux之Ubuntu】-概述与安装配置笔记
  15. 【历史上的今天】8 月 20 日:两位传奇程序员的诞生日!
  16. zeppelin入门使用
  17. H264——H264码流分析实例(SPS、PPS)
  18. Excel 2010 VBA 入门 052 DateAdd函数
  19. 经典面试智力题和解答
  20. 亚洲首台BMD8K切换台开箱

热门文章

  1. python 环形图_Python通过matplotlib画双层饼图及环形图简单示例
  2. debian rabbitmq离线安装_Rabbitmq web-mqtt在debian上的安装
  3. 浅谈算法和数据结构: 四 快速排序
  4. Linux下的Libsvm使用历程录
  5. 【洛谷 P3979】遥远的国度【树链剖分、换根】
  6. 服务器lsass占用内存_服务器内存跑满是什么原因造成的呢?
  7. Raki的读paper小记:FLAT: Chinese NER Using Flat-Lattice Transformer
  8. 刷题记录 CF每日一题打卡 2020.5月26-6月2
  9. vc mysql 连接_vc连接mysql数据库的方法
  10. Robot Framework (一)自动化测试框架搭建