软件安装RPM|SRPM|YUM
前面说到了软件安装可以直接下载源码压缩版编译安装。还有一种安装形式是使用厂商提供给用户的安装文件。厂商在他们的系统上编译好用户所需要的软件,然后将编译好的软件发布给用户使用。
目前厂商发布软件机制主要分为2大类
Dpkg:由Debian Linux社区开发,B2D,Ubantu等Linuxdistributions使用就是这种机制
RPM:由Red Hat开发,CentOS,SUSE使用就是这种机制
这两种机制安装软件会先检测前驱软件是否存在,如果不存在则不安装.如软件A安装。需系统内含有软件B,那么不存在则不会安装软件
为了解决这种因依赖问题而导致软件不能安装厂商又提供了在线升级机制,简单的说就是先将前驱软件都安装以保证要安的软件能正确安装
Dpkg机制对应的在线升级机制APT
RPM机制对应的在线升级机制YUM
RPM软件管理程序
Rpm软件相关信息会写入/var/lib/rpm目录下的数据库文件内,未来软件升级以及版本比较都源自这个数据库,查询已安装RPM软件也会查询这个数据库
RPM安装与升级
前面提到过RPM软件的安装前会检查前驱依赖的软件是否已安装,如果为安装则此次安装不会进行,同时需要说明PRM机制软件是厂商根据特定系统所提供,因此不同的Linux distributions,以及不同版本之间PRM机制软件是不能相互安装的
语法:rpm –[i|F|U]vh软件名
选项与参数
-i: 安装
-U:后接的软件如果没有安装过则安装,如果安装过且版本较旧则更新
-F:后接的软件如未安装则不进行安装,如果安装过且版本较旧则更新
-v:查看详细安装信息
-h:显示安装进度
举例1:安装
[root@localhost ~]#
rpm -ivh /media/CentOS_5.10_Final/CentOS/pam-devel-0.99.6.2-12.el5.i386.rpm
Preparing… ########################################### [100%]
1:pam-devel ########################################### [100%]
举例2:存在依赖的安装
[root@localhost ~]# rpm -i /media/CentOS_5.10_Final/CentOS/ant17-junit-1.7.1-1jpp.0.i386.rpm
error: Failed dependencies:
ant17 = 0:1.7.1-1jpp.0 is needed by ant17-junit-1.7.1-1jpp.0.i386
junit is needed by ant17-junit-1.7.1-1jpp.0.i386
=>提示其前驱软件为安装RPM查询
语法: rpm –qa
rpm –q[iR] 存在于系统的软件名
rpm –qf 存在于系统的某个文件名
rpm -qp[iR] 未安装的某个文件名
-q:进查询后面接的软件名是否安装
-qa:列出所有已安装的软件信息
-qi :列出后面接软件的详细信息
-qR:列出与该软件有关的依赖软件所含的文件
-qf:由后面接的文件名称找出还文件属于哪一个以安装的软件
查询某个未安装软件包含文件的信息
-qp[iR]:iR属于与上面说的一致
[root@localhost ~]# rpm -q pam-devel =>不需要列出版本号
pam-devel-0.99.6.2-12.el5
[root@localhost ~]# rpm -qi pam-devel
Name : pam-devel Relocations: (not relocatable)
Version : 0.99.6.2 Vendor: CentOS
Release : 12.el5 Build Date: 2013年01月09日星期三 13时30分55秒
Install Date: 2014年04月08日星期二 14时19分02秒 Build Host: builder17.centos.org
Group : Development/Libraries Source RPM: pam-0.99.6.2-12.el5.src.rpm
Size : 504034 License: GPL or BSD
Signature : DSA/SHA1, 2013年01月10日星期四 03时18分55秒, Key ID a8a447dce8562897
URL : http://www.us.kernel.org/pub/linux/libs/pam/index.html
Summary : Files needed for developing PAM-aware applications and modules for PAM
Description :
PAM(可插入验证模块)是一个系统安全工具。它允许
系统管理员无需重新编译处理验证的程序而设置验证
策略。该软件包包括用于建构留意 PAM 的程序和 PAM
使用的模块所需的头文件和静态库。
[root@localhost ~]# rpm -qR pam-devel
libpam.so.0
libpam_misc.so.0
libpamc.so.0
pam = 0.99.6.2-12.el5
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
[root@localhost ~]# rpm -qf /usr/lib/libpam.so
pam-devel-0.99.6.2-12.el5
[root@localhost ~]# rpm –qa
tomcat5-servlet-2.4-api-5.5.23-0jpp.40.el5_9
xml-commons-resolver-1.1-1jpp.12
…..RPM卸载与重建数据库
卸载:rpm –e 软件名
重建数据库:rpm –rebuilddb
YUM在线升级
前面说到RPM软件安装是如果存在前驱软件且未安装此次安装就不会进行,为了解决这个问题,就引入了YUM在线升级机制,简答的说,YUM在线升级机制就是将需要安装的软件的前驱软件(RPM)事先都进行安装以保障软件的顺利安装
YUM安装与更新
语法:yum [option] [install|update]
Option:
-y:安装过程中询问用户操作,默认是yes
-installroot=路径:软件安装路径
install:安装操作
update 更新操作
举例:
[root@bogon ~]# yum -y install pam-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: mirrors.yun-idc.com
* extras: mirrors.yun-idc.com
* updates: mirrors.yun-idc.com
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package pam-devel.i386 0:0.99.6.2-12.el5 set to be updated
–> Finished Dependency Resolution
………………….
Installing : pam-devel 1/1
Installed:
pam-devel.i386 0:0.99.6.2-12.el5
Complete!
YUM查询
语法:yum[search|info |provides]软件名
yum list|list updates
search: 查询后接名称的相关的软件
info: 查询后接软件的相关信息
provides:查询提供后接文件的软件有哪些
list:列出服务器上所提供的软件
list updates:列出服务器上可供升级的软件
举例:
[root@bogon ~]# yum search pam
…….
pam.i386 : A security tool which provides authentication for applications
pam-devel.i386 : Files needed for developing PAM-aware applications and modules for PAM
…..
[root@bogon ~]# yum info pam-devel
……
Installed Packages
Name : pam-devel
Arch : i386
Version : 0.99.6.2
Release : 12.el5
Size : 492 k
Repo : installed
Summary : Files needed for developing PAM-aware applications and modules for PAM
URL : http://www.us.kernel.org/pub/linux/libs/pam/index.html
License : GPL or BSD
Description: PAM(可插入验证模块)是一个系统安全工具。它允许
: 系统管理员无需重新编译处理验证的程序而设置验证
: 策略。该软件包包括用于建构留意 PAM 的程序和 PAM
: 使用的模块所需的头文件和静态库。
[root@bogon ~]# yum provides /bin/sh
………
bash-3.2-32.el5_9.1.i386 : The GNU Bourne Again shell (bash) version 3.2
Repo : base
Matched from:
Filename : /bin/sh
YUM删除
语法:yum [–y]remove 软件名
举例:
[root@bogon ~]# yum remove pam-devel
Loaded plugins: fastestmirror, security
Setting up Remove Process
Resolving Dependencies
–> Running transaction check
—> Package pam-devel.i386 0:0.99.6.2-12.el5 set to be erased
–> Finished Dependency Resolution
………….
Transaction Test Succeeded
Running Transaction
Erasing : pam-devel 1/1
Removed:
pam-devel.i386 0:0.99.6.2-12.el5
YUM软件组
前面说的YUM安装都是一个一个安装软件,当我们安装一个复杂的功能时可能需要安装很多个软件,比如安装KDE桌面系统,其包括很多软件,如果在一个个安装就会很费事。此时就可以使用软件组功能。(至于有哪些软件组。这就需要服务器提供了)
语法: yum grouplist
yum [groupinfo|groupinstall|groupremove] 软件组名
举例:
[root@bogon ~]# yum grouplist
Installed Groups:=>已经安装的软件组
DNS 名称服务器
FTP 服务器
……..
Available Groups: =>可安装的软件组
Beagle
Eclipse
……..
Done
YUM服务器配置
Yum软件在线升级信息都要从远端的服务器端来获取数据,有时我们需要更改下服务器地址,选择些离我们较近,或者资源较好的服务器以提高传输效率,那么服务器配置信息在哪里设置的?
查看系统中配置服务器站点
语法:yum repolist all
root@bogon ~]# yum repolist all
repo id repo name status
C5.0-base CentOS-5.0 – Base disabled
base CentOS-5 – Base enabled
extras CentOS-5 – Extras enabled
updates CentOS-5 – Updates enabled
=>只有states是enabled才是被激活的,上面有三个站点是被激活的
当我们查询安装时会看到如下提示信息,就代表从上面三个激活站点查询到的数据
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
*base: mirrors.yun-idc.com
*extras: mirrors.yun-idc.com
*updates: mirrors.yun-idc.com
配置服务器站点
服务器配置信息都在/etc/yum.repos.d/目录下
[root@localhost /]# ll /etc/yum.repos.d/
-rw-r–r– 1 root root 1926 04-02 09:21 CentOS-Base.repo
-rw-r–r– 1 root root 636 10-08 04:57 CentOS-Debuginfo.repo
-rw-r–r– 1 root root 626 10-08 04:57 CentOS-Media.repo
-rw-r–r– 1 root root 7574 10-08 04:57 CentOS-Vault.repo
-rw-r–r– 1 root root 342 04-02 09:26 mystation.repo
以上可见分为4个容器,每个容器内配置了一些列站点
[root@localhost /]# vim /etc/yum.repos.d/CentOS-Base.repo
=>查看包含了哪些站点
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=1
名称说明:
[base]:代表站点的名字!中刮号一定要存在
name:只是说明一下这个容器的意义而已
mirrorlist=:列出这个容器可以使用的映射站台,如果不想使用,可以注解到这行;
baseurl=:因为后面接的就是容器的实际网址!
enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 。
gpgcheck=1:这就是指定是否需要查阅 RPM 文件内的数码签章!
gpgkey=:就是数码签章的公钥档所在位置。使用默认值即可
举例:管理一个站点
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=0
[root@bogon ~]# yum search gcc
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* extras: mirrors.btte.net
* updates: mirrors.btte.net
extras | 2.1 kB 00:00
updates
=>查询站点只剩下2个了
对于自定义的服务器地址需要在/etc/yum.repos.d/目录下新建.repo文件,在里面配置自己的服务器站点。
15、只有2个节点时无法防止脑裂;
16、配置文件的正确更新依赖配置ID的单调递增;
17、RHCS的配置文件(其实是集群信息文件)中有定义超过200个属性;
18、cman_tool用于手动管理节点的加入离开以及杀掉别的节点,它也提供了API;
19、带内fencing不可靠(但我觉得依然可以尝试一下的,自动重启嘛,很多时候还是能有效果的);
20、fencing分为2种:掐断通信链路和掐断电源。红帽建议掐断电源,因为掐断链路的话,等链路恢复了错误依然有可能发生(因为重发机制,等在那了);
21、fencing的目的是为了保护共享存储,所以集群使用共享块设备是原罪啊,会带来这么大的麻烦呢;
22、fencing需要有权限控制;
23、大多数网络管理插座同一时刻只允许一个人登陆进来,要是同时有2个节点需要fencing那就很麻烦,所以每次fencing的时候都要快近快出以防止冲突(脚本要写好,注意及时释放资源)。你看,多麻烦;
24、不起fenced进程的节点不允许加入GFS;
25、fenced依赖cman告诉它什么时候需要fencing谁,依赖ccs告诉它如何去实现fencing;
26、集群没有quorum时不会fencing任何人。如果fencing会让集群失去quorum,那么fencing也不会执行;
27、RHCS支持对同一个节点配置多个fencing机制;
28、RHCS并不能保证数据完全安全,比如说一个节点的网络和它的fencing设备同时坏掉了。那数据就糟糕了;
29、关于failover域讲了很多,功能是强大,但我觉得这些对一个单独的服务而言不大用得上;
30、如果节点间共享NFS的话,mount NFS的时候要为每一个节点手工设置同样的fsid,这样才能确保它们使用相同的文件句柄(又是一个共享存储的麻烦);
31、应该具有手工在节点之间迁移服务的工具,RHCS中是clusvcadm;
32、RHCS支持的资源类型:GFS、ext2、ext3、IPAddr、NFS、Script、Samba、Apache、LVM、MySQL、OpenLDAP、PstgreSQL、Tomcat。其实还蛮有限的⋯⋯;
33、RHCS的概念是资源组成服务,它通过检测每个资源来监控整个服务。这样的坏处是不准(各个资源好,其实整个服务未必好)且复杂(还要关心资源之间的依赖关系),好处是可以针对具体失败的资源尝试自动恢复;
34、网卡状态可以通过ethtool、mii-tool监控;
35、RHCS检查每个资源的间隔默认是30s,最小能设置到5s。课本上有些资源检查很耗时,举例是Orcale;
36、在节点上更改整个集群时,先要检查此节点有没有quorum;
37、RHCS在节点间切服务还是要花上好几秒的;
38、集群这种复杂的玩意儿,各种工具一定要全,方便调错;
39、服务的状态有:Started、Pending、Disabled、Stopped、Failed;
40、红帽想把集群状态放进SNMP里去,那样显然方便很多。不过几年过去了,它们始终没有成功(我也觉得放进去并不十分合理);
41、如果想关掉RHCS(可能搬家啥的),那不能直接关机,因为那样会导致失去quorum,那剩下的机器就啥都干不了了。可以手动调低quorum,或者手动将节点们一台一台leave出集群;
42、把集群节点自己的日志和节点的系统日志放打一起会是个好主意,因为节点的物理机器深受集群控制,一旦节点失败就可能要查询各方面的原因;
43、quorum disk。我想我没弄懂这玩意儿!网上查了些资料只知道是IBM首先发明的,属于PAXOS的扩展,主要用于双机集群,会往里写心跳信息,写心跳之前能用脚本自我检测,还能达到检测共享存储的目的。关于设计思想和原理,都是语焉不详。要是我哪天真搞明白了,我再单独写一篇吧。下一条简述了——
44、quorum disk注。2012-12-19,关于qdisk问了几个用过的家伙,大概意思是这样的:qdisk只投一次票,只给一个子集群投票,这样就防止了集群的脑裂。qdisk一般建立在共享存储上,这是因为共享存储的链路一般被假设为较为可靠的链路。所以说qdisk存在的目的主要有2:a> 防止偶数个节点的集群发生脑裂;b> 增加整个集群的投票总数,这样可以防止有一些节点down掉以后整个集群失去quorum的情况,也就是说让集群在只有不多的几台机器下依然保持可以服务。