Linux【8】-软件管理-2-管理的抉择:RPM 还是Tarball

一、管理的抉择:RPM 还是Tarball

这一直是个有趣的问题:『如果我要升级的话,或者是全新安装一个新的软体,那么该选择RPM还是Tarball来安装呢?』,事实上考虑的因素很多,不过鸟哥通常是这样建议的:

1.1 优先选择原厂的RPM功能:

由于原厂释出的软体通常具有一段时间的维护期,举例来说, RHEL与CentOS每一个版本至少提供五年以上的更新期限。这对于我们的系统安全性来说,实在是非常好的选项!何解?既然yum可以自动升级,加上原厂会持续维护软体更新,那么我们的系统就能够自己保持在软体最新的状态,对于资安来说当然会比较好一些的!此外,由于RPM与yum具有容易安装/移除/升级等特点,且还提供查询与验证的功能,安装时更有数位签章的保护,让你的软体管理变的更轻松自在!因此,当然首选就是利用RPM来处理啦!

1.2 选择软体官网释出的RPM或者是提供的软体库网址:

不过,原厂并不会包山包海,因此某些特殊软体你的原版厂商并不会提供的!举例来说CentOS就没有提供NTFS的相关模组。此时你可以自行到官网去查阅,看看有没有提供相对到你的系统的RPM档案,如果有提供软体库网址,那就更好啦!可以修改yum设定档来加入该软体库,就能够自动安装与升级该软体!你说方不方便啊!

1.3 利用Tarball安装特殊软体:

某些特殊用途的软体并不会特别帮你制作RPM档案的,此时建议你也不要妄想自行制作SRPM来转成RPM啦!因为你只有区区一部主机而已,若是你要管理相同的100部主机,那么将原始码转制作成RPM就有价值!单机版的特殊软体,例如学术网路常会用到的MPICH/PVM等平行运算函式库,这种软体建议使用tarball来安装即可,不需要特别去搜寻RPM啰!

1.4 用Tarball测试新版软体:

某些时刻你可能需要使用到新版的某个软体,但是原版厂商仅提供旧版软体,举例来说,我们的CentOS主要是定位于企业版,因此很多软体的要求是『稳』而不是『新』,但你就是需要新软体啊!然后又担心新软体装好后产生问题,回不到旧软体,那就惨了!此时你可以用tarball安装新软体到/usr/local底下,那么该软体就能够同时安装两个版本在系统上面了!而且大多数软体安装数种版本时还不会互相干扰的!嘿嘿!用来作为测试新软体是很不错的呦!只是你就得要知道你使用的指令是新版软体还是旧版软体了!

所以说,RPM 与Tarball 各有其优缺点,不过,如果有RPM 的话,那么优先权还是在于RPM 安装上面,毕竟管理上比较便利,但是如果软体的架构差异性太大, 或者是无法解决相依属性的问题,那么与其花大把的时间与精力在解决属性相依的问题上,还不如直接以tarball 来安装,轻松又惬意!

二、基础服务管理:以Apache 为例

我们在17 章谈到systemd 的服务管理,那个时候仅使用vsftpd 这个比较简单的服务来做个说明,那是因为还没有谈到yum 这个东东的缘故。现在,我们已经处理好了网路问题(20 章的内容),这个yum 也能够顺利的使用!那么有没有其他的服务可以拿来做个测试呢?有的,我们就拿网站伺服器来说明吧!

一般来说, WWW 网站伺服器需要的有WWW 伺服器软体+ 网页程式语言+ 资料库系统+ 程式语言与资料库的连结软体等等,在CentOS 上面, 我们需要的软体就有『 httpd + php + mariadb-server + php-mysql 』这些软体。不过我们预设仅要启用httpd 而已,因此等一下虽然上面的软体都要安装, 不过仅有httpd 预设要启动而已喔!

另外,在预设的情况下,你无须修改服务的设定档,都透过系统预设值来处理你的服务即可!那么有个江湖口诀你可以将它背下来~ 让你在处理服务的时候就不会掉漆了~

  1. 安装: yum install (你的软体)
  2. 启动: systemctl start (你的软体)
  3. 开机启动: systemctl enable (你的软体)
  4. 防火墙: firewall-cmd –add-service="(你的服务)"; firewall-cmd –permanent –add-service="(你的服务)"
  5. 测试: 用软体去查阅你的服务正常与否~

底下就让我们一步一步来实验吧!

# 0.先检查一下有哪些软体没有安装或已安装~这个不太需要进行~单纯是鸟哥比较龟毛要先查看看而已!
[root@study ~]# rpm -q httpd php mariadb-server php-mysql 
httpd-2.4.6-31.el7.centos.1.x86_64         #只有这个安装好了,底下三个都没装!
package php is not installed
package mariadb-server is not installed
package php-mysql is not installed

# 1.安装所需要的软体!
[root@study ~]# yum install httpd php mariadb-server php-mysql 
#当然,大前提是你的网路没问题!这样就可以直接线上安装或升级!

# 2. 3.启动与开机启动,这两个步骤要记得一定得进行!
[root@study ~]# systemctl daemon-reload 
[root@study ~]# systemctl start httpd 
[root@study ~]# systemctl enable httpd 
[root@study ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled )
   Active: active (running) since Wed 2015-09-09 16:52:04 CST; 9s ago
 Main PID: 8837 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─8837 /usr/sbin/httpd -DFOREGROUND

# 4.防火墙 
[root@study ~]# firewall-cmd --add-service="http" 
[root@study ~]# firewall-cmd --permanent --add-service="http" 
[root@study ~ ]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client ftp http https ssh    #这个是否有启动才是重点!
  ports: 222/tcp 555/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="192.168.1.0/24" accept

在最后的测试中,进入图形界面,打开你的浏览器,在网址列输入『 http://localhost 』就会出现如下的画面!那就代表成功了!你的Linux 已经是Web server 啰!就是这么简单!

图22.3.1、服务建立的第五步骤,测试一下有没有成功!

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn