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

[经验分享] linux程序包管理 rpm yum 编译

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-26 08:54:27 | 显示全部楼层 |阅读模式
rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
                        安装:-i, --install
                        升级:-U, --update, -F, --freshen
                        卸载:-e, --erase
                        查询:-q, --query
                        校验:-V, --verify
                        数据库维护:--builddb, --initdb

安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...
                rpm  -ivh  PACKAGE_FILE ...
        GENERAL OPTIONS:
                        -v:verbose,详细信息
                        -vv:更详细的输出
        [install-options]:
                        -h:hash marks输出进度条;每个#表示2%的进度;
                        --test:测试安装,检查并报告依赖关系及冲突消息等;
                        --nodeps:忽略依赖关系;不建议;
                        --replacepkgs:重新安装
注意:rpm可以自带脚本;
四类:--noscripts
        preinstall:安装过程开始之前运行的脚本,%pre , --nopre
        postinstall:安装过程完成之后运行的脚本,%post , --nopost
        preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun
        postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun
        --nosignature:不检查包签名信息,不检查来源合法性;
        --nodigest:不检查包完整性信息;

升级:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
                -U:升级或安装;
                -F:升级
        rpm  -Uvh PACKAGE_FILE ...
        rpm  -Fvh PACKAGE_FILE ...
                --oldpackage:降级;
                --force:强制升级;
注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;

          (2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
                --allmatches:卸载所有匹配指定名称的程序包的各版本;
                --nodeps:忽略依赖关系
                --test:测试卸载,dry run模式

查询:rpm {-q|--query} [select-options] [query-options]
                 [select-options]
                     PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
                -a, --all:查询所有已经安装过的包;
                -f  FILE:查询指定的文件由哪个程序包安装生成;
                -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
                --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
                --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

                [query-options]
                        -changelog:查询rpm包的changlog;
                        -l, --list:程序安装生成的所有文件列表;
                        -i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
                        -c, --configfiles:查询指定的程序包提供的配置文件;
                        -d, --docfiles:查询指定的程序包提供的文档;
                        --provides:列出指定的程序包提供的所有的CAPABILITY;
                        -R, --requires:查询指定的程序包的依赖关系;
                        --scripts:查看程序包自带的脚本片断;
        用法:
                -qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
                -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...

        校验:
                        rpm {-V|--verify} [select-options] [verify-options]       
                        S file Size differs
                        M Mode differs (includes permissions and file 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

    包来源合法性验正和完整性验正:
                来源合法性验正:
                完整性验正:
获取并导入信任的包制作者的密钥:

对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
        验正:
                        (1) 安装此组织签名的程序时,会自动执行验正;
                        (2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:rpm管理器数据库路径:/var/lib/rpm/
                        查询操作:通过此处的数据库进行;
获取帮助:

                        CentOS 6:man rpm
                        CentOS 7:man rpmdb

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
                --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
               --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;




CentOS: yum, dnf       
YUM: yellow dog, Yellowdog Update Modifier

yum repository: yum repo

存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);
文件服务器:

                        ftp://
                        http://
                        nfs://
                        file:///
yum客户端:
配置文件:/etc/yum.conf:为所有仓库提供公共配置
                /etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
                [repositoryID]
                name=Some name for this repository
                baseurl=url://path/to/repository/
                enabled={1|0}
                gpgcheck={1|0}
                gpgkey=URL
                enablegroups={1|0}
                failovermethod={roundrobin|priority}
                        默认为:roundrobin,意为随机挑选;
                cost=
                        默认为1000
yum命令的用法:
        yum [options] [command] [package ...]
       command is one of:
        * install package1 [package2] [...]
        * update [package1] [package2] [...]
        * update-to [package1] [package2] [...]
        * check-update
        * upgrade [package1] [package2] [...]
        * upgrade-to [package1] [package2] [...]
        * distribution-synchronization [package1] [package2] [...]
        * remove | erase package1 [package2] [...]
        * list [...]
        * info [...]
        * provides | whatprovides feature1 [feature2] [...]
        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
        * makecache
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]
        * search string1 [string2] [...]
        * shell [filename]
        * resolvedep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
        * localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
        * reinstall package1 [package2] [...]
        * downgrade package1 [package2] [...]
        * deplist package1 [package2] [...]
        * repolist [all|enabled|disabled]
        * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
        * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
        * check
        * help [command]
显示仓库列表:repolist [all|enabled|disabled]
显示程序包:
            list
            # yum list [all | glob_exp1] [glob_exp2] [...]
            # yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:install package1 [package2] [...]
                        reinstall package1 [package2] [...]  (重新安装)
升级程序包:update [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]
安装及升级本地程序包:

                * localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
        * localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
包组管理的相关命令:
        * 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>
代码编译安装三步骤:
./configure:
                                    (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
                                    (2) 检查依赖到的外部环境;
make:根据makefile文件,构建应用程序;
make install
开发工具:
                            autoconf: 生成configure脚本
                            automake:生成Makefile.in
建议:安装前查看INSTALL,README

开源程序源代码的获取:
                    官方自建站点:
                            apache.org (ASF)
                            mariadb.org
                            ...
                    代码托管:
                            SourceForge
                            Github.com
                            code.google.com
            c/c++: gcc (GNU C Complier)
            编译C源代码:
                    前提:提供开发工具及开发环境
                            开发工具:make, gcc等
                            开发环境:开发库,头文件
                                    glibc:标准库
通过“包组”提供开发组件
                                    CentOS 6: "Development Tools", "Server Platform Development",
第一步:configure脚本
                            选项:指定安装位置、指定启用的特性
                            --help: 获取其支持使用的选项
                                    选项分类:
                                            安装路径设定:
                            --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
                            --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
                                            System types:
                                            Optional Features: 可选特性
                            --disable-FEATURE
                            --enable-FEATURE[=ARG]
                                            Optional Packages: 可选包
                                                    --with-PACKAGE[=ARG]
                                                    --without-PACKAGE
第二步:make
第三步:make install
安装后的配置:
                    (1) 导出二进制程序目录至PATH环境变量中;
                            编辑文件/etc/profile.d/NAME.sh
                                    export PATH=/PATH/TO/BIN:$PATH
                (2) 导出库文件路径
                            编辑/etc/ld.so.conf.d/NAME.conf
                                    添加新的库文件所在目录至此文件中;
                            让系统重新生成缓存:
                                    ldconfig [-v]
                (3) 导出头文件
                            基于链接的方式实现:
                                    ln -sv
                    (4) 导出帮助手册
                            编辑/etc/man.config文件
                                    添加一个MANPATH


运维网声明 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.iyunv.com/thread-221889-1-1.html 上篇帖子: linux文本管理工具sed 下篇帖子: Linux的lvm2 逻辑卷管理工具 linux程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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