rpm、yum、编译安装轻松管理centos7程序包

本文介绍了RPM包管理器的基本概念、包的组成部分、命名格式、分包机制以及在CentOS7上的管理操作,如安装、升级、卸载和查询。接着,讲解了yum作为解决依赖问题的包管理器,其配置、仓库、常用命令及自建仓库的方法。最后,简述了编译安装的过程和步骤,强调了编译安装在定制需求时的重要性。
摘要由CSDN通过智能技术生成

程序包管理器之RPM

一、rpm是什么

RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的。RPM包管理器(RPM)是一个强大的命令行驱动的包管理系统能够安装、卸载、验证、查询和更新计算机软件包。每个软件包包括存档的文件连同包和它的版本信息,描述等。还有一个库API,允许高级开发人员来管理

二、程序的组成部分

程序的组成部分:

    编译之前:源代码

    编译文件:

    二进制程序

    库文件

    配置文件

    帮助文件(手册、文档)

    二进制程序:/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

        注意:有些特殊的应用程序可能会将可执行文件放置在libexec目录;

三、rpm包命名格式:

blob.png

rpm包命名格式:

    appname-VERSION-RELEASE.ARCH.rpm

        VERSION:

            major:主版本号

            minor:此版本号

            release:发行号

        RELEASE:包自身的修订号:有时候还会包含适用于os信息:比如bash-4.3.2-2.centos.x86_64.rpm

        ARCH:适用的平台

            x86:i386,i486,i586,i686

            x86_64,adm64:x86 64bits

            powerpc:ppc

            noarch:跟平台无关

四、分包机制

想象一种场景:testapp有30种功能,其中有10种常用,有6次常用,余下的14种极少用;所以rpm包制作者会把一个程序的每个功能制作成一个rpm包,他们都依赖主包。

例如:

            核心包,主包:命名与原项目名称一致;

                bash-4.3.2-2.centos6.x86_64.rpm

            子包(支包):命令为源项目名称后附加分支包中的文件提供的功能组成;

                bash-devel-4.3.2-2.centos6.x86_64.rpm

程序包的获取路径:

        1、系统的发行光盘镜像或官方站点(或站点镜像服务器)

            挂载光盘:

                mount -r /dev/cdrom /media/cdrom

            官方站点,镜像:

                    mirrors.sohu.com

                    mirrors.163.com

                    mirrors.aliyun.com

        2、程序包的官方站点

        3、第三方组织:epel

        4、搜索引擎

            http://rpmfind.net

            http://rpm.pbone.net

            http://pkgs.org

         建议:安装之前要验正的其合法性

            来源合法

            包的完整性

五、centos系统上的程序rpm包管理

    安装、升级、卸载、查询、校验

5.1 安装

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

# rpm -i zsh-4.3.10-7.el6.x86_64.rpm
# rpm -q zsh                    #rpm -q为查询次包是否安装,在后面的查询中会讲到。
zsh-4.3.10-7.el6.x86_64


    -h:hash, 以#来表示安装进度

# rpm -ih zsh-4.3.10-7.el6.x86_64.rpm 
########################################### [100%]
########################################### [100%]

    -v,--verbose:显示安装过程中的详细信息   

# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]

    -vv:显示更多的详细信息

# rpm -ivvh zsh-4.3.10-7.el6.x86_64.rpm

        安装时常用的组合:-ivh,-ivvh

    --test:不执行真正的安装过程,而仅报告依赖关系及冲突

# rpm -ivh --test zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]

        程序包之间存在依赖关系

        由众多目的单一的小程序组成:结果程序包之间存在相关性;

    --nodeps:忽略依赖关系:副作用:安装成功,但未必能够成功运行

# rpm -ivh php-5.3.3-38.el6.x86_64.rpm 
error: Failed dependencies:
	php-cli(x86-64) = 5.3.3-38.el6 is needed by php-5.3.3-38.el6.x86_64
	php-common(x86-64) = 5.3.3-38.el6 is needed by php-5.3.3-38.el6.x86_64
# rpm -ivh --nodeps php-5.3.3-38.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:php                    ########################################### [100%]

    --replacepkgs:覆盖安装:重新安装并覆盖原有的文件            

# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
	package zsh-4.3.10-7.el6.x86_64 is already installed
# rpm -ivh --replacepkgs zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]

    --force:强制安装

# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
	package zsh-4.3.10-7.el6.x86_64 is already installed
# rpm -ivh --force zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]

5.2 升级

    -U:升级或安装

# rpm -q zsh
zsh-4.3.10-7.el6.x86_64
# rpm -Uvh --nodeps zsh-5.1.1-3.fc24.x86_64.rpm 
warning: zsh-5.1.1-3.fc24.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 81b46521: NOKEY
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
# 此处使用--nodeps的原因是这个版本需要很多依赖关系,所以忽略依赖关系,在生产环境中升级需要安装依赖关系后在升级。

    -F:升级

    组合:-Uvh,-Fvh

    --test

    --nodeps

    --force 

    --oldpackage:降级到旧版本;

# rpm -q zsh
zsh-5.1.1-3.fc24.x86_64
# rpm -Uvh --oldpackage /misc/cd/Packages/zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
# rpm -q zsh
zsh-4.3.10-7.el6.x86_64

    注意:一定不要对内核升级:Linux允许多内核共存,所以可以直接安装多个不同版本内核;

    注意:如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件,而把新版本的配置文件重命名(加后缀.rpmnew)后保存

5.3 卸载

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

简单用法:rpm -e PACKAGE_NAME...

# rpm -q zsh
zsh-4.3.10-7.el6.x86_64
# rpm -e zsh
# rpm -q zsh
package zsh is not installed

    --nodeps:忽略依赖关系;

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

    --allmatches: 如果一个程序包同时安装多个版本,则此选项一次全部卸载之;

注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存;

5.4 查询

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

    [select-options]

        1、查询某包或某些包是否安装:

            rpm -q PACKAGE_NAME

# rpm -q zsh
zsh-5.1.1-3.fc24.x86_64

        2、查询已经安装的所有包

            rpm -qa PACKAGE_NAME

# rpm -qa zsh
zsh-5.1.1-3.fc24.x86_64
# 或者,grep后面支持正则表达式过滤
# rpm -qa |grep "zhs"

        3、查询某文件是由哪个包安装生成:

            rpm -qf /PATH/TO/SOMEFILE

# rpm -qf /etc/fstab 
setup-2.8.14-20.el6_4.1.noarch
# rpm -qf /etc/httpd/conf/httpd.conf 
httpd-2.2.15-39.el6.centos.x86_64

        4、查询尚未安装的包文件的相关信息

            -p

            # rpm -qpi PACKAGE_NAME

# rpm -qpi gcc-4.4.7-11.el6.x86_64.rpm 
Name        : gcc                          Relocations: (not relocatable)
Version     : 4.4.7                             Vendor: CentOS
Release     : 11.el6                        Build Date: 2014年10月15日 星期三 08时24分47秒
Install Date: (not installed)               Build Host: c6b9.bsys.dev.centos.org
Group       : Development/Languages         Source RPM: gcc-4.4.7-11.el6.src.rpm
Size        : 19495803                         License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Signature   : RSA/SHA1, 2014年10月18日 星期六 04时02分58秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://gcc.gnu.org
Summary     : Various compilers (C, C++, Objective-C, Java, ...)
Description :
The gcc package contains the GNU Compiler Collection version 4.4.
You'll need this package in order to compile C code.

    [query-options]:

        1、查询某包的简要说明信息:

            rpm -qi PACKAGE_NAME

# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 5.1.1                             Vendor: Fedora Project
Release     : 3.fc24                        Build Date: 2015年11月05日 星期四 21时41分02秒
Install Date: 2015年11月19日 星期四 15时20分55秒      Build Host: buildvm-26.phx2.fedoraproject.org
Group       : System Environment/Shells     Source RPM: zsh-5.1.1-3.fc24.src.rpm
Size        : 6474662                          License: MIT
Signature   : RSA/8, 2015年11月05日 星期四 21时56分22秒, Key ID 73bde98381b46521
Packager    : Fedora Project
URL         : http://zsh.sourceforge.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值