从源代码安装应用程序


付费阅读

并非所有的应用程序都有 RPM 软件包,或者说某个软件的 RPM 包并不适合你,当遇到这些情况时,还可以从通过软件的源代码对应用程序进行安装。

并非所有的应用程序都有 RPM 软件包,或者说某个软件的 RPM 包并不适合你,当遇到这些情况时,还可以从通过软件的源代码对应用程序进行安装。

源代码通常使用 tar, gzip 或者 bz2 等软件进行了归档打包,因此归档文件的常见后缀有 .tar、.tar.gz、tar.bz2

 

使用源代码进行安装的基本步骤:

  1. 下载要安装的源代码归档文件,如 abc-1.0.0.i386.tar.gz;
  2. 抽取归档文件内容。建议将归档文件解开到 /usr/local/src/ 目录,解开后会在 /usr/local/src/ 目录下生成一个以软件包名称命名的目录,如 abc-1.0.0;
  3. 进入软件包目录;
  4. 查看 INSTALL 或 README 文档,然后遵循文档中的介绍进行安装

如果没有 INSTALL 或者 README 文档,通常通过运行以下三个命令进行源代码的编译与安装:

[root@hope src]# ./configure --prefix=/usr/local/[软件包名称]
……
[root@hope src]# make
……
[root@hope src]# make install
……

以下以 abc-1.0.0.i386.tar.gz 包为例,演示从源代码安装应用程序的全部过程。(实际上并没有这个软件包,只是为了演示随便取的名字,重点在于说明安装的过程)

  1. [lugir@hope ~]$ su
  2. 密码:
  3. [root@hope lugir]# cd /usr/local/src/
  4. [root@hope src]# tar xfj /home/lugir/Download/abc-1.0.0.tar.gz
  5. [root@hope src]# ls
  6. abc-1.0.0
  7. [root@hope src]# cd abc-1.0.0
  8. [root@hope abc-1.0.0]# ls
  9. …… [见说明1]
  10.  
  11. [root@hope abc-1.0.0]# ./configure --prefix=/usr/local/abc
  12. …… [见说明2]
  13.  
  14. [root@hope abc-1.0.0]# make
  15. ……
  16. [root@hope abc-1.0.0]# make install
  17. ……

说明:

  • 第3行 - 切换到 /usr/local/src/ 目录,目的是方便将抽取的内容直接在 /usr/local/src/ 目录下生成;
  • 第4行 - 从归档文件中抽取内容(相关于解压缩)。有关 tar 命令的用法可以使用 "tar --help | less" 查询;
  • 第5行 - 通过查看当前目录的内容,查看是否抽取完成
  • 第6行 - 当前目录下有 abc-1.0.0 目录,说明抽取成功
  • 第7行 - 进入 abc-1.0.0 目录
  • 第8行 - 查看 abc-1.0.0 目录下的内容。通常是寻找 INSTALL 和 README 文档
  • 第9行 - 说明1 - 如果存在 INSTALL 或者 README 文档,使用 "less INSTALL" 或者 "less README" 命令查看文档内容,通常这两个文档都有比较详细的安装说明,建议按照文档的说明进行配置和安装。如果没有这两个文件,才使用后面的默认配置和安装方法。
  • 第11行 - 运行配置文件,并指定 --prefix 选项。默认程序都是安装在 /usr/local/ 目录,如果要卸载的话十分不方便。建议安装时将所有软件都安装在 /usr/local/[软件名] 的目录下,将来要卸载的话,直接删除 /usr/local/[软件名] 这个目录就行了。
  • 第12行 - 说明2 - 尽管已经安装了《从源代码安装应用程序的准备工作》中提到的所有软件包。但安装过程中还是可能会出需要其它包中的文件,此时只要记下相关信息,并使用 "yum search" 和 "yum install" 命令安装上所需要的文件即可。
  • 第14行 - 编译
  • 第16行 - 安装
建议:虽然从源代码安装应用程序的可定制程度很高,但没有 yum 或 rpm 命令那么容易,可能出现的状况也很多。为了尽可能的减少这类问题,新手可以在安装系统时将开发工具统统装上。同时在进行编译安装时对输出内容进行分析学习,增长经验以便能够理解问题出现的原因。