Linux——YUM在线升级机制

yum是透过分析rpm的标头资料后,根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装、移除、升级问题。由于 distribution 必须要先释出软件,然后将软件放置于 yum 服务器上面,以提供客户端来要求安装与升级之用的。 因此我们想要使用 yum 的功能时,必须要先找到适合的 yum server 才行啊!而每个 yum server 可能都会提供许多不同的软件功能,那就是我们之前谈到的『软件库』啦!因此,你必须要前往 yum server 查询到相关的软件库网址后,再继续处理后续的设定事宜。

1、利用yum进行查询、安装、升级、移除

<1>查询

[root@study ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
[option]:主要的选项,包括有:
 -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
 --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
[查询工作项目] [相关参数]:这方面的参数有:
 search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
 list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
 info :同上,不过有点类似 rpm -qai 的执行结果;
 provides:从文件去搜寻软件!类似 rpm -qf 的功能!
范例四:列出目前服务器上可供本机进行升级的软件有哪些?
[root@study ~]# yum list updates <==一定要是 updates 喔!
Updated Packages
NetworkManager.x86_64 1:1.0.0-16.git20150121.b4ea599c.el7_1 updates
NetworkManager-adsl.x86_64 1:1.0.0-16.git20150121.b4ea599c.el7_1 updates
....(底下省略)....
# 上面就列出在那个软件库内可以提供升级的软件与版本!
范例五:列出提供 passwd 这个文件的软件有哪些
[root@study ~]# yum provides passwd
passwd-0.79-4.el7.x86_64 : An utility for setting or changing passwords using PAM
Repo : base
passwd-0.79-4.el7.x86_64 : An utility for setting or changing passwords using PAM
Repo : @anaconda
# 找到啦!就是上面的这个软件提供了 passwd 这个程序!

<2>安装/升级

[root@study ~]# yum [option] [安装与升级的工作项目] [相关参数]
选项与参数:
 install :后面接要安装的软件!
 update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
范例一:将前一个练习找到的未安装的 pam-devel 安装起来
[root@study ~]# yum install pam-devel

<3>移除

[root@study ~]# yum remove 软件名

2、yum的配置文件

[hadoop1@hadoop1 yum.repos.d]$ vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

· [base]:代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表文件。
· name:只是说明一下这个软件库的意义而已,重要性不高!
· mirrorlist=:列出这个软件库可以使用的映射站台,如果不想使用,可以批注到这行;
· baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去捉映像站台, baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到这里来啦!
· enable=1:就是让这个软件库被启动。如果不想启动可以使用 enable=0 喔!
· gpgcheck=1:还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 文件内的数字签名!
· gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可

范例一:列出目前 yum server 所使用的软件库有哪些?
[root@study ~]# yum repolist all

<1>修改软件库产生的问题与解决方法

由于是修改系统默认的配置文件,我们应该在/et/yum.repos.d/下建立新的扩展名为.repo的文件,因为我们使用的是指定的映像站台,而不是其他软件开发商提供的软件库。因此才修改默认配置文件,由于使用的软件库有新旧之分,yum会下载软件库的清单到本机的/var/cache/yum里面,我们修改了网址却没有修改软件库名称,可能导致本机列表与yum服务器列表不同步,此时就会出现无法更新的问题。所以需要清除本机上的旧数据。

[root@study ~]# yum clean [packages|headers|all] 
选项与参数:
packages:将已下载的软件文件删除
headers :将下载的软件文件头删除
all :将所有软件库数据都删除!
范例一:删除已下载过的所有软件库的相关数据 (含软件本身与列表)
[root@study ~]# yum clean all

3、yum的软件群组功能

[root@study ~]# yum [群组功能] [软件群组]
选项与参数:
 grouplist :列出所有可使用的『软件群组组』,例如 Development Tools 之类的;
 groupinfo :后面接 group_name,则可了解该 group 内含的所有软件名;
 groupinstall:这个好用!可以安装一整组的软件群组,相当的不错用!
 groupremove :移除某个软件群组;
[root@study ~]# yum groupinfo "Scientific Support"    #查询该群组内含软件名

如果想要让 groupinstall 预设安装好所有的 optional 软件呢?那就得要修改配置文件!更改选groupinstall 选择的软件项目即可!

[root@study ~]# vim /etc/yum.conf
.....(前面省略).....
distroverpkg=centos-release # 找到这一行,底下新增一行!
group_package_types=default, mandatory, optional
[root@study ~]# yum groupinstall "Scientific Support"

5、全系统自动升级

透过『 yum -y update 』来自动升级,那个 -y 很重要,因为可以自动回答 yes 来开始下载与安装! 然后再透过 crontab 的功能来处理即可!你可以这样做的:

root@study ~]# echo '10 1 * * * root /usr/bin/yum -y --enablerepo=epel update' > 
/etc/cron.d/yumupdate
[root@study ~]# vim /etc/crontab

从此你的系统就会自动升级啦,此外,你还是得要分析登录档与收集 root 的信件的, 因为如果升级的是核心软件 (kernel),那么你还是得要重新启动才会让安装的软件顺利运作的! 所以还是得分析登录档,若有新核心安装,就重新启动,否则就让系统自动维持在最新较安全的环境

6、管理的选择:RPM、Tarball

(1)优先选择原厂的 RPM 功能:
由于原厂释出的软件通常具有一段时间的维护期,举例来说, RHEL 与 CentOS 每一个版本至少提供五年
以上的更新期限。这对于我们的系统安全性来说,实在是非常好的选项! 何解?既然 yum 可以自动升级,
加上原厂会持续维护软件更新,那么我们的系统就能够自己保持在软件最新的状态, 对于资安来说当然会
比较好一些的! 此外,由于 RPM 与 yum 具有容易安装/移除/升级等特点,且还提供查询与验证的功能,
安装时更有数字签名的保护,让你的软件管理变的更轻松自在!因此,当然首选就是利用 RPM 来处理啦!
(2)选择软件官网释出的 RPM 或者是提供的软件库网址:
不过,原厂并不会包山包海,因此某些特殊软件你的原版厂商并不会提供的!举例来说 CentOS 就没有提
供 NTFS 的相关模块。此时你可以自行到官网去查阅,看看有没有提供相对到你的系统的 RPM 文件, 如
果有提供软件库网址,那就更好啦!可以修改 yum 配置文件来加入该软件库,就能够自动安装与升级该软
件! 你说方不方便啊!
(3)利用 Tarball 安装特殊软件:
某些特殊用途的软件并不会特别帮你制作 RPM 文件的,此时建议你也不要妄想自行制作 SRPM 来转成
RPM 啦! 因为你只有区区一部主机而已,若是你要管理相同的 100 部主机,那么将原始码转制作成 RPM 
就有价值! 单机版的特殊软件,例如学术网络常会用到的 MPICH/PVM 等平行运算函式库,这种软件建
议使用 tarball 来安装即可, 不需要特别去搜寻 RPM 啰!
(4) 用 Tarball 测试新版软件:
某些时刻你可能需要使用到新版的某个软件,但是原版厂商仅提供旧版软件,举例来说,我们的 CentOS 主
要是定位于企业版,因此很多软件的要求是『稳』而不是『新』,但你就是需要新软件啊! 然后又担心新
软件装好后产生问题,回不到旧软件,那就惨了!此时你可以用 tarball 安装新软件到 /usr/local 底下, 那
么该软件就能够同时安装两个版本在系统上面了!而且大多数软件安装数种版本时还不会互相干扰的! 嘿
嘿!用来作为测试新软件是很不错的呦!只是你就得要知道你使用的指令是新版软件还是旧版软件了!

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

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

一般来说, 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 啰!就是这么简单

相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页