linux 源码包安装方法详解
其实,在linux下面安装一个源码包是最常用的, 在日常的管理工作中,大部分软件都是通过源码安装的。安装一个源码包, 是需要我们自己把源代码编译成二进制的可执行文件。
如果你读得懂这些源代码, 那么你就可以去修改这些源代码自定义功能, 然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能, 因为源码包在编译的时候是可以附加额外的选项的。
源码包的编译用到了linux系统里的编译器, 常见的源码包一般都是用C语言开发的, 这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc, 利用它就可以把C语言变成可执行的二进制文件。
所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。
安装一个源码包,通常需要三个步骤:
1)./configure
在这一步可以定制功能, 加上相应的选项即可, 具有有什么选项可以通过 ./configure --help 命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库, 因为一旦缺少某个库就不能完成编译。
只有检测通过后才会生成一个Makefile文件。
其中--prefix指的是安装路径, --with指的是安装本文件所依赖的库文件
2) make
使用这个命令会根据Makefile文件中预设的参数进行编译, 这一步其实就是gcc在工作了。
3) make install
安装步骤, 生成相关的软件存放目录和配置文件的过程。
上面介绍的3步并不是所有的源码包软件都一样的, 安装步骤并不是这样, 也就是说源码包的安装并非具有一定的标准安装步骤。
这就需要你拿到源码包解压后, 然后进入到目录找相关的帮助文档, 通常会以INSTALL或者README为文件名。所以, 你一定要去看一下。
Linux下config/configure/Configure、make、make test/make check、sudo make install的作用
config / configure / Configure
这个是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC, 并不是需要CC或GCC, 它是个shell脚本
这一步一般用来生成 Makefile, 为下一步的编译做准备, 你可以通过在 configure 后加上参数来对安装进行控制, 比如:
./configure --prefix=/usr
上面的意思是将该软件安装在 /usr 下面
执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin)
资源文件就会安装在 /usr/share (而不是默认的/usr/local/share)
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定
还有诸如:--with、--enable、--without、--disable 等等参数对编译加以控制, 你可以通过 ./configure --help 察看详细的说明帮助
make
这一步是用来编译的, 它从Makefile中读取指令, 然后编译
这一步就是编译, 大多数的源代码包都经过这一步进行编译
当然有些perl或python编写的软件需要调用perl或python来进行编译
如果 在 make 过程中出现 error, 你就要记下错误代码(注意不仅仅是最后一行), 然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址), 或者你的系统少了一些依赖库等, 这些需要自己仔细研究错误代码。
加参数 -j 用于优化多核、多线程的编译过程
make test / make check
顾名思义, 这一步就是对上一步 make 的检查了, 要确保 make 是没有错误的, 也就是这一步的 test、check要全部是 OK 的, error为 0
sudo make install / make install
这一步是用来安装的, 它也从Makefile中读取指令,安装到指定的位置
这条命令来进行安装,一般需要你有 root 权限(因为要向系统写入文件), 所以前面用了 sudo 。
在进行源代码编译, 或者执行命令无法确认所执行的命令是否成功执行的情况下, 我们都会使用 echo $? 来进行测试。
如果返回值是0, 就是执行成功; 如果是返回值是0以外的值, 就是失败。 此方法适用于./configure make make install等命令
> # echo $?
0
源码包安装的方式遵循的最基本原则:
configure(配置) make(编译) make install(安装)哪个环节错误, 需要将文件删除后重新配置、编译、安装
每一个步骤都要使用 echo $? 测试, 以确保准确无误。
卸载软件
两种方式:
在安装的目录直接删除
rm -rf 安装的目录
在解压安装目录中执行(少数软件支持: 如:pcre)
make uninstall
安装编译工具gcc
yum install gcc
yum install gcc-c++
重新编译需要清理上次编译的信息
make clean
实例: 安装apache软件
1 下载一个源码包
下载地址: http://httpd.apache.org/download.cgi#apache24
下载源码包一定要去官方站点去下载, 不要在网上随便下载, 那样很不安全。因为你下载到的源码包很有可能是被人修改过的。
[root@localhost src]# cd /usr/local/src/
[root@localhost src]# wget http://apache.etoak.com/httpd/httpd-2.2.24.tar.bz2
2 解压源码包
[root@localhost src]# tar -jxvf httpd-2.2.24.tar.bz2
3 配置相关的选项, 并生成Makefile
[root@localhost src]# cd httpd-2.2.24
[root@localhost httpd-2.2.24]# ./configure --help |less
使用 ./configure --help 命令查看可以使用的选项。一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里。
[root@localhost httpd-2.2.24]# ./configure --prefix=/usr/local/apache2
不幸的是, 安装一开始就报错了, 因为没有gcc编译器, 需要先安装一下。
[root@localhost httpd-2.2.24]# yum install -y gcc
由于gcc依赖的包很多, 所以安装时间会长一些。安装完后, 再继续上面的步骤。
[root@localhost httpd-2.2.24]# ./configure --prefix=/usr/local/apache2
验证这一步是否成功的命令是:
[root@localhost httpd-2.2.24]# echo $?
0
返回值如果是 "0" 则执行成功, 否则就是没有成功。此时就成功生成 Makefile 了。如果有makefile, 就直接make, 然后make install
[root@localhost httpd-2.2.24]# ls -l Makefile
-rw-r--r-- 1 root root 8954 5月 13 12:02 Makefile
4 进行编译
[root@localhost httpd-2.2.24]# make
-bash: make: command not found
又发生错误了, 提示 "make" 命令没有发现, 解决办法是安装make工具。
[root@localhost httpd-2.2.24]# yum install -y make
继续make
[root@localhost httpd-2.2.24]# make
编译的时候,就会出现类似这么多乱七八糟的信息, 编译的时间比较长, CPU使用率会很高, 这是因为CPU高速计算, 编译完后, 再使用 echo $? 验证一下是否正常成功。
[root@localhost httpd-2.2.24]# echo $?
0
如果是0的话, 就可以执行最后一步了。
5 安装
[root@localhost httpd-2.2.24]# make install
当然你也可以使用 echo $? 看看有没有正确安装, 执行完这一步, 则会在 "/usr/local/apache2" 目录下增加了很多目录。
[root@localhost httpd-2.2.24]# ls /usr/local/apache2/
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
启动Apache服务
shell># /usr/local/apache2/bin/apachectl start/stop/restart
注意:apachectl(字母"l")
到此, apache源码的安装就完成了, 其实在日常的源码安装工作中, 并不是谁都像这样顺利完成安装的, 遇到错误不能完成安装的情况是很多的。
通常都是因为缺少某一个库文件导致的。这就需要你仔细琢磨报错信息或者查看当前目录下的 "config.log" 去得到相关的信息。另外, 如果自己不能解决那就去网上google一下吧, 通常你会得到想要的答案。
安装apache2.4.2出现的问题
apache2.4下载地址: http://mirrors.shuosc.org/apache//httpd/httpd-2.4.29.tar.gz
#./configure --prefix=/usr/local/apache2检查编辑环境时出现:
checking for APR... no
configure: error: APR not found . Please read the documentation
Apache2.4
必须安装APR、APR-Util、PCRE,gcc-c++等包,文档URL地址http://httpd.apache.org/docs/2.4/install.html
解决办法:
1.下载所需软件包:
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.zip
2.编译安装:
yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs
具体步骤如下:
a:解决apr not found问题
[root@xt test]# tar -zxf apr-1.4.5.tar.gz
[root@xt test]# cd apr-1.4.5
[root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr
[root@xt apr-1.4.5]# make && make install
b:解决APR-util not found问题
[root@xt test]# tar -zxf apr-util-1.3.12.tar.gz
[root@xt test]# cd apr-util-1.3.12
[root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config # 注意apr-1-config(数字1)
[root@xt apr-util-1.3.12]# make && make install
c:解决pcre问题
[root@xt test]#unzip -o pcre-8.37.zip # -o 以压缩文件内拥有最新更改时间的文件为准, 将压缩文件的更改时间设成和该文件相同。
[root@xt test]#cd pcre-8.37
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
报错如下, 说需要c++编辑器
configure: error: You need a C++ compiler for C++ support.
执行yum install gcc gcc-c++安装编辑器
[root@xt pcre-8.10]#yum install gcc gcc-c++
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
[root@xt pcre-8.10]#make && make install
4.最后编译Apache时加上:
./configure --prefix=/usr/local/apache2 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--with-pcre=/usr/local/pcre
成功编译完成~
如何查看80端口是否被占用
netstat -tulnp | grep 80
杀死线程
kill 17071
注意:
Apache主进程以root用户身份运行, 而子进程则以较低权限的apache用户身份运行。子进程数量由配置决定。
实例: 安装memcache
1.安装libevent(Memcache用到了libevent这个库用于Socket的处理, 所以还需要安装libevent)
下载地址: http://libevent.org/
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make && make install
# 建立libevent-2.0.so.5到/usr/lib的软连接, 这样memcached运行的时候才能找到libevent库
cd /usr/lib
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 libevent-2.0.so.5 (具体版本根据你安装的版本不同)
2.安装memcached
下载地址: http://memcached.org/downloads
tar zxvf memcached-1.4.20.tar.gz
cd memcached-1.4.20
./configure --prefix=/usr/local/memcached-1.4.20 --with-libevent=/usr/local/libevent
make
make install
3.启动memcached
cd /usr/local/
ln -s memcached-1.4.20 memcached
/usr/local/memcached/bin/memcached -d -p 11211 -u root -c 1024 -m 1024 -l 192.168.112.128
4. 安装PHP支持memcache扩展
cd /root/soft
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make && make install
成功之后会生成PHP支持的扩展模块
ls /usr/local/php-5.4.17/lib/php/extensions/no-debug-non-zts-20100525/
php.ini添加扩展
vim /usr/local/php/etc/php.ini
[memcache]
extension=memcache.so