Linux程序包管理命令

本文发布时间: 2019-Mar-22
Rpm包简介Rpm包就是在相对应的操作系统平台上面编译好的软件包,没有编译之前就是一堆的源代码,很多刚接触Linux的用户还没有能力或自行编译源代码程序的难度很大,所以才会有了rpm包管理器。使用rpm可以使用户方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。程序编译之后一般有四个部分组成,二进制程序,库文件,配置文件,帮助文件下面分别列出了这些文件在系统的存放路径。二进制程序:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin, /opt/bin, /opt/sbin库文件:/lib, /lib64, /usr/lib, /usr/lib64,/usr/local/lib, /usr/local/lib64配置文件:/etc, /etc/DIR, /usr/local/{etc,conf}帮助文件:/usr/share/man, /usr/share/doc,/usr/local/share/man源代码包在编译时可以对程序包的功能进行定制,需要的功能可以编译,不需要的功能就不编译。但是rpm包是直接编译好的程序包,为了使用户能够在安装的时候选择需要的功能,舍弃不需要的功能,就会对一个程序进行分包,一个程序就会被编译成多个功能不同的包,让用户选择安装。程序包的命名方式appname-VERSION-RELEASE.ARCH.rpm VERSION: major:主版本号 minor:次版本号 release:发行号 RELEASE:包自身的修订号;有时候还会包含适用于的OS信息;比如bash-4.3.2-2.centos6.x86_64.rpm中的2.centos6 ARCH:适用的平台 x86:i386, i486, i586, i686 x86_64:x86_64, amd64 powerpc:ppc noarch:跟平台无关;httpd软件包的命名方式如下:httpd-2.2.15-39.el6.centos.x86_64.rpm rpm包的来源1、系统的安装光盘或官方镜像站点挂载光盘:mount /dev/cdrom /media/cdrom 官方站点,镜像: mirrors.sohu.com mirrors.163.com mirrors.aliyun.com2、程序包的官方站点3、第三方组织:epel4、搜索引擎 http://rpmfind.net http://rpm.pbone.net http://pkgs.orgrpm软件包管理安装软件包语法:rpm {-i|--install}{install-options}软件包选项: -i:表示安装软件包,--install是长选项-h:以#来表示安装进度-v:显示安装过程中的详细信息-vv:显示更详细的信息-vvv:显示比vv还详细的信息--test:不执行真正的安装过程,而仅报告冲突信息--nodeps:忽略依赖关系。虽然可以安装成功,但是未必可以正常运行。--force:强制安装软件包。--replacepkgs:覆盖安装,重新安装并覆盖原有文件。--relocate:把允许修改安装路径的程序包的安装路径定位到新路径下--replacefiles:有多个程序包安装时,可能安装相同的文件,这时需要指定后安装的程序包替换前面程序包安装的文件安装时常用的组合:-ivh,-ivvh实例:安装zsh软件[root@localhostPackages]#rpm-ivhzsh-4.3.10-7.el6.x86_64.rpmwarning:zsh-4.3.10-7.el6.x86_64.rpm:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEYPreparing...###########################################[100%]1:zsh###########################################[100%]依赖关系:rpm包最大的缺点就是安装a软件包,可能依赖b,安装b依赖c,有时候一个包装到最后依赖几十个上百个都说不定。解决依赖关系安装软件包[root@localhostPackages]#rpm-ivhphp-5.3.3-38.el6.x86_64.rpmwarning:php-5.3.3-38.el6.x86_64.rpm:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEYerror:Faileddependencies:php-cli(x86-64)=5.3.3-38.el6isneededbyphp-5.3.3-38.el6.x86_64php-common(x86-64)=5.3.3-38.el6isneededbyphp-5.3.3-38.el6.x86_64上面的错误提示表示安装php依赖与php-cli软件包和php-common软件包,只需要一起安装就不会报错了[root@localhostPackages]#rpm-ivhphp-5.3.3-38.el6.x86_64.rpmphp-cli-5.3.3-38.el6.x86_64.rpmphp-common-5.3.3-38.el6.x86_64.rpm升级软件包:语法:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... -U:升级或安装(如果有就升级,没有就安装) rpm{-F|--freshen} [install-options] PACKAGE_FILE ... -F:升级(如果此前没有安装低版本软包,那么就不会执行升级操作)选项:--test:只是测试是否可以升级,而不是正正升级。--nodeps:升级时忽略依赖关系--force:强制升级--oldpackage:程序包降级--relocate:把允许修改安装路径的程序包的安装路径定位到新路径下--replacefiles:安装时只替换指定文件 常用组合:-Uvh,-Fvh注意:(1)一定不要对内核执行升级,新版内核可能对系统不兼容。 Linux允许多内核共存,所以,可以直接安装多个不同版本的内核;(2)如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件,而把新版本的配置文件重命名(加后缀.rpmnew)后保存。示例:升级zsh,下载到新版的zsh之后将软件包直接执行下面的升级命令即可[root@localhost~]#rpm-Uvhzsh-4.3.10-8.el6_5.x86_64.rpm新版zsh下载地址http://mirrors.aliyun.com/centos/6.6/updates/x86_64/Packages/卸载:语法:rpm {-e|--erase} [--allmatches] [--nodeps][--noscripts] [--notriggers] [--test] PACKAGE_NAME ...简单用法:rpm –e PACKAGE_NAME--nodeps:忽略依赖关系--test:测试卸载--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之。注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀,rpmsave)后留存;示例:卸载zsh[root@localhost~]#rpm-ezsh卸载的时候只需要对软件包名执行卸载命令即可,不需要更版本和后缀等信息,那样反而会报错。查询:查询某包是否已经安装,以及检查安装的所有包;还可以查看某包的详细信息语法:rpm {-q|--query} [select-options] [query-options][select-options]选项说明:1.查询某包或某些包是否安装;rpm –q PACKAGE_NAME示例:查询是否已经安装httpd,查询结果会输出httpd的完整包名。[root@localhostPackages]#rpm-qhttpdhttpd-2.2.15-39.el6.centos.x86_642.查询已经安装的所有包;rpm –qa说明:如果查看已经安装的所有包的话,输出的结果会很庞大,一般使用此选项常用的功能有两种(1)查询当前系统安装了多少rpm包示例:查询当前系统安装了多少软件包[root@localhost~]#rpm-qa|wc-l1032(2)将查询结果使用grep过滤,查看有多少匹配的软件包示例:查询当前系统安装的httpd相关软件包的信息[root@localhost~]#rpm-qa|grephttpdhttpd-tools-2.2.15-39.el6.centos.x86_64httpd-2.2.15-39.el6.centos.x86_643.查询某文件是由那个包安装生成的rpm –qf示例:查询/etc/httpd/conf/httpd.conf是由那个软件包安装的。[root@localhost~]#rpm-qf/etc/httpd/conf/httpd.confhttpd-2.2.15-39.el6.centos.x86_644.查询尚未安装包的信息-p 说明:-p选项 不能单独使用,需要结合[query-options]参数一起使用。示例:查询mysql软件包的相关信息[root@localhostPackages]#rpm-pqimysql-5.1.73-3.el6_5.x86_64.rpmwarning:mysql-5.1.73-3.el6_5.x86_64.rpm:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEYName:mysqlRelocations:(notrelocatable)Version:5.1.73Vendor:CentOSRelease:3.el6_5BuildDate:Thu13Feb201403:42:39AMCSTInstallDate:(notinstalled)BuildHost:c6b9.bsys.dev.centos.orgGroup:Applications/DatabasesSourceRPM:mysql-5.1.73-3.el6_5.src.rpmSize:2495591License:GPLv2withexceptionsSignature:RSA/SHA1,Thu13Feb201403:48:07AMCST,KeyID0946fca2c105b9dePackager:CentOSBuildSystem<http://bugs.centos.org>URL:http://www.mysql.comSummary:MySQLclientprogramsandsharedlibrariesDescription:MySQLisamulti-user,multi-threadedSQLdatabaseserver.MySQLisaclient/serverimplementationconsistingofaserverdaemon(mysqld)andmanydifferentclientprogramsandlibraries.ThebasepackagecontainsthestandardMySQLclientprogramsandgenericMySQLfiles.信息参数说明:Name:软件名Version:版本信息Release:发行号Install Date:包的安装时间Group:包所在的组Size:大小Signature:包的签名信息Packager:包的制作人URL:包的源代码程序可以从那里获取到Summary:包的简要介绍Relocations:是否被重新定位到其他位置Vendor:提供商Build Date:包的构建时间Build Host:编译包的主机Source RPM:源rpm包License:许可证Description:包的详细介绍[query-options]选项说明:1.查询某包的简要信息rpm -qi2.查询某包安装生成的文件列表rpm –ql示例:显示安装httpd生成的文件列表,[root@localhostPackages]#rpm-qlhttpd/etc/httpd/etc/httpd/conf/etc/httpd/conf.d/etc/httpd/conf.d/README/etc/httpd/conf.d/welcome.conf/etc/httpd/conf/httpd.conf/etc/httpd/conf/magic/etc/httpd/logs/etc/httpd/modules/etc/httpd/run……生成列表过多,省略部分内容……3.查询某包安装完成后的所有配置文件rpm –qc示例:显示php安装完成之后的配置文件。[root@localhost~]#rpm-qcphp/etc/httpd/conf.d/php.conf4.查询某包安装完成后的帮助文件rpm –qd示例:查询安装完成httpd之后生成了那些帮助文件[root@localhost~]#rpm-qdhttpd/usr/share/doc/httpd-2.2.15/ABOUT_APACHE/usr/share/doc/httpd-2.2.15/CHANGES/usr/share/doc/httpd-2.2.15/LICENSE/usr/share/doc/httpd-2.2.15/NOTICE/usr/share/doc/httpd-2.2.15/README/usr/share/doc/httpd-2.2.15/VERSIONING/usr/share/man/man8/apachectl.8.gz/usr/share/man/man8/htcacheclean.8.gz/usr/share/man/man8/httpd.8.gz/usr/share/man/man8/rotatelogs.8.gz/usr/share/man/man8/suexec.8.gz5.查看某包制作时随版本变化的changelog信息,changelog记录了包的每次更新都做了什么改动rpm –q –changelog示例:查询httpd的changelog[root@localhost~]#rpm-q-changeloghttpd*WedOct152014JohnnyHughes<[email protected]>-2.2.15-39.el6.centos-RollinCentOSBranding*TueAug052014JanKaluza<[email protected]>-2.2.15-39-mod_proxy:closeclientconnectionifthebackendclosesconnection(#1111410)……输出内容过多,省略部分内容……6.查询某包提供的capabilitiesrpm –q –provides示例:查询httpd的提供的capabilities[root@localhost~]#rpm-q-provideshttpdconfig(httpd)=2.2.15-39.el6.centoshttpd-mmn=20051115httpd-suexec=2.2.15-39.el6.centosmod_actions.so()(64bit)mod_alias.so()(64bit)mod_asis.so()(64bit)mod_auth_basic.so()(64bit)7.查询某包所依赖的capabilitiesrpm –q –requires示例:查询httpd依赖的capabilities[root@localhost~]#rpm-q-requireshttpd/bin/bash/bin/sh/etc/mime.types/usr/sbin/useraddapr-util-ldapchkconfigconfig(httpd)=2.2.15-39.el6.centoshttpd-tools=2.2.15-39.el6.centos8.查询某包安装卸载时执行的脚本rpm –q –scripts脚本有四类:preinstall:安装过程开始之前执行的脚本postinstall:安装过程完成之后执行的脚本prenuinstall:卸载开始之前执行的脚本postuninstall:卸载过程完成之后执行的脚本示例:查询httpd的安装卸载脚本[root@localhost~]#rpm-q-scriptshttpdpreinstallscriptlet(using/bin/sh):#表示安装前脚本#Addthe"apache"usergetentgroupapache>/dev/null||groupadd-g48-rapachegetentpasswdapache>/dev/null||\useradd-r-u48-gapache-s/sbin/nologin\-d/var/www-c"Apache"apacheexit0postinstallscriptlet(using/bin/sh):#表示安装后脚本#Registerthehttpdservice/sbin/chkconfig--addhttpd/sbin/chkconfig--addhtcachecleanpreuninstallscriptlet(using/bin/sh):#卸载前执行的脚本if[$1=0];then/sbin/servicehttpdstop>/dev/null2>&1/sbin/chkconfig--delhttpd/sbin/servicehtcachecleanstop>/dev/null2>&1/sbin/chkconfig--delhtcachecleanfiposttransscriptlet(using/bin/sh):#卸载完成执行之后执行的脚本test-f/etc/sysconfig/httpd-disable-posttrans||\/sbin/servicehttpdcondrestart>/dev/null2>&1||:校验:查询包安装之后生成的文件是否发生了改变语法:rpm{-V|--verify} [select-options] [verify-options]示例:查询zsh是否发生改变。[root@localhost~]#rpm-VzshS.5....T.c/etc/zlogin校验结果说明:S file Size differs:文件大小改变了M Mode differs (includes permissions andfile type):权限改变了5 digest (formerly MD5 sum) differs:内容改变了D Device major/minor number mismatch:设备文件不匹配L readLink(2) path mismatch:路径不匹配U User ownership differs:属主不匹配G Group ownership differs:属组不匹配T mTime differs:最近一个修改时间改了P caPabilitiesdiffer:caPabilities修改了包来源合法性验证:来源合法:由我们信任的制作者提供 依赖于:制作者的数字签名:签名是作者使用自己的私钥加密程序包的特征码进行的。内容合法: 包未被二次修改:完整性校验成功 依赖于:制作者提供的程序包特征码 验证方式:安装者同样的特征码提供程序包的特征码,并于原作者提供的相比较。验正其光盘中程序包的来源及完整性:光盘中的程序包都自带了验证密钥,直接到入到系统即可对光盘中的软件包进行验证。导入方法: rpm --import /path/to/RPM-GPG-KEY-FILE验正:rpm {-K|--checksig} PACKAGE_FILE --nosignature:不检查来源合法性 --nodigest:不检查完整性示例:系统盘自带的密钥文件[root@localhost~]#ll/media/RPM-GPG-KEY-CentOS-*-r--r--r--2rootroot1706Nov282013/media/RPM-GPG-KEY-CentOS-6-r--r--r--2rootroot1730Nov282013/media/RPM-GPG-KEY-CentOS-Debug-6-r--r--r--2rootroot1730Nov282013/media/RPM-GPG-KEY-CentOS-Security-6-r--r--r--2rootroot1734Nov282013/media/RPM-GPG-KEY-CentOS-Testing-6导入密钥文件,检查httpd安装包的合法性[root@localhostPackages]#rpm--import/media/RPM-GPG-KEY-CentOS-6[root@localhostPackages]#rpm-Khttpd-2.2.15-39.el6.centos.x86_64.rpmhttpd-2.2.15-39.el6.centos.x86_64.rpm:rsasha1(md5)pgpmd5OKrpm数据库通过rpm数据库可以知道当前系统安装了那些rpm软件包,也能知道系统中的某个文件属于那个软件包,以及软件的依赖关系的信息,rpm数据库是系统自己进行管理不需要管理员进行手工参与,但是如果rpm数据库出现损坏,需要管理员进行重建rpm数据库。重建数据库:rpm {--initdb|--rebuilddb} [-v][--dbpath DIRECTORY] [--root DIRECTORY]--initdb:初始化数据库,即数据库完全不存在时,可新建之。--rebuilddb:无论当前数据存在与否,都会直接重建此库。rpm数据库位置为/var/lib/rpm[root@localhost~]#ll/var/lib/rpm/total53384-rw-r--r--.1rootroot2891776Mar2405:19Basenames-rw-r--r--.1rootroot12288Mar2314:46Conflictname-rw-r--r--1rootroot24576Mar2405:22__db.001-rw-r--r--1rootroot229376Mar2405:22__db.002-rw-r--r--1rootroot1318912Mar2405:22__db.003-rw-r--r--1rootroot753664Mar2405:22__db.004-rw-r--r--.1rootroot937984Mar2405:19Dirnames-rw-r--r--.1rootroot5267456Mar2405:19Filedigests-rw-r--r--.1rootroot20480Mar2405:19Group-rw-r--r--.1rootroot16384Mar2405:19Installtid-rw-r--r--.1rootroot45056Mar2405:19Name-rw-r--r--.1rootroot24576Mar2319:25Obsoletename-rw-r--r--.1rootroot42291200Mar2405:19Packages-rw-r--r--.1rootroot1331200Mar2405:19Providename-rw-r--r--.1rootroot643072Mar2405:19Provideversion-rw-r--r--.1rootroot12288Mar2314:29Pubkeys-rw-r--r--.1rootroot438272Mar2405:19Requirename-rw-r--r--.1rootroot208896Mar2405:19Requireversion-rw-r--r--.1rootroot90112Mar2405:19Sha1header-rw-r--r--.1rootroot77824Mar2405:19Sigmd5-rw-r--r--.1rootroot12288Mar2314:45TriggernameyumYum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工去安装每一个rpm包。要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装包文件的软件仓库,提供软件仓库的服务器也称为yum服务器,可以机只要正确指定仓库地址等信息,就可以通过对应的源服务器里安装或更新软件了。yum配置文件主配置文件主配置文件:/etc/yum.conf查询配置信息的方法:man yum.conf[root@localhost~]#cat/etc/yum.conf[main]#提供公共配置信息,也就是所有仓库共享cachedir=/var/cache/yum/$basearch/$releasever#缓存的目录keepcache=0#是否开启缓存debuglevel=2#调试级别,定位安装程序时出现问题的问题所在logfile=/var/log/yum.log#yum日志文件exactarch=1#安装程序包时是否需要和当前平台保持一致obsoletes=1#检查包是否是废弃gpgcheck=1#检查包的来源合法性plugins=1#yum是否支持插件installonly_limit=5#一次安装程序包限制的数量bugtracker_url=http://bugs.centos.org/set_project.php#bug追踪的路径project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-release#判断当前系统的信息#Thisisthedefault,ifyoumakethisbiggeryumwon'tseeifthemetadata#isnewerontheremoteandsoyou'll"gain"thebandwidthofnothavingto#downloadthenewmetadataand"pay"foritbyyumnothavingcorrect#information.#Itisesp.important,tohavecorrectmetadata,fordistributionslike#Fedorawhichdon'tkeepoldpackagesaround.Ifyoudon'tlikethischecking#interuptingyourcommandlineusage,it'smuchbettertohavesomething#manuallycheckthemetadataonceanhour(yum-updatesdwilldothis).#metadata_expire=90m#PUTYOURREPOSHEREORINseparatefilesnamedfile.repo#in/etc/yum.repos.d#单独的仓库放入此目录,必须以.repo结尾各仓库配置文件各仓库的定义:/etc/yum.repos.d/*.repo[repositoryid]:对于当前系统的yum来讲,此repositoryid用于惟一标识此repository指向,因此,其必须惟一;name= :当前仓库描述信息;baseurl=url://path/to/repository/:指明repository的访问路径;通常为一个文件服务器上输出的某repository; url: ftp服务 ftp://SERVER/PATH/TO/REPOSITORY http服务 http://SERVER/PATH/TO/REPOSITORY 本地目录: file:///PATH/TO/REPOSTIROYenabled={1|0}:此仓库是否可被使用,1表示开启,0表示关闭,如果不选择表示开启gpgcheck={1|0}:是否对程序包做校验,1表示开启,0表示关闭,如果不选择表示开启gpgkey=url://path/to/keyfile:指明gpgkey(作者公钥信息)文件路径,如果开启gpgcheck就必须配置此选项,除非已经在本地导入了。cost=:指明当前repository的访问开销,默认为1000;开销越小访问的优先级越高。示例:当前系统上的yum仓库配置[root@localhost~]#cat/etc/yum.repos.d/centos6.6.repo[base]name=CentOS$releasever$basearchonlocalserver172.16.0.1baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-$basearch/gpgcheck=0[extra]name=CentOS$releasever$basearchextrasbaseurl=http://172.16.0.1/centos/$releasever/extras/$basearch/gpgcheck=0[epel]name=FedoraEPELforCentOS$releasever$basearchonlocalserver172.16.0.1baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/gpgcheck=0配置公网yum源配置前说明1.必须保证当前服务器可以连接公网2.需要切换到/etc/yum.repos.d/目录下cd /etc/yum.repos.d/配置搜狐yum源:wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo配置epelyum源:rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm配置阿里云yum源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo Yum命令仓库管理repolist:列出已经配置的所有可用仓库语法:repolist[all|enabled|disabled]选项:all:列出所有yum仓库 enable:列出所有启用的yum仓库,默认选项 disabled:列出所有禁用的yum仓库示例:列出所有启用的yum仓库[root@localhost~]#yumrepolistLoadedplugins:fastestmirror,refresh-packagekit,securityLoadingmirrorspeedsfromcachedhostfilerepoidreponamestatusbaseCentOS6x86_64onlocalserver172.16.0.14,184epelFedoraEPELforCentOS6x86_64onlocalserver172.16.0.112,922extraCentOS6x86_64extras2,334repolist:19,440缓存管理清除缓存:clear语法:clean [ packages | metadata |expire-cache | rpmdb | plugins | all ]选项: packages:只清理包 metadata:只清理元数据 expire-cache:只清理过期缓存 rpmdb:只清理rpm数据库 plugins:只清理插件 all:清理所有缓存yum缓存目录是/var/cache/yum/,有时候yum源有了更改,系统无法及时进行同步的话,可以删除缓存目录中所有文件。[root@localhost~]#ll/var/cache/yum/x86_64/6/base/extra/test/epel/httpdyum/timedhosts.txt示例:清除所有缓存[root@localhost~]#yumclearnall缓存创建:makecache 自动连接至每一个可用仓库,下载其元数据,将其创建为缓存;程序包查看语法:yum list [all | glob_exp1] [glob_exp2] [...]yum list {available|updates|installed|extras|obsoletes} [glob_exp1][...]选项: available:可安装,但是尚未安装的包 updates:可用于升级的包 installed:安装过的包 extras:系统安装的包,但是仓库中没有提供包 obsoletes:可被废弃的包,当前系统上已经安装,但是yum仓库中有更新的包 recent:刚刚加入仓库的新包包组查看:语法:grouplist [hidden] [groupwildcard] [...]选项: Installed Groups:已经安装的包组Installed Language Groups:安装的语言包组Available Groups:未安装的包组Available Language Groups:未安装的语言包组示例:查询yum仓库中heartbeat软件包的相关信息[root@localhost~]#yumlistheartbeat*#表示查询heartbeat开头的软件包Loadedplugins:fastestmirror,refresh-packagekit,securityLoadingmirrorspeedsfromcachedhostfileAvailablePackagesheartbeat.x86_643.0.4-2.el6epelheartbeat-devel.i6863.0.4-2.el6epelheartbeat-devel.x86_643.0.4-2.el6epelheartbeat-libs.i6863.0.4-2.el6epelheartbeat-libs.x86_643.0.4-2.el6epel程序包安装语法:install package1 [package2] [...]Note: 只需要提供包名;如果某包有在不同仓库中有多个不同版本,默认会安装最新版本;如果要安装指定版本:install PACKAGE-VERSION ...示例:安装LAMP所需的软件[root@localhost~]#yuminstallhttpdmysqlmysql-serverphpphp-mysql-y重新安装(覆盖安装)语法: reinstall package1 [package2] [...]示例:覆盖安装httpd[root@localhost~]#yumreinstallhttpd程序包升级/降级程序包升级语法:update [package1] [package2] [...]程序包降级语法:downgrade package1 [package2] [...]示例:升级httpd[root@localhost~]#yumupdatehttpd卸载:语法:remove | erase package1 [package2] [...]所有依赖于正卸载的程序包的程序包会被一并卸载;示例:卸载httpd[root@localhost~]#yum-yremovehttpd查询:查询程序的相关简要信息:info PACKAGE ...在包名和sumary信息中搜索指定的关键字:search KEYWORD ...查询指定文件由哪个程序包安装生成:provides|whatprovides /PATH/TO/SOMEFILE示例:查询httpd软件包的简要信息[root@localhost~]#yuminfohttpdLoadedplugins:fastestmirror,refresh-packagekit,securityLoadingmirrorspeedsfromcachedhostfileAvailablePackagesName:httpdArch:x86_64Version:2.2.15Release:39.el6.centosSize:825kRepo:baseSummary:ApacheHTTPServerURL:http://httpd.apache.org/License:ASL2.0Description:TheApacheHTTPServerisapowerful,efficient,andextensible:webserver.示例:查询/etc/httpd/conf/httpd.conf文件是由那个程序包安装生成的[root@localhost~]#yumprovides/etc/httpd/conf/httpd.confLoadedplugins:fastestmirror,refresh-packagekit,securityLoadingmirrorspeedsfromcachedhostfilehttpd-2.2.15-39.el6.centos.x86_64:ApacheHTTPServerRepo:baseMatchedfrom:Filename:/etc/httpd/conf/httpd.conf安装或升级本地程序包localinstall rpmfile1 [rpmfile2] [...]用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包;localupdate rpmfile1 [rpmfile2] [...]包组管理列出所有包组:grouplist显示指定包组详情:groupinfo group1 [...]安装:groupinstall group1 [group2] [...]卸载:groupremove group1 [group2] [...]升级:groupupdate group1 [group2] [...]Note: 可直接用install、remove或update来管理包组: @GROUP_NAME yuminstall @"Server Platform Development"Yum内置变量(1) $raleasever: 当前OS发行版的主版本号; 例如,对CentOS 6.6 x86_64,主版本号为6;(2) $arch:平台 i386,i486(3) $basearch: 基础平台,例如i686, i586, i486以及i386的基础平台同为i386;示例:阿里云yum配置中的一条urlbaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/当前系统为CentOS 6.6 x86_64,那么这条URL对应的路径如下所示:baseurl=http://mirrors.aliyun.com/centos/6/os/x86_64自己创建yum仓库Yum仓库通常借助于http或ftp协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据(repodata),其中收集了目录下所有rpm包的头部信息。示例:搭建一个xen的yum仓库。安装vsftpd,用来存放软件包[root@localhost~]#yum-yinstallvsftpd下载xen相关的rpm包,由于我是内网有在ftp有提供,如果没有内网可以从公网下载[root@localhost~]#cd/var/ftp/pub/[root@localhostpub]#lftp172.16.0.1lftp172.16.0.1:~>cd/pub/Sources/6.x86_64/xen-4.1/lftp172.16.0.1:/pub/Sources/6.x86_64/xen-4.1>mget*.rpmlftp172.16.0.1:/pub/Sources/6.x86_64/xen-4.1>bye下载完成创建repodata数据库[root@localhostpub]#yum-yinstallcreaterepo[root@localhostpub]#createrepo/var/ftp/pub/Spawningworker0with41pkgsWorkersFinishedGatheringworkerresultsSavingPrimarymetadataSavingfilelistsmetadataSavingothermetadataGeneratingsqliteDBsSqliteDBscomplete[root@localhostpub]#ll/var/ftp/pub/repodata/total600-rw-r--r--1rootroot304867Mar2410:530317cfa18c7a408ce85b9f26c70f2c75b830b9fb948630078ae036df83f50b06-filelists.sqlite.bz2-rw-r--r--1rootroot15065Mar2410:5318d58a704b5ed68ec7720d0e9c5aa1482ec62ef674b3617e7b4a3cedda81c2c0-other.sqlite.bz2-rw-r--r--1rootroot34272Mar2410:53cc71ed8cefe16612d5504baa94f439be64c2103f8cd5a04ae0099d02c378c4c6-primary.sqlite.bz2-rw-r--r--1rootroot218698Mar2410:53cf62f043e9e7a559262941ef8813c50b941eb6960f0ac15e285944b7c7f9b116-filelists.xml.gz-rw-r--r--1rootroot12849Mar2410:53d6c0e05125729c93e887a36120ca1556701b5a6381a267027e66cc58cb1676bd-primary.xml.gz-rw-r--r--1rootroot8455Mar2410:53dfbc78452c1ed788681afdd3a4172ffc73e2fc150308380b4012f9402cf1863b-other.xml.gz-rw-r--r--1rootroot2997Mar2410:53repomd.xml创建完成数据库之后启动ftp服务[root@localhostpub]#servicevsftpdstart编辑yum的配置文件,添加自己建立的yum仓库信息[root@localhost~]#vim/etc/yum.repos.d/centos6.6.repo[test]name=ftpyumbaseurl=ftp://172.16.4.100/pub/gpgcheck=0enable=1列出yum配置信息[root@localhost~]#yumrepolistLoadedplugins:fastestmirror,refresh-packagekit,securitytest|2.9kB00:00test/primary_db|33kB00:00repoidreponamestatustestftpyum41repolist:41安装xen[root@localhost~]#yum-yinstallxen如果xen可以成功安装,说明yum仓库搭建成功了。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表