重点回顾
为了避免使用者自行编译的困扰,开发商自行在特定的硬件与操作系统平台上面预先编译好软件, 并将软件以特殊格式封包成文件,提供终端用户直接安装到固定的操作系统上,并提供简单的查询/安装/移除等流程。 此称为软件管理员。常见的软件管理员有 RPM 与 DPKG 两大主流。 RPM 的全名是 RedHat Package Manager,原本是由 Red Hat 公司所发展的,流传甚广; RPM 类型的软件中,所含有的软件是经过编译后的 binary program ,所以可以直接安装在使用者端的系统上, 不过,也由於如此,所以 RPM 对於安装者的环境要求相当严格; RPM 除了将软件安装至使用者的系统上之外,还会将该软件的版本、名称、文件与目录配置、系统需求等等均记录於数据库 (/var/lib/rpm) 当中,方便未来的查询与升级、移除; RPM 可针对不同的硬件等级来加以编译,制作出来的文件可於扩展名 (i386, i586, i686, x86_64) 来分辨; RPM 最大的问题为软件之间的相依性问题; SRPM 为 Source RPM ,内含的文件为 Source code 而非为 binary file ,所以安装 SRPM 时还需要经过 compile ,不过,SRPM 最大的优点就是可以让使用者自行修改配置参数 (makefile/configure 的参数) ,以符合使用者自己的 Linux 环境; RPM 软件的属性相依问题,已经可以藉由 yum 或者是 APT 等方式加以克服。 CentOS 使用的就是 yum 机制。 yum 服务器提供多个不同的容器放置个别的软件,以提供用户端分别管理软件类别。
本章习题
情境模拟题一
实际安装 php, php-mysql, php-devel, httpd-devel 等软件的方式
目标:利用 rpm 查询软件是否已安装,利用 yum 进行线上查询; 目标:你的 Linux 必须要已经接上 Internet 才行; 需求:最好了解磁碟容量是否够用,以及如何启动服务等。
这个模拟题的目的是想要安装一套较为完整的 WWW 服务器,并且此服务器可以支持外挂的其他网页服务器模块。 所以需要安装的就会有网页程序语言 php 与数据库软件 MySQL ,以及未来开发用的 php-devel, httpd-devel 等软件。 整个流程会有点像这样:
1、检查所需要的软件是否存在?最好直接使用 rpm ,因为可以直接取得 RPM 的数据库内容:
[AppleScript] ı鿴 ƴ
[root@www ~]# rpm -q httpd httpd-devel php php-devel php-mysql
httpd-2.2.3-22.el5.centos
package httpd-devel is not installed <==没有安装的软件!
php-5.1.6-23.el5
package php-devel is not installed <==没有安装的软件!
package php-mysql is not installed <==没有安装的软件!
经过上面的分析,我们知道 httpd-devel, php-devel, php-mysql 等软件并没有安装!那么该如何安装 可以使用 yum 直接线上安装。不过我们必须要先有网络才行!
2、确认网络的可行性:
[AppleScript] ı鿴 ƴ
[root@www ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:11:3B:75
inet addr:192.168.201.201 Bcast:192.168.201.255 Mask:255.255.255.0
....(底下省略)....
# 你可以看到我们的主机是有 IP 存在的!再来看看有没有路由配置存在?
[root@www ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.201.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.201.254 0.0.0.0 UG 0 0 0 eth0
# 确实是有路由器 (Gateway) 存在的!那么该路由器是否配置正确呢?
[root@www ~]# ping -c 2 192.168.201.254
PING 192.168.201.254 (192.168.201.254) 56(84) bytes of data.
64 bytes from 192.168.201.254: icmp_seq=1 ttl=64 time=0.325 ms
64 bytes from 192.168.201.254: icmp_seq=2 ttl=64 time=0.281 ms
# 路由器有回应!表示可以连接到路由器!那么 TCP/IP 设好了,
# 但是主机名称解析器统 (DNS) 该如何处理?
[root@www ~]# dig [url]www.google.com[/url]
; <<>> DiG 9.3.4-P1 <<>> [url]www.google.com[/url]
;; global options: printcmd
....(中间省略)....
;; QUESTION SECTION:
;[url]www.google.com.[/url] IN A
....(中间省略)....
;; ANSWER SECTION:
[url]www.google.com.[/url] 522933 IN CNAME [url]www.l.google.com.[/url]
[url]www.l.google.com.[/url] 107 IN A 72.14.203.103
....(中间省略)....
;; Query time: 5 msec
;; SERVER: 120.114.150.1#53(120.114.150.1)
;; WHEN: Fri Sep 18 13:14:45 2009
;; MSG SIZE rcvd: 340
# 确实有查到 Google 的 IP ,且是由 120.114.150.1 那部 DNS 主机帮忙解析的!
3、网络配置妥当之后,那我们就能够直接使用 yum 罗!可以这样直接进行安装的:
[AppleScript] ı鿴 ƴ
[root@www ~]# yum install httpd httpd-devel php php-devel php-mysql
然后接著一步一步进行安装即可。
简答题部分
如果你曾经修改过 yum 配置档内的容器配置 (/etc/yum.repos.d/*.repo) ,导致下次使用 yum 进行安装时老是发现错误, 此时你该如何是好?+ 简答 (点击展开) - 简答 (点击折叠) 先确认你的配置档确实是正确的,如果没问题,可以将 yum 的缓存清除,使用『yum clean all』即可。 事实上, yum 的所有缓存、下载软件、下载软件的表头数据,都放置於 /var/cache/yum/ 目录下。
简单说明 RPM 与 SRPM 的异同?+ 简答 (点击展开) - 简答 (点击折叠) RPM 文件是由程序打包者 (通常是由 distribution 的开发商) 藉由程序的原始码,在特定的平台上面所编译成功的 binary program 的数据,并将该数据制作成为 RPM 的格式,以方便相同软、硬件平台的使用者之安装使用。 在安装时显的很简单,因为程序打包者的平台与使用者所使用的平台默认为相同。
至於 SRPM 则是藉由与 RPM 相同的配置档数据,不过将原始码直接包在 SRPM 文件当中,而不经过编译。 因为 SRPM 所内含的数据为原始码,所以安装时必须要再经过编译的行为才能成为 RPM 并提供使用者安装。
假设我想要安装一个软件,例如 pkgname.i386.rpm ,但却老是发生无法安装的问题,请问我可以加入哪些参数来强制安装他?+ 简答 (点击展开) - 简答 (点击折叠) 可以加入 --nodeps 等参数。例如 rpm -ivh --nodeps pkgname.i386.rpm
承上题,你认为强制安装之后,该软件是否可以正常运行?为什么?+ 简答 (点击展开) - 简答 (点击折叠) 一般来说,应该是『不能运行』的,因为该软件具有相依属性的问题, 某些时刻该软件的程序可能需要呼叫外部的函式库,但函式库可能未安装,因此当然无法运行成功。
有些人使用 OpenLinux 3.1 Server 安装在自己的 P-166 MMX ,却发现无法安装,在查询了该原版光盘的内容,发现里面的文件名称为 ***.i686.rpm 。请问,无法安装的可能原因为何?+ 简答 (点击展开) - 简答 (点击折叠) 因为 P-166MMX 为 i586 的硬件平台,而 OpenLinux 为针对 i686 的硬件平台进行最佳化, 因此很可能由於下达的参数无法支持的问题,导致无法安装成功。
请问我使用 rpm -Fvh *.rpm 及 rpm -Uvh *.rpm 来升级时,两者有何不同?+ 简答 (点击展开) - 简答 (点击折叠) -Uvh 后面接的软件,如果原本未安装,则直接安装,原本已安装时,则直接升级;
-Fvh 后面接的软件,如果原本未安装,则不安装,原本已安装时,则直接升级;
假设有一个厂商推出软件时,自行处理了数码签章,你想要安装他们的软件所以需要使用数码签章,假设数码签章的档名为 signe, 那你该如何安装?+ 简答 (点击展开) - 简答 (点击折叠) rpm --import signe
承上,假设该软件厂商提供了 yum 的安装网址为: http://their.server.name/path/ ,那你该如何处理 yum 的配置档?+ 简答 (点击展开) - 简答 (点击折叠) 可以自行取个档名,在此例中我们使用『 vim /etc/yum.repos.d/their.repo 』,扩展名要正确! 内容有点像这样即可:[their]
name=their server name
baseurl=http://their.server.name/path/
enable=1
gpgcheck=0然后使用 yum 去安装该软件看看。
参考数据与延伸阅读