RH133 单元2 包管理

一、软件包

1. package-version-release.arch.rpm

version-上游开发商版本

release-包程序更改(修正/向后移植记录在“更改日志”中)

arch-二进制处理器架构 noarch 无架构

2. 包含:

文件存档:二进制、文档、“默认”配置文件

摘要、说明、更改日志

说明:依赖项、安装/卸载前/后

签名

3. 升级将用新版本进行替换

.rpmsave与.rpmnew

二、启用专有yum仓库

1. 针对仓库在/etc/yum.repos.d/中创建文件

名称必须以.repo结束

包含一个或多个节

[repo-name]

name=A nice description 描述

baseurl=http://yourserver.com/path/to/repo 仓库地址

enabled=1/0

gpgcheck=1/0

gpgcheck=file:///~ 数字签名

/etc/yum.conf中的默认设置

2. 缓存仓库信息

从上面名为repodata的baseurl子目录中已下载

清除缓存:yum clean dbcache|all

三、通过yum进行查询

1. 列出包和信息

yum list [all] [package_glob]

yum list (installed(已安装)|available(可用)|updates(可升级)... [package_glob])

yum grouplist

yum info package 查看信息

yum groupinfo packagegroup

2. 搜索包和文件

yum search searchterm 文件名不全

yum provides filename 查看命令在哪个包

四、通过yum管理包

1. 安装新包:

yum install package|@packagegroup...

yum localinstall rpmfile... 安装本地的包

yum groupinstall packagegroup... (如“GNOME Desktop Environment”)

2. 删除:

yum remove package... (groupremove)

3. 升级至新版本:

yum update [package|rpmfile|@packagegroup...]

附:yum进程独占

reinstall 重装

卸载更新软件时,修改过的配置文件会备份.rpmsave或.rpmnew

五、创建专有yum仓库

1. 创建一个目录以保留包

2. 通过http或ftp使此目录可用

3. 安装createrepo RPM

4. 运行createrepo -v /dir/packagedir 生成数据库

创建/重新创建repodata子目录

文件包含提取的包页眉信息

createrepo命令可创建yum仓库必须的支持文件,这些文件将放置在repodata子目录中。

repomd.xml 文件包含其他三个文件的时间戳和校验和值。客户端建立与某服务器的连接后,将缓存所有文件,并只刷新该缓存(如果repomd.xml指出仓库已更改)

primary.xml.gz 包含仓库中的所有RPM的列表以及依赖项信息。还包含通常由rpm -qlp返回的包中的文件的列表

filelists.xml.gz 包含所有RPM中的所有文件的列表。这由查询(如yum provides)使用

other.xml.gz 包含其他信息,包含RPM的更改日志

comps*.xml 可选的comps*.xml文件包含有关包组的信息。这允许组安装并优化依赖项解析。通常可在支持Red Hat Enterprise Linux安装程序anaconda的包目录中找到该文件

在该仓库中添加或删除文件需要需要再次运行createrepo。这通常会丢失可选的comps*.xml文件。为防止丢失,可运行以下命令:

#cp /package-directory/repodata/comps*.xml /tmp

#createrepo -g /tmp/comps*.xml /package-directory

六、通过rpm进行高级安装和删除

1. 基本RPM选项:

安装/升级:rpm -i(安装)|-F|-U rpmfile...(升级)

删除:rpm -e package...

输出选项:-v(打印包名)、-h(打印井号) (安装信息)

URL支持:ftp://(具有通配)、http://

2. 高级选项:

重新安装:--replacepkgs

降级:--oldpackage

忽略冲突:--replacefiles

忽略依赖性:--nodeps

七、更新至新内核RPM

1. 内核是并行安装的,没有升级

请勿使用rpm -U或rpm -F  !使用rpm -i!

yum可妥善地处理update或install

2. 更新(添加)内核

yum update kernel

启动新内核进行测试,重新启动旧内核

如果没有问题,使用yum remove kernel-oldversion

默认情况下,新内核将自动启动添加至启动加载器GRUB,并采用默认设置。通过编辑/etc/sysconfig/kernel来更改此行为。

不小心删除了某内核(无论是使用rpm -U,还是永久删除了该内核),都可以使用rpm -i oldpackage重新安装旧内核。

八、通过rpm进行高级查询

1. 四种基本的查询类型:

已安装的版本:rpm -q package

所有已安装的:rpm -q -a [package_glob]

包文件(未安装):rpm -q -p rpmfile

文件所有者:rpm -q -f file_path_name 文件属于哪个包

2. 查询的信息类型:

-i 可提供关于包的一般信息

-l 可列出包中的文件

yum 不能提供的许多其他信息

-c 配置文件

-d 帮助文档

RPM可提供功能强大的查询,可通过rpm -q或rpmquery进行调用。

以下是常用包规范参数的列表以及返回的信息:

-q | --query package 命名的包和版本

-q -a | --all [package_glob] 与通配匹配的所有已安装的包

-q -p | --package rpmfile (可能未安装的)包的文件

-q -f | --file filename 拥有该文件的包

以下是常用查询信息参数的列表以及返回的信息:

-i | --info 一般包信息

-l | --list 列出包中的所有文件

-c | --configfiles 列出配置文件

-d | --docfiles 列出文档文件(帮助)

-R | --requires 包必备条件

--provides 包提供的功能

--scripts 安装和删除时运行的脚本

--changelog 包修订历史

--last 按安装时间排列包(最近安装的包排在第一位)

--qf | --queryformat 格式化自定义格式的信息(使用rpm --querytags列出可在格 式字符串中使用的标记)

在多架构环境(AMD64或EM64T)中非常有用,要获得所有的内核包(其中包括输出信息中的架构)的列表,请执行以下命令:

[[email protected] ~]# rpm -qa ‘kernel*‘ --queryformat  "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"

九、通过rpm进行验证

1. 已安装的包文件验证:

# rpm -V package

# rpm -V -p rpmfile

# rpm -V -a

2. 在包安装之前验证签名:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 导入公钥

# rpm -qa gpg-pubkey 要查询已导入的公钥列表

# rpm -K(--checksig) rpmfile 要在安装之前验证包文件的签名

通过验证安装的包可比较文件的大小、权限、类型、所有者、组、MD5校验和,并根据RPM数据库修改时间,将报告所有不一致。还可以根据包文件验证已安装的包:

rpm -V zip 可根据RPM数据库验证已安装的zip rpm

rpm -Va 可根据RPM数据库验证所有已安装的RPM

rpm -Vp zip-2.3-8.i386.rpm 可根据zip包文件验证已安装的zip包

/var/lib/rpm/ 数据库

[[email protected] tmp]# uname -a
Linux desktop24.example.com 2.6.32-279.1.1.el6.x86_64 #1 SMP Wed Jun 20 11:41:22 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

#rpm2cpio 包名 |cpio -idv 解压rpm文件

时间: 2024-10-11 03:43:35

RH133 单元2 包管理的相关文章

[Todo]各种语言包管理工具

看到一篇文章不错: http://harttle.com/2015/05/29/pkg-manager.html 包管理和构建系统是现代的软件开发团队中必不可少的工具,也是Linux软件系统的常见组织方式. 现代编程语言大多给出了自己专用的包管理和构建系统,那么本文便来总结一下小编用过的那些包管理和构建系统. JavaScript 服务器端 Javascript 通常使用NPM作为依赖管理工具. 通过NPM提供的npm命令来进行依赖的下载.升级和移除. 通过package.json来定义软件包的

包管理工具rpm和yum的用法

包管理工具rpm和yum的用法 一.rpm的用法 rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装.升级,间接提升了Linux的适用性. rpm用法:rpm [OPTION...] 1.rpm安装软件包,后面需要跟上程序包文件的绝对路径或相对路径 常用选项: -v:显示指令的执行过程 -vv:详细显示指令执行过程,便于排错 -h:以#号显示程

学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如: Redhat软件包管理器---rpm Debian软件包管理器---dpkg 一.1.RPM 安装:rpm {-i|--install} [install-options] PACKAGE_FILE... -v: verbose,详细信息 -vv: 更详细的输出 -h: hashmark

Linux之Redhat系列程序包管理

安装.升级和卸载应用软件是每个系统不可或缺的一部分:对于在企业使用越来越广泛的Linux操作系统而言,强大而简洁的程序包管理机制为工程师们带来了很大的便利:下文主要介绍在RedHat系列的系统上如何使用RPM/YUM/编译三种方式去管理程序包. 一.RPM程序包管理 PRM全称是Red Hat Package Manager(RedHat 包管理器).Linux RPM软件包的命名有一定的规律:名称-版本-修正版-类型.rpm 例如: RPM命令详解: 功能: 安装.卸载.升级.查询和数据库维护

windows安装python包管理工具pip

windows安装python包管理工具pip     pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具. 一.前期准备 首先确认windows机器上面是否已经安装好了python.在cmd中输入python --version和python看看是否有反应 如上面所示,表示已经在windows平台上面搭建好了python环境. 二.下载安装 1.到官网去https://pypi.python.org/pypi/pip#downl

Yocto tips (15): Yocto中的包管理器

使用包管理器 在local.conf中使能就可以: 然后编译后就会有rpm包了: 配置文件server 能够使用ngix和apache.可是我们也能够仅仅用使用python: python -m SimpleHTTPServer 打开浏览器能够看到: 在机器上面查看包的status smart status 在机器上面配置channel 对于rpm使用的smart工具,加入channel: smart channel --add all type=rpm-md baseurl=http://19

CentOS程序包管理器之rpm前端管理器

CentOS的程序包管理器: 首先,我们要来了解一下程序包(源代码包)的命名规则: software_name-VERSION.tar.gz VERSION:major.minor.release major:主版本号,通常代表重大功能改进的版本分支: minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化: release:发行版本号,修复了某些bug或者对某段代码进行了优化: 例如:apache-tomcat-7.0.63.tar.gz 而rpm程序包命名规则为: 源码包:sou

rpm程序包管理器详解

1. 程序包管理器的功能 我们知道,由程序员编写并提供的程序源代码要转换成目标二进制格式才能在计算机上运行起来,但用户要在平台上使用时需要手动编译安装后才能使用,对于普通用户来说有一定难度.因此为了降低普通用户对应用程序的使用难度,程序员可在提供源代码的同时提供已在特定环境下编译好的程序文件,只要用户的平台环境和程序员的平台环境相同,就可以通过解压程序员提供的二进制格式文件即可使用,而无需自己手动编译安装. 一个已编译好的程序由二进制程序.库文件.配置文件和帮助手册等组成,而程序包管理器的功能就

linux 程序包管理

如何实现在linux安装,更新程序. 硬件--内核(系统调用接口)--库调用接口(32位,64位) API:Application Programming Interface POSIX:可移植系统,源代码级别各系统都是兼容的. 程序的源代码文件--预处理--编译--汇编--链接 静态编译:不依赖外部环境 共享编译:直接调用lib .so 文件 linux支持elf,windows支持exe,因为ABI不同(应用二进制接口) 库级别虚拟化,WINE 可以在linux跑windows程序,CYWI