|
最近升级日期:2009/09/18
重点回顾
- 为了避免使用者自行编译的困扰,开发商自行在特定的硬件与操作系统平台上面预先编译好软件,
并将软件以特殊格式封包成文件,提供终端用户直接安装到固定的操作系统上,并提供简单的查询/安装/移除等流程。
此称为软件管理员。常见的软件管理员有 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 等软件。
整个流程会有点像这样:
- 检查所需要的软件是否存在?最好直接使用 rpm ,因为可以直接取得 RPM 的数据库内容:
[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 直接线上安装。不过我们必须要先有网络才行!
- 确认网络的可行性:
[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 www.google.com
; <<>> DiG 9.3.4-P1 <<>> www.google.com
;; global options: printcmd
....(中间省略)....
;; QUESTION SECTION:
;www.google.com. IN A
....(中间省略)....
;; ANSWER SECTION:
www.google.com. 522933 IN CNAME www.l.google.com.
www.l.google.com. 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 主机帮忙解析的!
|
- 网络配置妥当之后,那我们就能够直接使用 yum 罗!可以这样直接进行安装的:
[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 去安装该软件看看。
参考数据与延伸阅读
|
|