首页 > 代码库 > Linux程序包管理

Linux程序包管理

                               Linux程序包管理



RPM软件包管理器是由Redhat公司提出的,英文原意为Redhat Package Manager。是用来管理linux下软件包的工具。现在包括OpenLinuxS.u.S.E.以及Turbo LinuxLinux的分发版本都有采用,成了公认的业界标准,也为了迎合开源人士的幽默特点所以RPM英文本意改成RPM is Package ManagerRPM可是实现软件包的安装、卸载、升级、查询和验证等功能。

 

 

RPM包安装

命令格式:rpm{-i|--install} [install-options] PACKAGE_FILE

通常使用rpm –ivh 加软件包路径安装软件包 vh表示安装过程中输出安装信息。

wKiom1R7CzawcpseAACPX6n95mg523.jpg

支持的安装选项:

     --replacepkgs:重新安装

     --nodeps:忽略包的依赖关系

     --test:测试安装,不真正执行安装过程

     --perfix:制定包的安装路径

 

 

RPM包升级

命令格式:rpm{-U|--upgrade} [install-options] PACKAGE_FILE

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

通常使用rpm –Uvh(如果有相应包的旧版本则升级否则直接安装新版本)或用rpm –Fvh(如果有相应包的旧版本则升级否则不安装新版本)升级软件包。

支持的选项:

--oldpackage:降级安装

--force:忽略冲突强制执行安装

注意:不要对内核包执行升级操作,Linux支持多版本内核并存。因此,对新版本内核可直接安装。此外升级时被修改过的配置文件不会被覆盖,而是把新版本的文件重命名后加.rpmnew后缀保留。

 

 

RPM包卸载

命令格式:rpm {-e|--erase}PACKAGE_NAME

支持的选项:

--nodeps:卸载时忽略依赖关系

--test:卸载测试,不真正执行卸载过程

 

注意:如果软件包的配置文件安装后被改动过,卸载时,此文件将不会删除,而是被重命名(原文件名加.rpmsave后缀)并保留。

 

 

RPM包查询

rpm {-q|--query}PACKAGE_NAME 检查软件包是否已安装

支持的选项:

-qa:列出已经安装的所有软件包

-qi:查询包的简要说明信息

wKiom1R7EcSDERPVAANIOzapcuM322.jpg

-ql:查询某包安装后生成的所有文件的列表

wKiom1R7Czeh0PqGAAIWBbYSu9c400.jpg

-qc:查看某包所有生成的配置文件

wKioL1R7C7-iLx4fAABj2SDJ9k0328.jpg

-qd:查询某包安装后的帮助文件

wKiom1R7CzjBpK4-AAHdmuW_xsA203.jpg

-q --changelog:查询某包制作时随版本变化的changelog列表

wKioL1R7C8GALUZWAAKCW38_AhQ042.jpg

-q -- provides:查询某包提供的capabilities

wKiom1R7CzqAOBOCAAFpjTofg-g258.jpg

-q --requires:查询某包所依赖的capabilities

wKioL1R7C8LTJmx-AAFL-CjE9qk133.jpg

-q --scripts:查询某包安装卸载时的脚本

wKiom1R7CzyTqCclAAI0aQRN5UI650.jpg

 

 

RPM包验证

检查包安装之后生成的文件是否发生了改变

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

常用用法:rpm -VPACKAGE_NAME

 

包来源合法性及完整性验证:

rpm --importPUBKEY ...  导入公钥(前提是工作目录下要有此公钥文件)

wKioL1R7C8TQ_aloAADw3WFYFcI380.jpg

rpm{-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...

wKiom1R7CzyjoSVLAABfAb0fW6M914.jpg

--nosignature: 不检查来源合法性

--nodigest: 不检查完整性

 

 

 

 

 

由于程序包存在依赖关系,在用RPM命令安装程序包的时候如果此包所依赖的软件包没有安装还要下载安装它所以来的包,这样就会很麻烦。Yum是可以自动处理依赖性关系的前端包管理器,可以一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

Yum客户端的配置:

配置文件:/etc/yum.repos.d/*.repo  /etc/yum.repos.d目录下创建以.repo结尾的文件定义软件仓库。

 

[DVD]                        

name=DVD

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

 

[DVD]字段:REPO_ID   ID不能重复

Name字段:repo description   可以添加一些描述信息

Baseurl字段:定义软件仓库的地址可以是FTPHTTP地址或本地文件系统目录等

enabled字段:表示是否启用本仓库  0为禁用  1为启用

gpgcheck字段:表示是否校验软件包的完整性和来源可靠性 0为不校验 1为校验

gpgkey字段:校验软件包用的文件路径

 

 

 

yum相关命令

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

yum repolist  列出所有可用仓库

wKiom1R7CzOyha4XAADv6Hlsb0g006.jpg

yum list {all|installed|available} 列出所有程序包或安装过的活可用程序包

yum list 后也可加globing元字符模糊匹配列出匹配的安装包

例如:列出前几个字符是bash的包 yum list bash*

wKioL1R7C7vjEZPUAAErr0MRx4Q993.jpg

yum grouplist  列出所有包组

wKiom1R7CzSDqv3_AAE-8zgegxQ122.jpg

yum clean {all|packages} 清除yum缓存

wKioL1R7FkvSbx8oAACSZOfwsRE310.jpg

yum makecache建立缓存,会把仓库的元数据同步到本地

wKioL1R7E1_yfHHhAAGqN3mwBck287.jpg

yum install PACKAGE_NAME ...  安装某个软件包

wKiom1R7CzGxEMpIAAJGEEoqDVY263.jpg

yum reinstall PACKAGE_NAME ... 重装某个软件包

wKioL1R7C7izjUpkAAKo884eBbw365.jpg

yum erase|remove PACKAGE_NAME 卸载指定数据包,依赖于此程序包的其他程序包也会被卸载   

wKiom1R7Cy_SM5vUAAHgHBoJu24182.jpg

yum {groupinstall|groupremove|groupupdate|grouplist|groupinfo}  ”GROUP_NAME“ 对包组的安装、卸载、升级、查询、显示相关信息

wKioL1R7C7azeLeXAATuH5785HM074.jpg

对包组的操作也可用yum{install|gremove|update|list|info} @“GROUP_NAME”实现包组的安装、卸载、升级、查询、显示相关等信息(同普通包一样的选项只是在包组前加@符号) 

wKioL1R7ESyjalKVAATjWMonlos221.jpg 

      注意:以上操作收到Is this ok[y|N]:提示时表示安装或升级已经准备好是否执行操作,键入y然后回车可以继续执行,如果不想继续可以键入n放弃本次操作。如果不行收到此提示可以在输入命令时添加-y选项表示默认同意继续执行。

例如 yuminstall –y tree

wKioL1R7C7mBWPk5AAHZ3aOmXvw946.jpg

 

                            

 

                

 


本文出自 “叼炸天的” 博客,请务必保留此出处http://linux2016.blog.51cto.com/4799006/1584841

Linux程序包管理