Linux包管理:源码安装
跳到导航
跳到搜索
关于
Linux下程序大都是由以下几部分组成:
内容 | 路径 |
---|---|
二进制文件 | /usr/local/bin |
库文件 | /usr/local/lib |
配置文件 | /usr/local/etc |
帮助文档 | /usr/local/man |
- /bin、/lib、/etc 中保存了系统基础的、大部分程序都会用到的内容;
- /usr 是很多用户程序的默认安装路径;
- /opt(默认为空)安装额外软件可以放在这个里面【?比如Oracle】
安装步骤
安装的具体步骤:
# 解压源码包
$ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)
# 定位到源文件
$ cd XXXX
# 环境检测
$ ./configure --prefix=?
# 源码编译
$ make
# 安装
$ make install
清理安装后的临时文件:
$ make clean
卸载软件:
# make uninstall
安装过程
解压源码包
最常见源码包的就两种(XXXX.tar.gz or XXXX.tar.bz2),其实这些源码包都是由2个工具压缩而成的: tar.gz结尾的文件用到的工具是tar和gunzip, 而tar.bz2结尾的文件所使用的工具是tar和bzip2, 之所以这样做是因为,tar仅仅能够打包多个文件但是没有压缩的功能,而gz和bz2却刚好相反,仅能够压缩单个文件,这样我们常见的源码包实际上是通过tar先将不同的源文件打包,然后再通过gunzip或者bzip2压缩后发布的,当然这两个步骤可以通过一条命令实现: tar zcvf XXXX.tar.gz XXXX (or tar jcvf XXXX.tar.bz2 XXXX)
解压的相关命令如下:
$ tar -zxvf xxxx.tar.gz
$ tar -jxvf xxxx.tar.bz2
- -z:通过gzip指令处理备份文件
- -x:从备份文件中还原文件
- -v:显示指令执行过程
- -j:通过bzip2指令处理备份文件
- -f:指定备份文件
- -c:建立新的备份文件
./configure
关于“./configure”:
- configure实际上是一个脚本文件,在当前目录中键入“./configure,shell”就会运行当前目录下的configure脚本;
- configure仅做编译相关的准备工作,执行后将生成MakeFile文件;
- 设置编译特性
- 检查编译环境
- (configure前应该阅读源码目录中的README、INSTALL文件,涉及到安装中的注意事项)
- 可以键入“./configre –help”获取具体的信息;
设置软件的安装目录:
$ cd xxxx
$ ./configure --prefix=/opt/xxxx
- 常用的安装路径:“/usr/local/xxxx”、“/opt/xxxx”
检查configure返回结果,为0代表运行成功:
$ echo $?
0
make
关于编译相关:
- (Makefile文件,简单来说包括了一组文件依赖关系以及编译链接的相关步骤)
- make只是一个通用的工具,并不做编译链接工作,而会根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件;(编译)
- 最后再使用链接器生成最终的可执行程序;(链接)
编译源码:
$ make
检查是否编译成功,为0代表运行成功:
$ echo &?
0
make install
关于make install:
- (普通用户如果没有相关目录的操作权限,可以临时切换到root)
- “install”只是Makefile文件中的一个标号,“make install”代表着make工具执行Makefile文件中“install”标号下的所有相关操作;
- 如果在configure阶段没有使用”–prefix=/opt/XXX”指定应用程序的安装目录,那么应用程序一般会被默认安装到/usr/local/bin;
- (如果/usr/local/bin已经存在于您的PATH中,那么安装完成不用再进行环境等的配置)
开始安装
$ make install
后续
关于“make clean”与“make uninstall”:
- “clean”和“uninstall”同“install”一样,也是Makefile文件中相应的两个标号,执行这两个步骤的时候Makefile文件必须存在;
- “make clean”用来清除编译连接过程中的一些临时文件;
- “make uninstall”是卸载相关应用程序,也需要切换到root执行;
配置过程
PATH环境变量
修改PATH环境变量,以能够识别此程序的二进制文件路径:
- 修改/etc/profile文件,在文件中添加:
export PATH=$PATH:/path/to/somewhere
- “/path/to/somewhere”替换为可执行文件所在的目录;
- 然后执行命令,以使修改生效:
$ source /etc/profile
增加库文件路径
- 有的程序不提供库文件,则不需要此设置;
默认情况下,系统搜索库文件的路径“/lib”、“/usr/lib”,要增添额外搜寻路径:
- 在“/etc/ld.so.conf.d/”中创建以“.conf”为后缀名的文件,而后把要增添的路径直接写至此文件中,如“mysql.conf”:
/www/server/mysql/lib
- 然后执行如下命令使其生效:
$ ldconfig
增加头文件路径
- 如果程序提供了库文件,也会相应的提供头文件,一般在安装目录的include目录下;
系统默认扫描头文件的路径是:“/usr/include”,要增加额外搜索路径:
- 在“/usr/include”下用链接连接到我们安装程序的头文件:
ln -s /opt/xxxx/include /usr/include/xxxx