设为首页 收藏本站
查看: 536|回复: 0

[经验分享] RHEL程序包管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-28 09:50:24 | 显示全部楼层 |阅读模式
YUM : Yellowdog UpdateModifier  
RPM : RPM is PackageManager

一.程序包管理

1.程序包的命名格式:
    程序包的命名经过多个过程,最初状态是由程序员编写后以program_name-VERSION的形式打包共享的。编译之后会加上相应的适用硬件架构平台ARCH。
program name-VERSION.tar.gz
                           编译:--> 归档压缩      
                            programname-VERSION-ARCH.tar.gz
                           包管理器:-->
                            program name-VERSION-ARCH.rpm
版本号的具体形式:
VERSION:major.minor.release
                            major:主版本号
                            minor:次版本号
                            release:  修订号
    例如:bash-4.3.2.tar.xz
当然,包的命名中不仅仅有程序包的版本号,还会包括所对应的程序包管理器的的修订号。
    例如:RPM包bash-4.3.2-1.centos6.x86_64.rpm,-1仅用于标识对rpm自身的修订。

2.程序包的分包机制:
程序包之所以会有分包机制主要是为了让程序包适应不同的用户。试想:某程序有20个功能;有10个常用功能,有3个次常用,用3个二次开发相关,余下极少用。这样分包之后,主包可以满足大多数用户的10常用功能,特定的用户自行安装自己需要的功能包。
包的分类:
                   主包:命名与源程序包名一致
                                     bash-4.3.2-1.centos6.x86_64.rpm
                                 子包(支包):
                                     bash-devel-4.3.2-1.centos6.x86_64.rpm
3.获取包的途径:
                                1、系统原发行光盘或者官方站点服务器;
                                     镜像:http://mirrors.sohu.com
                                2、程序项目官方站点
                                3、第三方组织
                                     Fedora-EPEL:epel
                                     搜索引擎:http://rpmfind.net,http://rpm.pbone.net, http://pkgs.org
                                4、自己制作

提示:对于第三方组织,为了保证包的可靠。最好校验来源合法性,包的完整性。

二.RHEL系统程序包管理工具RPM的应用:

1.安装
           格式:#rpm{-i|--install} [install-options] PACKAGE_FILE ...
           #rpm -ivh  [install-options]PACKAGE_FILE

           选项
                     -i: 安装
                     -v, -vv , -vvv:显示详细信息, vvv比vv显示的信息更为详细, vv又比v详细
                     -replacepkgs:重新安装
                     --nodeps: 忽略依赖关系
                     --test: 测试安装,而不执行真正的安装过程;dryrun模式;

    注意:这里在安装程序包的时候极有可能会出现包之间的依赖关系,如果不解决依赖关系可能会导致依赖包的不正常;

2.升级:
            格式:# rpm -Fvh[install-options] PACKAGE_FILE ...
                    执行升级时,如果存在升级包就升级。如果不存在,即停止。
            选项:
                    -U:如果有较旧版本程序包, 则升级安装;否则执行安装操作
                    -F:如果有较旧版本程序包, 则升级安装;否则终止操作
                    -v, -vv , -vvv:显示详细信息,vv比v信息更全面,依次vvv最详细。
                    --oldpackage:降级安装;
                    --force: 忽略冲突,强制执行过程;

    注意:1.不要对内核包执行升级操作;linux支持多版本内核并存,因此,对新版本内核可直接安装;2.如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保

3.卸载:
            格式: #rpm -ePACKAGE_NAME ...
            选项:  --nodeps: 忽略依赖关系
                    --test:卸载测试

    注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将也不会被删除,而是被重命名(原文件加.rpmsave后缀)并保留;
4.查询:
            格式:#rpm{-q|--query} [select-options] [query-options]
            选项:  -q PACKAGE_NAME ... 查询某包是否安装           
             -qa   查询已安装的所有包
      -qf   /path/to/somefile查询某文件是由哪个包安装生成
      -qpl  PACKAGE_FILE查询尚未安装包的相关信息
                    -qi   PACKAGE_NAME查询某包的简要说明信息
                    -ql   PACKAGE_NAME安装后的所有文件列表
                    -qc   PACKAGE_NAME查询某包安装后生成的所有配置文件的列表
       -qd   PACKAGE_NAME查询某包安装后生成的所有帮助文件的列表   
      -q --changelogPACKAGE_NAME查询某rpm包制作时changelog变化                      -q --provides PACKAGE_NAME查询某包提供的capabilities
                    -q --requires PACKAGE_NAME查询某包所依赖的capabilities
       -q --scripts查询某包安装卸载时的脚本

5.校验:
             格式:rpm -V PACKAGE_NAME   
             如果出现问题,就会以下面单个字符形式显示。
S file Sizediffers                              
                          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 caPabilities differ
             包来源合法性及完整性验正:
                          rpm--import PUBKEY ...
                          rpm{-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE
                                 --nosignature:不检查来源合法性
                                 --nodigest:不检查完整性

三.Linux程序包管理前端工具YUM

1.安装:
           yum install PACKAGE_NAME ...
                         PACKAGE-VERSION 安装指定的版本的程序
           reinstall PACKAGE_NAME ... 重装指定的程序包  
           yum groupinstall "GROUP_NAME"  安装包组

   注意:这里加引号是防止空格
2.升级:
                     yum update PACKAGE_NAME
                         update PACKAGE-VERSION升级包可用,且仅期望升级指定版本
                     yum groupupdate "GROUP_NAME"升级包组
                     yum check-update检查可用升级
3.降级:           yum downgrade PACKAGE_NAME
4.卸载:
                 yum erase|removePACKAGE_NAME:
                 yum groupremove "GROUP_NAME "卸载包组
                 或yum remove@"GROUP_NAME"

   注意:依赖于卸载指定程序包的其它包,会被一并卸载;

5.查询:
                    yum list 查看所有包
                    yum info PACKAGE_NAME 查看具体某个包组
                    yum search KEYWORD: 根据关键字模糊查询包名
                    yum provides|whatprovides/path/to/somefile
                    yum grouplist 显示所有包组



6.yum客户端包仓库的创建:
配置文件:/etc/yum.conf这个是核心配置文件。当需要配置包仓库路径的时候,可以自己创建/etc/yum.repos.d/*.repo    例如:vim/etc/yum.repos.d/REPO_ID.repo
仓库定义:
                            [REPO_ID]
                            name=REPOdescription
                            baseurl=ftp://192.168.0.1/pub/CentOS6/包仓库路径
                            enabled={1|0}创建时包仓库是否激活默认为1
                            gpgcheck={1|0}是否检验包的可靠性
                            gpgkey=ftp://172.16.0.1/pub/CentOS6/gpg-key公钥导入地址
            保存退出执行包仓库创建命令:
            yum –y install createrepo


    注意:1、在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;2、baseurl中指定路径时可使用变量$releasever:表示当前OS发行版的主版本号;$basearch:表示基础平台,例如i686,i586,i486,i386系列的基础平台都是i386;                           
          例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

7.程序包的编译安装:
有时我们计划使用的包在仓库中无法找到时,还需要自己编译安装。
编译安装源程序的前提:
提供开发环境:开发工具和开发库
    包组:DevelopmentTools、Server Platform Development、Desktop PlatformDevelopment。
项目构建工具:make (gcc)。这是C源程序的的编译过程。
编译C源程序的步骤:
1、/configure:检查编译环境,并根据指定的选项确定编译的特性、安装路径等;
         --prefix=:   指定安装路径;多数程序都有默认安装路径;
         --sysconfidr=:   指定配置文件安装路径;
    2、make:调用所需要的编译器根据makefile配置文件定义执行编译过程;
    3、make install:安装程序;  
    注意:这里的./configure的目的会生成makefile文件,如果包中已有可直接跳过。

8.程序安装于专用目录时,安装后的配置:
    1.导出二进制程序所在路径至PATH环境中
    # export PATH=/usr/local/nginx/sbin:$PATH
    手动添加配置文件: /etc/profile.d/*.sh   
2导出库文件给OS
    OS查找库文件方法:根据/etc/ld.so.conf配置文件指定的路径搜索,或搜索/lib, /lib64, /usr/lib, /usr/lib64,把查找到的所有的库文件路径和其名称映射关系保存为一个缓存文件/etc/ld.so.cache;
手动添加配置文件:/etc/ld.so.conf.d/*.conf
假设nginx安装于/usr/local/nginx,此目录中有其库文件子目录lib,导出此目录中库文件:
       (1)新建文件/etc/ld.so.conf.d/nginx.conf,在文件添加如下行:
                                         /usr/local/nginx/lib   
        (2) 运行命令:
                                         Ldconfig  -v:
3帮助文件导出
    man命令搜索特定路径查找手册页文件,这些路径是定义在/etc/man.config中的MANPATH参数所指定的路径下的;将源程序的包中man文件cp到/usr/share/man/man{1,8}这里要具体看自己的源程序包是第几章节。
4头文件导出  
        导出独立安装应用程序的头文件方法:创建链接至/usr/include下即可;
例如:/usr/local/nginx/include
    #ln -sv /usr/local/nginx/include /usr/include/nginx


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-34046-1-1.html 上篇帖子: 制作red hat本地光盘yum 下篇帖子: Linux的基本原则 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表