📄 0220upgrade.htm
字号:
而且套件的漏洞倒不是一定是会被利用来进行入侵,有的时候,某些套件的漏洞可能导致您 Linux
主机的运行不良或者是容易产生系统当机等等的问题呢!所以,一个好的 Linux 主机,
他的套件最好是随时保持在较新的版本上面,这样还是比较好一点的啦!关于安全漏洞的通报您可以参考底下的网站∶ <br />
<ul><span class=text_import2>
<li>台湾电脑危机处理小组(TWCERT)∶<a href="http://www.cert.org.tw/"
target="_blank">http://www.cert.org.tw/</a></li>
<li>Red Hat 的官方说明∶<a href="http://www.redhat.com/apps/support/errata/"
target="_blank">http://www.redhat.com/apps/support/errata/</a></li>
</span></ul>
所以啊,并不是有防火墙就万事 OK !你还必须要更新你的软体才行,
通常建议你,<span class=text_import2>安装 Linux 完毕后的第一项工作那就是.....
立刻进行整体软体的升级!</span><br />
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 事实上,自由软体的安全性还是比较好的!因为有太多人帮忙检验程式码与更新程式码,
并且,万一程式真的有问题,在发现问题到推出修补程式的期间是比较短的,
也就是说,攻击者可以利用的时间相对缩短,当然使用自由软体的我们就比较安全啦! ^_^
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<hr /><a NAME="update_howto"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">如何进行软体升级</span><br />
<div class=block2>
还记得你是如何安装你 Linux 上面的软体吗?不就是 <a href="../linux_basic/0520rpm_and_srpm.php">rpm</a>,
<a href="../linux_basic/0520source_code_and_tarball.php">tarball</a> 与 dpkg 吗?
所以棉,你的软体如果想要升级,那就得依据当时你安装该软体的方式来进行升级啊!
而每种方式都有其适用性∶<br />
<ul>
<li><span class=text_import1>RPM</span>∶这是目前最常见于 Linux distribution 当中的套件安装管理方式,
包括 CentOS / Fedora / SuSE / Red Hat / Mandriva 等等,都是使用这个方式来管理的;<br /><br /></li>
<li><span class=text_import1>Tarball</span>∶利用软体的官方网站所释出的原始码在您的系统上面编译与安装,
一般来说,由于软体是直接在自己的机器上面编译的,所以效能会比较好一些。
不过,升级的时候就比较麻烦,因为又得要下载新的原始码并且重新编译一次。
这种安装模式常见于某些特殊软体 (没有包含在 distribution 当中),或者是 Gentoo
这个强调效能的 distribution;<br /><br /></li>
<li><span class=text_import1>dpkg</span>∶是 debian 这个 distribution 所使用的套件管理方式,与
RPM 很类似,都是透过预先编译的处理,可以让 end user 直接使用来升级与安装。<br /></li>
</ul>
举例来说,如果你的系统是 CentOS ,我们知道他使用的是 RPM 类型的套件管理模式,那如果你想要安装 B2D
的软体怎办?要注意, B2D 是使用 debian 的 dpkg 来管理套件的,两者并不相同啊!要互相安装太难了!
所以说,要升级的话,得先了解到你系统上的套件安装与管理的方法才行。<br /><br />
不过,有个特殊案例,那就是旧版本的 Linux (例如 Red Hat 9) 的软体升级该如何是好?
由于旧版本的软体支援度本来就比较差,商业公司或者是社群也没有这么多心力放在旧版本的支援上,
所以,你这个时候可以选择∶ <span class=text_import2>(1)升级到较新的版本,例如 CentOS 4.3 或者是
SuSE 10 等等,或者是 (2)利用 Tarball 来自行升级核心与软体</span>
。不过,比较建议升级到新版本啦,因为要自行以手动方式由 Tarball
安装到最新的版本,实在是很费时费力,而且还得要常常查阅官方网站所推出的最新消息,
漏过一则都可能发生无法预期的状况。<br /><br />
但不管怎么说,单纯使用 RPM / Tarball / dpkg 的方式来安装与升级软体时,
你都必须要由原版光碟或者是由官方网站下载可安装的套件档案,然后再手动来实际安装到你的系统上。
如此一来,你还是得要盯著官方网站提供的资讯,才能够在第一时间进行升级的动作。
唉!怎么这么麻烦?<br /><br />
我们都晓得在 Windows 的环境下,他有提供一个 Live update 的项目可以自动的线上升级,
甚至很多的防毒软体与防木马软体也都有推出即时的线上更新,如此一来可以让您的软体维持在最新版的状况,
真是好啊!咦!那我们的 Linux 是否有这样的功能?如果有的话,那么系统自动进行软体升级,
不就可以轻松又快乐了?没错!确实是这样的!所以就让我们来谈一谈 Linux 的线上升级机制吧!<br /><br />
</div>
<hr /><a NAME="update_online"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">各种 distributions
的自动升级机制</span><br />
<div class=block2>
在 Linux 最常见的套件安装方式∶ RPM / Tarball / dpkg 当中,Tarball 由于取得的是原始码,
所以要用 Tarball 来作线上自动更新是不太可能进行的,所以仅能用 RPM 或 dpkg
这两种套件管理的方式来进行线上更新了。<br /><br />
但 RPM 与 dpkg 不是有所谓的相依属性吗?
这倒不需要担心呐!因为我们的 RPM 与 dpkg 套件档案都有一些套件的基本资讯,
并同时记录了套件的相依属性 (记得使用 rpm -q 的查询吗),
所以当分析这些基本资讯并使用一些机制将这些相依资讯记录下来后,
再透过一些额外的网路功能,就能够自动的分析你的系统与修补套件之间的差异,
并可进一步帮你分析所需要升级与相依属性的套件,就可达成自动升级的理想啦!<br /><br />
由于各家 distributions 在管理系统上都有自己独特的想法,所以在分析 RPM 或 dpkg 套件与方式上面就有所不同,
也就有底下这些不同的线上升级机制啦∶<br />
<ul>
<li><span class=text_import1>yum</span>∶<br />
CentOS 与 Fedora 所常用的自动升级机制,透过 FTP 或 WWW 来进行线上升级以及线上直接安装套件;<br /><br /></li>
<li><span class=text_import1>up2date</span>∶<br />
这是 Red Hat 所使用的自动升级机制,需要注册才能使用,并且依据付费与否而管制其流量;<br /><br /></li>
<li><span class=text_import1>apt</span>∶<br />
最早由 debian 这个 distribution 所发展,现在 B2D 也是使用 apt ,同时由于 apt 的可移植性,
所以只要你的 RPM 可以使用 apt 来管理的话,就可以自行建立 apt 伺服器来提供其他使用者进行线上安装与升级。
<br /><br /></li>
<li><span class=text_import1>you</span>∶<br />
所谓的 Yast Online Update (YOU) 是由 SuSE 所自行开发出来的线上安装升级方式,
经过注册取得一组帐号密码后,就能够使用 you 的机制来进行线上升级。不过如果是免费的版本,
则仅有 60 天的试用期!<br /><br /></li>
<li><span class=text_import1>urpmi</span>∶<br />
这个则是 Mandriva 所提供的线上升级机制!</li></ul>
讲了这些升级机制并且与 distribution 作了对应,你就该了解到∶『<span class=text_import2>每个
distribution 可以使用的线上升级机制都不相同</span>』的啊!所以请参考你的 distribution
所提供的文件来进行线上升级的设定喔!否则就得要自行手动下载安装了! @_@<br /><br />
底下鸟哥以 CentOS 4.3 提供的 yum 线上升级架构来进行说明,同时亦简单的介绍一下 B2D
这个 distribution 的 APT 来说明说明! ^_^!那为什么不选择其他的版本来介绍呢?
就如同<a href="0120intranet.php#linux">区域网路那个章节里面的 distribution 选择</a>提到的,
越稳定的版本就不容易发生程式臭虫,不断升级的情况就比较不会发生,所以,鸟哥这里再次的说明一下,
<span class=text_import2>如果要做为主机伺服器之用的话,尽量选择较稳定且支援较多的版本,例如
<b>CentOS, SuSE, Red Hat, B2D 及 debian </b>
等 distribution 啊!</span><br />
</div>
</div>
<hr /><a NAME="yum"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">CentOS 的 yum 自动升级</span><br />
<div class=block1>
我们知道 CentOS 主要是以 RPM 来作为套件的管理机制,那么 RPM 本身就有一些表头资料记录了这个套件本身的资讯,
包括了相依属性之类的讯息等等, yum 这个咚咚就是藉由分析这些 RPM 套件的表头资料,并且将这些表头资料事先记录下来,
当使用者要求升级或者是安装的时候, yum 就会透过分析这些表头资料来决定下载的档案,
这些下载的档案当然包括了相依属性的套件了,所以说,<span class=text_import2>yum
已经主动克服了套件之间的属性相依问题棉</span>!很棒吧!<br /><br />
那么 yum 是如何动作的呢?基本上是这样的∶<br />
<ul><span class=text_import2>
<li>先由设定档判断 yum server 所在处;
<li>连接到 yum server 后,先下载新的 RPM 档案的表头资料;
<li>分析比较使用者所欲安装/升级的档案,并提供使用者确认;
<li>下载使用者选择的档案到系统中的 /var/cache/yum ,并进行实际安装;
</span></ul>
所以说,找到合适的 yum server 是挺重要的一件事啊!<br /><br />
<hr /><a NAME="yum_configure"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">yum 的设定档</span><br />
<div class=block2>
基本上,在你一安装完 CentOS 之后,系统就主动的帮你建立好 CentOS 的 yum server 设定了,
他的设定档在∶
<ul>
<li>/etc/yum.conf
<li>/etc/yum.repos.d/CentOS-Base.repo
</ul>
其中,那个 yum.conf 是主要设定档,可以设定一些环境参数之类的,至于 CentOS-Base.repo
则是主要的 yum server 选择的资料,你可以直接修改 CentOS-Base.repo 这个档案即可。
另外,台湾地区的 CentOS 镜像站台 (mirror) 可以选择义守大学的 FTP 网站,
例如底下的连结∶<br />
<ul><li><a href="http://ftp.isu.edu.tw/pub/Linux/CentOS/"
target="_blank">http://ftp.isu.edu.tw/pub/Linux/CentOS/</a></li></ul>
截至目前为止 (2006/09/xx),最新的 CentOS 是 4.4 版,所以上头这个连结你可以进入 4.4 那个目录,
就能够看到很多 CentOS 提供的各项套件资料了。其中比较重要的两个目录是∶『 o s』以及『 update 』
,分别是基础套件以及修补过后的套件啦!既然知道了台湾地区的 FTP 网站后,自然就不需要连接到美国去下载档案,
那么连线下载的速度当然就会比较快啦!不过,你就得要自行修改修改设定档了!<br /><br />
不过 CentOS 官方网站则是建议使用国码来作为镜相网站的选择依据,
如此一来在大版本相同的环境下 (4.3 -> 4.4) 咱们的 CentOS 是可以自动升级到不同版本中的!
所以,鸟哥的设定档是改成这个样子的∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/yum.repos.d/CentOS-Base.repo</span>
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch
&repo=os<span class=term_write>&cc=tw</span>
<span class=term_say># 注意!上面两行是同一行!</span>
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#released updates
[update]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch
&repo=updates<span class=term_write>&cc=tw</span>
<span class=term_say># 注意!上面两行是同一行!</span>
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
<span class=term_say>......(底下省略).....</span>
</pre></td></tr></table>
主要是将 mirrorlist 那个变数的最后面加上国码『&cc=tw』就可以了!如果未来有较新的版本时,
那么你的 yum 就能够自动升级棉!另外,除了 [base] 与 [update] 之外,其实 CentOS 还提供很多的额外套件,
这包括了∶ addons, extras, centosplus, contrib 等等,这些资料你也可以加入到设定档当中,
来帮助你容易安装某些非正规支援的套件资料啊! ^_^<br /><br />
另外最要注意的是,在设定档当中所指定的镜像站台 (mirror) 离你越近越好,而且频宽越大越好,
这样你就可以比较方便快速的下载啊!而且,你必须已经成功的连结到该镜像站台才行,
否则在执行 yum 时会发生某些问题喔!另外,你必须是 root 的身份才能使用 yum 啊!
也就是说∶<br />
<ul><span class=text_import2>
<li>你必须使用 root 的身份来执行 yum ;
<li>设定档内指定的镜像站台必须能与你进行网路连接;
<li>镜像站台频宽越大越好,所以选择离你越近的镜像站越好!</span></ul>
</div>
<hr /><a NAME="yum_com"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">yum 的安装、升级、移除、查询等功能</span><br />
<div class=block2>
yum 可不止能够线上自动升级而已,他还可以作查询、套件群组的安装、整体版本的升级等等,好用的哩!
先来谈论一下 yum 这个 client 端的指令用法吧∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>yum [option] [工作项目] [套件]</span>
<span class=term_say>参数∶
option∶主要的参数,包括有∶
-y ∶当 yum 询问使用者的意见时,主动回答 yes 而不需要由键盘输入;
--installroot=/some/path ∶安装在其他的路径,而不在目前目录树的架构中;
对于建立虚拟机器相当有帮助!不过,一般使用者应该用不到。
[工作项目]∶由于不同的使用条件,而有一些选择的项目,包括∶
install ∶指定安装的套件名称,所以后面需接『 套件名称 』
update ∶进行整体升级的行为;当然也可以接某个套件,仅升级一个套件;
remove ∶移除某个套件,后面需接套件名称;
search ∶搜寻某个套件或者是重要关键字;
list ∶列出目前 yum 所管理的所有的套件名称与版本,有点类似 rpm -qa;
info ∶同上,不过有点类似 rpm -qai 的执行结果;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -