rpm包管理以及前端工具yum

rpm包是什么?

源代码  --> 目标二进制格式(二进制程序、库文件、配置文件、帮助文件) --> 组织成为一个或有限几个“包”文件;



目前各主流发行版的软件包格式以及包管理器

  debian:dpt, dpkg, ".deb"

  redhat: rpm, ".rpm"

  S.u.S.E:rpm, ".rpm",



软件包命名格式介绍:

wKioL1bqVtyD9GcqAAApGAOQnkA323.png



rpm包的安装

安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...


[install-options]:

       -v:verbose,详细信息

        -vv:更详细的输出

-h:hash marks输出进度条;每个#表示2%的进度;

--test:测试安装,检查并报告依赖关系及冲突消息等;

--nodeps:忽略依赖关系;不建议;

--replacepkgs:重新安装

常用法:rpm  -ivh  PACKAGE_FILE ...

  wKiom1bqWQOxZcq6AAAcfhRNllk155.png





rpm包的升级:

   rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 升级或安装

   rpm {-F|--freshen} [install-options] PACKAGE_FILE ...  升级


举例:rpm  -Uvh PACKAGE_FILE ...

      rpm  -Fvh PACKAGE_FILE ...




rpm包的降级:

        --oldpackage:降级;

         --force:强制升级;




rpm包的卸载

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...


--allmatches:卸载所有匹配指定名称的程序包的各版本;

--nodeps:忽略依赖关系

--test:测试卸载,dry run模式

wKiom1bqXTHhqh33AAARf8bsQYQ892.png




rpm包的查询:

      rpm {-q|--query} [select-options] [query-options]

 [select-options]

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;

-a, --all:查询所有已经安装过的包;

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]

--changelog:查询rpm包的changlog;

--provides:列出指定的程序包提供的所有的CAPABILITY;

-R, --requires:查询指定的程序包的依赖关系;

--scripts:查看程序包自带的脚本片断;

常用组合用法:
-qi  PACKAGE,           -i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
-qf FILE,               -f  FILE:查询指定的文件由哪个程序包安装生成;
-qc PACKAGE,            -c, --configfiles:查询指定的程序包提供的配置文件;
-ql PACKAGE,            -l, --list:程序安装生成的所有文件列表;
-qd PACKAGE             -d, --docfiles:查询指定的程序包提供的文档;
-qpi  PACKAGE_FILE,     -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
-qpl PACKAGE_FILE,    查看未安装的包可能安装后的所生成的文件列表
-qpc PACKAGE_FILE, ...


wKiom1bqYQCQBxTAAAAvOCosLYw859.png



rpm包的校验

rpm {-V|--verify} [select-options] [verify-options]

包来源合法性验正和完整性验正:

来源合法性验正:

完整性验正:

获取并导入信任的包制作者的密钥:

对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:(1) 安装此组织签名的程序时,会自动执行验正;(2) 手动验正:rpm -K PACKAGE_FILE



rpm包的数据库重建:

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]


--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;

--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;





                         yum详解

为什么会出现yum?

rpm软件管理对解决软件依赖关系有缺陷,yum可以解决软件依赖关系。



什么是yum仓库?

yum repository: yum repo

存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);所在目录就是yum仓库的位置



yum仓库.repo中可指向文件服务器:

ftp://

http://

nfs://

file:///


yum客户端:

配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置


yum仓库指向的定义:

[repositoryID]                       注:仓库id,不可以重名

name=Some name for this repository   注:描述仓库的字符

baseurl=url://path/to/repository/    注:指向仓库的位置

enabled={1|0}                        注:1表示启用仓库

gpgcheck={1|0}                       注:1为启用包来源合法和完整性检查

gpgkey=URL                           注:密钥文件访问路径

enablegroups={1|0}                   注:支持组管理

failovermethod={roundrobin|priority} 注:故障转移,roundrobin为随机轮询 priority为优先级

默认为:roundrobin,意为随机挑选;

cost=默认为1000



yum命令的用法:

格式:yum [options] [command] [package ...]


    显示仓库列表:

    repolist [all|enabled|disabled]


    显示程序包:

    list

    # yum list [all | glob_exp1] [glob_exp2] [...]    支持通配glob

      例如: yum list all zsh*

    # yum list {available|installed|updates} [glob_exp1] [...]

    注释:    available:仓库中有但尚未安装

              installed:已经安装

              updates:可以用的升级



   安装程序包:

    install package1 [package2] [...]

         update:升级

         update_to:升级为指定版本

         remove|erase:卸载 例如:yum remove php53-pdo 注:卸载会把依赖的软件包也一并卸载了

         info相当于rpm -qi 查看软件信息的。

         provides |whatprovides:查看指定的文件或特性是由哪个包安装生成的

    reinstall package1 [package2] [...]  (重新安装)



    downgrade package1 [package2] [...] (降级)


    检查可用升级:

       check-update


    卸载程序包:

    remove | erase package1 [package2] [...]


    查看程序包information:

    info [...]


    查看指定的特性(可以是某文件)是由哪个程序包所提供:

    provides | whatprovides feature1 [feature2] [...]


    清理本地缓存:

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]


    构建缓存:

    makecache


    搜索:

    search string1 [string2] [...]


    以指定的关键字搜索程序包名及summary信息;


    查看指定包所依赖的capabilities:

    deplist package1 [package2] [...]


    查看yum事务历史:

    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]


   

    包组管理的相关命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]


    如何使用光盘当作本地yum仓库:

    (1) 挂载光盘至某目录,例如/media/cdrom

    # mount -r -t iso9660 /dev/cdrom /media/cdrom

    (2) 创建配置文件

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=


    yum的命令行选项:

    --nogpgcheck:禁止进行gpg check;

    -y: 自动回答为“yes”;

    -q:静默模式;

    --disablerepo=repoidglob:临时禁用此处指定的repo;

    --enablerepo=repoidglob:临时启用此处指定的repo;

    --noplugins:禁用所有插件;


    yum的repo配置文件中可用的变量:


    $releasever: 当前OS的发行版的主版本号;

    $arch: 平台;

    $basearch:基础平台;

    $YUM0-$YUM9


   举例: http://mirrors.magedu.com/centos/$releasever/$basearch/os




    创建yum仓库的数据库文件:

   命令使用格式: createrepo [options] <directory>   


详解:

   首先要安装createrepo这个软件,然后在rpm软件包所在的目录执行yum  createrepo 就会创建出一个.repodata 的文件

   然后在/etc/yum.ropos.d/ 下面创建一个.repo结尾的文件,baseurl指向.repodata所在的目录就可以了。



 


   


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

知识扩展

  • yum localinstall php53-mysql-5.3.3-5.e15.i386.rpm  注:localinstall 后面需要指向文件,同时也解决了依赖关系



  • 如果从互联网上下载的rpm包,此时会进行来源和完整性检查。会报错的

     yum --nogpgcheck install 文件 注:忽略检查



  • 创建仓库的完整过程


1.yum install createrepo

2.mkdir -pv /yum/VT 创建一个目录来存放软件,然后往里名弄点软件 cp /media/cdrom/VT/*.rpm /yum/VT/

3.cd /etc/yum.repos.d创建一个.repo的文件,并编辑。

   [VT]

   name=VT

   baseurl=file:///yum/VT

   enable=1

   gpgcheck=0

4、createrepo /yum/VT/ 创建 repomd.xml文件

5、yum clean all 清理缓存

6、yum repolist 检查一下库列表

7、cp /comps-rhel5-vt.xml /root

8、createrepo -g /root/comps-rhel5-vt.xml /yum/VT/






  • 下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章