在Linux、BSD系统中,软件包主要以两种形式出现:二进制包以及源代码包。
之前一直说的rpm包就是属于二进制包,也就是已经编译好的软件包.
这里说源代码包则主要适用于自由软件的安装,用户需要自己编译它们。
rpm包的安装路径
通过参数prefix指定rpm软件包的安装路径:
rpm -ivh MySQL-devel-5.6.16-1.rhel5.x86_64.rpm –prefix=/root/mysql
error: package MySQL-server is not relocatable
官方是这么说的:RPM能够给用户一些决定在其系统上安装软件包的空间。但是,软件包构建者必须首先设计软件包才能为用户提供自由。换句话说,可以安装到不同目录的RPM包被认为是可重定位的。请注意,并非所有RPM软件包都可以安装到另一个目录中。这里MySQL-devel-5.6.16-1.rhel5.x86_64.rpm就是一个不能指定安装路径的rpm包.
源码包的的安装路径
关于源码包的安装路径,是建议大家安装时,指定其路径的,主要因为源码安装软件包,没有卸载命令,如果不指定其安装路径,会在Linux先安装得到处都是,卸载麻烦,如果我们在安装的时候指定其安装路径,只需要将其安装目录删除,该软件就卸载干净了.
关于软件的启动
rpm包安装后,其服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpd start Linux标准启动方式
service httpd start Service是Redhat系统的启动服务
而源码安装的软件只能通过Linux标准启动方式,来启动,但是也不排除在源码安装后人为将启动文件放在/etc/rc.d/init.d/
系统的服务查找目录下来通过服务启动.
安装c语言编辑器
yum -y install gcc
yum -y install gcc-c++
yum install make
或者使用安装软件组的方式安装
yum groupinstall "Development Tools"
安装wget工具
yum -y install wget
下载需要安装的软件包的源码包.
wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.2.32.tar.gz
源码包保存的位置 (建议)
/usr/local/src
软件安装位置: (建议)
/usr/local/
如何确定安装过程报错:
安装过程停止
出现error,warning,no的提示.
一般是我们手动指定安装在/usr/local
下,相当于windows下是Program Files
,这是一种安装习惯,当然我们也可以指定我们自己熟悉的任意路径.
注意: 源码包一定要指定安装路径,因为源码包没有卸载命令.
习惯安装: /usr/local/
基本上每一个源码包解压后都目录下面都有configure命令,它用于软件的配置和环境的检测.
./configure --help
查看所有的configure参数帮助
1.完成准备工作
准备gcc环境
下载需要的源码包
2.解压下载的源码包
tar -zxvf httpd-2.2.32.tar.gz
3.进入解压缩后释放的目录
cd httpd-2.2.32
4.定义需要的功能和选项
./configure --prefix=/usr/local/apache2
软件的目录不需要手动建立,该命令会自动建立所指定的目录,执行该命令后在当前目下回生成一个Makefile文件,后续的make 和make install 就是依赖于这个文件.
prefix参数指定的是软件的安装路径.
5.编译
make
make install
或者
make && make install
关于出错
make
当在make编译出错时: 可以使用 make clean
清除缓存文件,还原安装环境再编译.
make install
当 make install 报错的时候,不仅要 make clean
还要删除已经产生的安装文件,这里是
/usr/local/apache2
源码包安装的服务是不能被服务命令(service)管理的,因为没有安装到默认路径中.所以只能用绝对路径进行服务的管理,如:(具体怎么启动每个源码包安装说明都写有操作说明.)
每一个源码包,解压后的目录下都有一个INSTALL文件,该文件就是该软件的安装说明.
这里摘一小段内容说明下:
For complete installation documentation, see [ht]docs/manual/install.html or
http://httpd.apache.org/docs/2.2/install.html
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
这里的PREFIX 指代的是我们安装的软件时,指定的安装路径,通过PREFIX/bin/apachectl start
,我们可以知道该软件的启动方式为我们自己指定安装软件路径的bin目录下的apachectl 文件就是apache的启动文件.
Linux下标准启动方式:
绝对路径的方式来启动软件的服务.
启动apache2:
/usr/local/apache2/bin/apachectl start
服务的启动方式:
源码包安装的软件,默认是不支持Service服务的启动方式的,但是如果我们将该软件的启动文件拷贝到Service服务的查找目录/etc/rc.d/init.d/
下就可以实现Service的启动的方式.
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/
启动命令:
service apachectl start
小细节:
启动apache后,要打开80端口,嫌麻烦可以直接关闭防火墙:
systemctl stop firewalld
然后在浏览器中输入该机的ip,浏览器显示结果It works!
apache启动成功,能正常访问.
源码包安装软件时一定要指定安装路径,因为源码包没有卸载命令,所以针对源码包的卸载也只能是手动的相关文件rm;如果在安装时通过–prefix=XXX来指定了安装路径,直接将该路径下的文件rm -rf
既可将软件卸载.