一、源码包与RPM包的区别
在前面讲软件包简介的时候,说过他们之间的区别。安装之前是概念上的区别,比如说,源码包是开源的,安装更自由,安装完之后效率更高,但是那安装更慢,更容易报错,rpm包是经过编译的,不能看到源代码,但是安装更快,而且报错容易解决,只有依赖性这种东西。这些都是概念上的区别。现在安装之后或者具体开始讲安装,他们两个装上之后,给用户带来最直观的区别就是安装位置。rpm包不需要指定安装位置,会安装在系统默认位置当中,而源码包是人为手工指定安装位置。位置的不同,在后续的管理当中会有一些不同的地方。
1.区别
安装前的区别:概念上的区别(在前面已经说过他们之间的不同)
安装之后的区别:安装位置不同(这篇博客要讲的内容)
2.RPM包安装位置
是安装在默认位置中:rpm包默认安装路径
路径 | 存放的内容 |
---|---|
/etc | 配置文件安装目录 |
/usr/bin | 可执行的命令安装目录 |
/usr/lib | 程序所使用的库函数保存位置 |
/usr/share/doc | 基本的软件使用手册保存位置 |
/usr/share/man | 帮助文档保存位置 |
备注: 这些是绝大多数rpm包安装的位置,遵守这样的规则。这些安装位置是固定的,所有的rpm包会基本遵守于这样的安装位置,而且这个安装位置是写这个rpm包的时候,就已经决定好了 ,一般不建议手工去改这个安装位置。
3.源码包的安装位置
安装在指定位置搭当中,一般是/usr/local/软件名/ ,当然也可以自己手工指定安装位置。习惯放在这个地方/usr/local/软件名 就像Windows建议你把软件安装到C盘或者D盘的program的目录当中的 这个/usr这个目录的作用是Unix系统的资源目录。这有一个local目录,这是本地的意思,这是系统专门为我们准备的,安装外来软件的位置,我们再在这个目录下创建一个软件名,然后软件就放在这个下面,比如源码包的MySQL就会安装在/usr/local/mysql目录下。
4.安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装apache的启动方法:
(1) /etc/rc.d/init.d/httpd start(绝对路径的方式两种包都能用) (2)service httpd start(rpm包专用)
(1) /etc/rc.d/init.d/httpd start(这条命令的详细解读)
提示: 就是因为他们的安装位置不同,所带来他们的影响。最主要的影响,就是服务的管理方法,就是启动、停止、重启动。Linux绝大多数的可执行文件,启动服务的的程序也是可执行文件,都应该使用绝对路径来运行。其实也可以用一些其他的方法,比如环境变量,来简化这样的操作。Linux当中要想启动一个执行文件,应该就是使用绝对路径。环境变量的内容到shell编程中在说。归根结底要想在Linux当中启动一个执行文件,不管这个执行文件是我自己写的,还是系统的命令,还是系统的服务,都应该使用绝对路径。
开始实验: 实验过程截图如下所示
1.启动apache服务
2.打开网页进行测试,在浏览器中输入IP地址 (如果网页显示不出来,请关闭防火墙,下面有注意事项)
注意: 需要把你Linux里的防火墙给关了,不是Windows里面的防火墙。CentOS6中关闭防火墙命令:service iptables stop 如果是其他版本的,自己可以在网上查找。Centos7中关闭防火墙命令 systemctl stop firewalld
3.在/var/www/html/路径下创建html文件写入内容,然后会在网页中显示所写内容
解释: 因为我们的apache是新装的,没有任何的网页保存,看到的是测试页,如果去apache的网页保存位置。刚才用rpm –ql apache查询知道,apache的网站会装在这里,然后进入这里cd /var/www/html/ 进去之后用ls查看没有任何网页。然后我们自己写一个,vi index.html,然后写入内容保存,就可以在网页显示了。
(2)service httpd start(这条命令的详细解读)
这个绝对路径太长了,所以redhat的Linux开发了一个简化命令,service httpd start 这个service在我们启动网络服务,就是重启ip的时候用过,这个命令是Redhat专有的命令,在其他的Linux中并不存在,如果没有service命令,我们只能靠绝对路径来启动。
用的时候有个简单的报错,我们的主机名和127.0.0.1回环ip不能匹配,这个报错是可以解决的,可以通过修改apache文件修改。暂时性放这,再将网络服务的时候在说如何修复,但是这个报错不影响apache的功能。
源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理。举个栗子: /usr/local/apache2/bin/apachectl start 这里的apache可以随便起名,什么都可以,方便你辨识就行。
总结
1. rpm包:可以用绝对路径服务启动,也可以用server系统服务管理命令来管理
源码包:只能用绝对路径来管理,因为安装路径,是人为的指定路径的安装路径。service只能去系统默认的路径进行查询。
2. service的执行过程: service为什么可以执行,service会自动的在/etc/rc.d/init.d/目录下,去找有没有你要启动的服务名(httpd)。有就启动,没有就不启动。
3. 像service这样的系统服务管理命令,会到系统默认的位置当中去搜索相关服务。 所以说service命令是不能管理源码包的安装的。像类似service这样的系统服务管理命令,只能管理rpm包安装时的服务,源码包安装的这种服务不能使用。这是因为安装位置不同,所带来的影响。因为安装路径不同,所以带来的管理方法不同。
4. 源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,所以只能用绝对路径进行服务的管理。