前面说到了软件安装可以直接下载源码压缩版编译安装。还有一种安装形式是使用厂商提供给用户的安装文件。厂商在他们的系统上编译好用户所需要的软件,然后将编译好的软件发布给用户使用。
目前厂商发布软件机制主要分为2大类
Dpkg:由Debian Linux社区开发,B2D,Ubantu等Linuxdistributions使用就是这种机制
RPM:由Red Hat开发,CentOs,SuSe使用就是这种机制
这两种机制安装软件会先检测前驱软件是否存在,如果不存在则不安装.如软件A安装。需系统内含有软件B,那么不存在则不会安装软件
为了解决这种因依赖问题而导致软件不能安装厂商又提供了在线升级机制,简单的说就是先将前驱软件都安装以保证要安的软件能正确安装
Dpkg机制对应的在线升级机制APT
RPM机制对应的在线升级机制YUM
Rpm软件相关信息会写入/var/lib/rpm目录下的数据库文件内,未来软件升级以及版本比较都源自这个数据库,查询已安装RPM软件也会查询这个数据库
前面提到过RPM软件的安装前会检查前驱依赖的软件是否已安装,如果为安装则此次安装不会进行,同时需要说明PRM机制软件是厂商根据特定系统所提供,因此不同的Linux distributions,以及不同版本之间PRM机制软件是不能相互安装的
语法:rpm �C[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 �Cqa
rpm �Cq[iR] 存在于系统的软件名
rpm �Cqf 存在于系统的某个文件名
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 �Cqa tomcat5-servlet-2.4-api-5.5.23-0jpp.40.el5_9 xml-commons-resolver-1.1-1jpp.12 …..
卸载:rpm �Ce 软件名
重建数据库:rpm �Crebuilddb
前面说到RPM软件安装是如果存在前驱软件且未安装此次安装就不会进行,为了解决这个问题,就引入了YUM在线升级机制,简答的说,YUM在线升级机制就是将需要安装的软件的前驱软件(RPM)事先都进行安装以保障软件的顺利安装
语法: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[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 [�Cy]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安装都是一个一个安装软件,当我们安装一个复杂的功能时可能需要安装很多个软件,比如安装KDE桌面系统,其包括很多软件,如果在一个个安装就会很费事。此时就可以使用软件组功能。(至于有哪些软件组。这就需要服务器提供了)
语法: yum grouplist
yum [groupinfo|groupinstall|groupremove] 软件组名
举例:
[root@bogon ~]# yum grouplist Installed Groups:=>已经安装的软件组 DNS 名称服务器 FTP 服务器 …….. Available Groups: =>可安装的软件组 Beagle Eclipse …….. Done
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文件,在里面配置自己的服务器站点