软件包管理RPM与yum

简介:

    程序包管理器的基本功能是:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。其组成一般分为两个部分:

    1)、程序的组成组成清单 (每个包独有)

    文件清单、安装或卸载时运行的脚本

    2)、数据库(公共)

    程序包名称及版本、依赖关系;功能说明;安装生成的各文件的文件路径及校验码信息。

    在软件安装后,其个文件的存放位置一般是:

可运行程序文件

/usr/bin、/usr/sbin、/usr/local/bin、

/usr/local/sbin

程序可使用的动态库
/usr/lib
软件使用手册与说明文档
/usr/share/doc
一些man帮助文件
/usr/share/man


2、RPM命令的介绍

    RPM 全名是『 RedHat Package Manager ,RPM is Package Manager

    具体命令的使用方法:

安装:

    rpm -i /PATH/TO/PACKAGE_FILE

        -h: 以#显示进度;每个#表示2%; -v:显示详细过程

        -vv: 更详细的过程-i:--install

        --test: 测试安装,但不真正执行安装过程;dry run模式;

    rpm -ivh /PATH/TO/PACKAGE_FILE

        --nodeps: 忽略依赖关系;--replacepkgs: 重新安装,替换原有安装;

        --force: 强行安装,可以实现重装或降级--nosignature: 不检查来源合法性;

        --nodigest:不检查包完整性;

        --noscipts:不执行程序包脚本片断;

        %pre: 安装前脚本;--nopre    %post: 安装后脚本;--nopost

        %preun: 卸载前脚本;--nopreun    %postun: 卸载后脚本--nopostun

卸载:

    rpm -e PACKAGE_NAME--nodeps忽略依赖关系

查询:

    rpm -qa : 查询已经安装的所有包

    rpm -q PACKAGE_NAME:查询指定的包是否已经安装

    rpm -qi PACKAGE_NAME: 查询指定包的说明信息;

    rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;

    rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;

    rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;

    rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本

    rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;

查询尚未安装的rpm包文件的相关信息:

    查询安装后会生成的文件列表:rpm -qpl /path/to/package_file

    查询其简单描述信息:rpm -qpi /path/to/package_file

升级:

    rpm -Uvh  /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,安装;

    rpm -Fvh  /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;

        --oldpackage:降级;--force: 强行升级;

    rpm --oldpackage: 降级

注意:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核;

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

检查包安装后生成的文件是否被修改:

    rpm -V PACKAGE_NAME

检验来源合法性和软件包完整性

    来源合法性:通过公钥加密机制(RSA)

    包完整性:通过单向加密机制(md5|sha1)

        rpm --import /PATH/FROM/GPG-PUBKEY-FILE导入所需要公钥:

        rpm -K /PAPT/TO/PACKAGE_FILE

        dsa, gpg: 验正来源合法性,也即验正签名; --nosignature,略过此项

        sha1, md5: 验正软件包完整性;           --nodigest,略过此项

重建数据库:

    rpm--initdb:初始化数据库,没有才建立,有就不用建立;

    rpm--rebuilddb: 重建数据库,强制重新建立;


3、YUM介绍与命令使用

    YUM是一个前端管理器,其组成可以分成两部分。文件服务器与yum客户端。

    所谓文件服务器就是共享rpm包的服务端,其可以通过FTP、http、nfs服务提供,还可以直接在本地直接file建立.

    YUM客户端的作用:

        1、配置文件:指定各可用的yum仓库;
        2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地; 
        3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;

        4、执行具体操作:即使用yum命令

    本地客户端的配置文件有:

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

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

    配置文件的基本格式:由两段组成,各字段的含义

        [main] :主配置段

        [repo] :仓库配置段

        [repo_ID]        仓库的配置名,注意各个配置文件中的配置名不能出现重复

        name=String  仓库名称 

        baseurl=仓库的访问路径

        enabled={1|0}    是否使用仓库

        gpgcheck={1|0}  是否进行来源合法性检查 

        gpgkey=公钥文件(可以在本地,也可是服务器端路径)

        cost=定义此仓库开销,默认为1000

YUM命令的使用:yum [options] [command] [package ...]

Optinon:  

       --nogpgcheck:禁止进行gpg check;-y: 自动回答为“yes”;-q:静默模式;

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

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

       --noplugins:禁用所有插件;

Command:

    repolist [all|enabled|disabled]: 列出所有可用yum repo

    clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理缓存

    list [all|installed|available]: 列出rpm包

    info package_name: 列出包的描述信息

    grouplist: 列出所有包组

    groupinfo "package_group_name":显示包组信息

    install package_name ...: 安装指定的程序包

    reinstall package_name ...: 重新安装指定的程序包

    check-update: 检查可升级的包

    update package_name ...: 升级指定的程序包

    downgrade package_name:降级

    whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的

    erase|remove  package_name ...:卸载

    groupinstall "group_name":安装指定的包组

    groupremove "group_name": 卸载指定的包组

安装本地包:

    install /path/to/package_file

手动禁止检查来源及完整性:--nogpgcheck

    yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck

4、自建YUM仓库

1、准备文件服务器;使用httpd为例,在这里我对阿里云中的openstack-juno所有安装包做镜像

[root@mylinux ~]# lsof -i:80                   
COMMAND  PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEhttpd   
1110   root    3u  IPv4 46328415      0t0  TCP *:http (LISTEN)httpd   
1111     daemon   3u  IPv4 46328415      0t0  TCP *:http (LISTEN)httpd   
1112     daemon   3u  IPv4 46328415      0t0  TCP *:http (LISTEN)httpd   
1113     daemon   3u  IPv4 46328415      0t0  TCP *:http (LISTEN)
[root@mylinux ~]# cd /var/www/html/
[root@mylinux html]# lftp 
 cd 成功, 当前目录=/centos/6/cloud/x86_64 
 lftp mirrors.aliyun.com:/centos/6/cloud/x86_64> mirror openstack-juno/
 Total: 3 directories, 136 files, 0 symlinks                                                 
 New: 136 files, 0 symlinks24636204 bytes transferred in 31 seconds (774.4K/s)
 lftp mirrors.aliyun.com:/centos/6/cloud/x86_64> bye
[root@mylinux html]# lsindex.html  openstack-juno

3、创建yum仓库

[root@mylinux html]# cd openstack-juno/
[root@mylinux openstack-juno]# rm -rf repodata
[root@mylinux openstack-juno]# createrepo /var/www/html/openstack-juno
Spawning worker 0 with 129 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadataGenerating 
sqlite DBsSqlite DBs complete

4、使用另一台机器配置使用自建的yum仓库

[root@mylinux yum.repos.d]# vim http.repo
[http_repo]name=CentOS 6.5 X86_64 relase
baseurl=
 enabled=1
 gpgcheck=0
 gpgkey=
 cost=1000

5、关闭其他可用源,测试配置epel的yum源

[root@mylinux yum.repos.d]# yum repolist enable
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfilerepo
list: 0
[root@mylinux yum.repos.d]# yum repolist enable
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
http_repo                 | 2.9 kB     00:00     
http_repo/primary_db            |  48 kB     00:00     repolist: 0
[root@mylinux yum.repos.d]

6、此时就可以与其他的源一起配合使用了

[root@mylinux yum.repos.d]# yum clean metadata
Loaded plugins: fastestmirror
Cleaning repos: base extras http_repo updates
13 metadata files removed
6 sqlite files removed
0 metadata files removed
[root@mylinux yum.repos.d]# yum install pysnmp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                         | 3.7 kB     00:00     
base/primary_db                                                              | 4.7 MB     00:05     
extras                                                                       | 3.4 kB     00:00     
extras/primary_db                                                            |  37 kB     00:00     
http_repo                                                                    | 2.9 kB     00:00     
http_repo/primary_db                                                         |  48 kB     00:00     
updates                                                                      | 3.4 kB     00:00     
updates/primary_db                                                           | 2.0 MB     00:02     
Setting up Install Process


    本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1844212,如需转载请自行联系原作者

相关文章
|
3月前
|
缓存 应用服务中间件 Linux
yum 命令下载软件包到本地
在 Linux 系统中,使用 `yum` 命令可以下载软件包但不安装。通过 `yum` 的下载缓存功能,可以快速获取所需软件包。常用命令包括:`yum list available` 列出可安装的软件包,`yum download nginx` 下载特定软件包,`yum download nginx-1.18.0` 下载特定版本,`yum download -resolve nginx` 下载软件包及其依赖,`yum download nginx -d /path/to/download/directory` 指定下载目录
337 11
|
3月前
|
缓存 应用服务中间件 Linux
yum 命令下载软件包到本地
在 Linux 系统中,使用 yum 命令可以下载软件包但不安装。通过 yum 的下载缓存功能,可以快速获取软件包。常用命令包括:`yum list available` 列出可安装的软件包,`yum download nginx` 下载特定软件包,`yum download nginx-1.18.0` 下载特定版本,`yum download -resolve nginx` 下载软件包及其依赖,`yum download nginx -d /path/to/download/directory` 指定下载目录
245 1
|
3月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
363 0
|
8月前
yum 可以安装rpm包
【6月更文挑战第18天】yum 可以安装rpm包
759 0
|
6月前
|
Web App开发 缓存 Ubuntu
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
304 11
|
6月前
|
Ubuntu Linux 索引
在Linux中,APT和YUM软件包管理器的何区别?
在Linux中,APT和YUM软件包管理器的何区别?
|
7月前
|
Ubuntu Linux
Linux软件安装-Linux系统靠yum命令安装软件,yum命令是一个RPM包软件管理器,用于自动化安装配置Linux软件,.rpm是Linux包下的软件,yum install下载 wget re
Linux软件安装-Linux系统靠yum命令安装软件,yum命令是一个RPM包软件管理器,用于自动化安装配置Linux软件,.rpm是Linux包下的软件,yum install下载 wget re
|
8月前
|
缓存 人工智能 Linux
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
109 0
|
6天前
|
监控 Linux
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
42 13
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
|
5月前
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】