centos系统上的二进制格式软件包的安装及管理(rpm和yum)

linux系统管理员在管理操作系统时,管理操作系统上的软件几乎是系统管理员必备的功能。在早期debain发行版中,debain的开发人员为开发了一款名叫dpkg的软件包管理器。后来redhat的开发人员仿照dpkg开发了一个和dpkg功能类似,但功能比其更强大的一款名叫rpm(RPM is Package Manager)的软件包管理器。目前rpm软件包管理器已经是linux界软件包管理器的工业标准。由于linux中的大多数功能复杂的软件都是由众多功能单一软件组合起来实现的。因此,当我们用rpm管理器给linux安装软件包时。往往会产生依赖关系。例如:我们在安装A时,A依赖B,B依赖C,C又依赖D,据此你在安装A的时候,就不得不把B、C、D都自己一个个的手动装上。更有趣的是我们在安装A时,A依赖B,B依赖C,C依赖D,D又依赖A,从而形成了循环依赖导致A软件包安装不上去。很显然我们需要一种方式来解决linux安装软件包时产生的依赖关系,centos上的yum和debain上的apt-get工具就能解决软件安装时产生的依赖关系。下面我们详细介绍一下centos上的rpm和yum工具。

rpm(RPM is Package Manager):是redhat和centos等linux操作系统上的软件包管理工具,现已成为linux界软件包管理器的工业标准。主要提供了安装、卸载、升级、查询、校验、数据库管理等功能。rpm的使用场景及其具体用法如下如下:

rpm软件包命名格式:

name-[subname]-major-minor-src_release.rpm_release.arch.rpm

name:软件包的名称

subname:软件包的子包名称

major:用于编译此rpm包的源码包的主版本号

minor:用于编译此rpm包的源码包的次版本号

src_release:用于编译此rpm包的源码包的修订号

rpm_release:编译此rpm的修订号(表示第几次用同一个源码编译成软件包,其中还包括此软件包使用的os)

arch:表示此软件包编译时用到的CPU架构(常见的有i386、x86_64)

示例:httpd-2.2.3-91.el5.centos.i386.rpm

安装软件包

rpm [option] /path/to/package_file

-i:安装

-v:显示安装详细信息

-h:以#号显示安装进度,每个#号代表2%的安装进度

组合用法:rpm -ivh /path/to/package_file

--nodeps:安装时忽略依赖关系。(此方式安装的软件可能运行不了)

--test:测试安装,不是真正的安装。

--replacepkgs:重新安装(如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew)

卸载软件包

rpm [option] package_name

-e:卸载(如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如warning: /etc/zprofile saved as /etc/zprofile.rpmsave.)

--nodeps:卸载时忽略依赖关系(卸载后,依赖次软件包的程序可能无法正常运行)

升级软件包

rpm [option] /path/to/package_file

-Uvh:升级或安装,如果旧版本的软件包不存在,则安装此软件包;如果旧的软件包存在,则升级旧软件包。

-Fvh:纯升级,如果旧版本的软件包不存在,则不安装此软件包;如果旧的软件包存在,则升级旧软件包。

注意:不应该对内核执行升级操作,而是安装。系统允许多内核并存

 查询软件包相关信息

rpm [option] package_name

-q 查询某包是否安装

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

-qi 查询包的描述信息

-ql 查询某包安装生成了哪些文件

-qc 查询某包安装生成了哪些配置文件

-qd 查询某包安装生成了哪些帮助文件

rpm -q --scripts package_name 查询程序包的相关脚本

脚本有四类:

preinstall:安装前脚本

postinstall: 安装后脚本

preuninstall: 卸载前脚本

postuninstall: 年前后脚本

rpm [option] /path/to/package_file

-qf 查询某文件是由哪个包安装生成的

-qpi:查询未安装包的描述信息

-qpl:查询未安装包的安装文件列表

-qpc:查询未安装包的配置文件及其路径

-qpd:查询未安装包的帮助文件及其路径

校验:用于检查包安装生成的文件属性是否发生变化

rpm -V package_name

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

某属性无变化,显示为.

rpm包来源合法性及完整性检验:

前提:在当前系统上导入包的制作者的公钥

导入:

rpm --import /path/to/key_file

rpm -qa gpg-pubkey*:显示所有已经导入的gpg格式的公钥                           rpm -qi gpg-pubkey-NAME:显示密钥的详细信息

检查包:安装过程中会自动执行

手动检查:

rpm -K /path/to/package_file

rpm --checksig /path/to/package_file

rpm -K --nodigest:不检查包完整性:

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

      rpm数据库重建:

数据库目录:/var/lib/rpm

rpm --initdb:初始化

如果事先没有库,会新建一个;如果有,则不新建;                       rpm --rebuilddb: 重建

直接重建,覆盖原有的数据库

yum(yellowdog update manager):yum是centos或redhat系统上软件包安装时自动解决依赖关系的工具。其工作原理如下图

首先yum客户端在命令行中执行yum命令安装程序时,然后客户端会根据其本地定义的yum配置文件中的baseurl找到yum仓库,并将其的repodata元数据下载下来缓存到本地,在本地对其进行解压分析并解决将要安装的软件的依赖关系,从而决定安装此程序需要安装哪些依赖包。最后根据分析结果到指定的yum仓库下载需要安装的包及其依赖包到本地,并调用rpm软件包管理器进行安装。

yum客户端命令的用法:

yum  list:列出yum仓库及仓库中的软件包

yum  repolist:列出本地可用的yum仓库但不列出yum仓库的软件包

yum  install  package_name:安装软件包(centos 6以上的版本,在安装仓库中的包时,自动解决依赖关系。centos 5中对应的选项为  localinstall)

yum  reinstall  package_name:重新安装软件包

yum  grouplist  package_name:安装软件包组

yum  remove  package_name:卸载软件包

yum  update package_name:升级软件包

yum  downgrade  package_name:给软件包降级

yum  info  package_name:查看软件包的描述信息

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

注:客户端的yum缓存在/var/cache/yum/$basearch/$releasever目录中

$basearh:表示当前系统的CPU基本平台,常见的有(i386、x86_64)。

$releasever:表示当前系统发行版的主版本号。

这两个变量也可以在yum客户端的配置文件中使用

yum客户端配置文件的基本格式

[repo-id]

baseurl=http://mirrors.163.com/centos/5/os/i386/               #yum仓库的url路径(要指到repodata目录的父目录)

enabled={1|0}         #配置此yum仓库是否启用。启用为1,不启用为0

gpgcheck={1|0}      #配置是否启用gpg来验证软件包的来源合法性和完整性。启用为1,不启用为0(与gpgkey一同使用)

gpgkey=http://mirrors.163.com/centos/5/os/i386/RPM-GPG-KEY-CentOS-5     #指定当前仓库中软件包制作者的公钥的url路径

cost=1000              #访问此仓库的花销,默认为1000,值越小,优先级越高

如何配置yum源

首先要把完成同一功能的软件包放到指定目录,然后使用createrepo  /rpm/dir/命令给目录中的软件包创建元数据,元数据保存在软件包存放的目录中的repodata目录中,其中保存了当前仓库中的各个软件包的名称、描述信息、其是否已被安装、包组及其描述信息和各个软件包之间的依赖关系等信息。然后安装http或ftp或nfs服务将软件包所在的目录对外发布即可。

时间: 2024-09-30 00:55:29

centos系统上的二进制格式软件包的安装及管理(rpm和yum)的相关文章

Linux Centos 系统上安装BT客户端 Transmission

Linux Centos 系统上安装BT客户端 Transmission Transmission是一种BitTorrent客户端,特点是一个跨平台的后端和其上的简洁的用户界面,以MIT许可证和GNU通用公共许可证双许可证授权,因此是一款自由软件,还被众多linux发行版,包括Ubuntu.Mandriva.Mint.Fedora.Puppy.openSUSE 选作默认BT下载工具:Imageshack的服务使用其技术. 上面已经提到了很多种Linux系统都内置了这软件,可是使用最广的Cento

通用二进制格式的MySQL安装

1.下载MySQL的通用二进制压缩包,并创建mysql用户及组 http://pan.baidu.com/s/1kTskJKN useradd mysql id mysql uid=500(mysql) gid=500(mysql) groups=500(mysql) 2.创建MySQL的数据目录/mydata/data,此目录建议使用LVM实现,方便以后随时扩容和基于LVM快照对MySQL进行备份. fdisk /dev/sdb fdisk /dev/sdc #分别格式化sdb和sdc pvc

mysql之通用二进制格式程序包安装

可以到mysql官网也可以到开源镜像站下载安装文件 第一步:为增强mysql数据库空间拓展性,创建lv卷 [[email protected] pub]# pvcreate /dev/sdb{5,6} [[email protected] pub]# vgcreate myvg /dev/sdb{5,6} [[email protected] pub]# vgs VG   #PV #LV #SN Attr   VSize   VFree myvg   2   0   0 wz--n- 200.0

五、软件包管理RPM与YUM

5.1.程序包管理器 程序包管理器的基本功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装.卸载.查询.升级和校验等管理操作:其文件组成一般可以分为两类: 1).程序的组成组成清单 (每个包独有):文件清单. 安装或卸载时运行的脚本2).数据库(公共):程序包名称及版本.依赖关系:功能说明:安装生成的各文件的文件路径及校验码信息:软件包的组成部分. 软件包安装后,一般分布到如下一些目录: RPM 全名是『RedHat Package Manager ,R

第八章:软件包的安装与管理

第八章:软件包的安装与管理 1.Linux常见软件包格式 RPM:Redhat PackageManagement 红帽包管理.Redhat Linux专用的软件包格式,扩展名为.rpm DEB:Debian Linux专用的软件包格式,扩展名为.deb APT:Advanced packagetool,高级包工具 Ubuntu Linux专用软件包格式,基于Internet互联网的APT软件源,扩展名为.apt Source code packet源码包 软件包的源码文件包,在所有Unix/L

软件包的安装和管理

软件包的安装和管理文件编辑命令vi:全屏编辑emacs:文件编辑 vim命令模式 a,i,o(AIO) 编辑模式(插入模式) ESC:进入ex模式//行编辑模式, ESC返回命令模式 RPM软件包rpm命令可以在linux系统中安装.删除.刷新.升级.查询RPM软件包命令语法 rpm[选项//-][软件包]-i:安装软件包-v:输出详细信息-h:安装软件包时打印哈希印记-e:删除软件包 rpm -e --nodeps [软件包名] 强制删除软件包-U:升级软件包 //update 把老版本卸载再

CentOS 7以通用二进制格式安装mariadb

系统环境:CentOS 7 1611(系统安装完成后自带有mariadb) mariadb版本:mariadb-5.5.56-linux-x86_64.tar.gz(Generic Linux) 下载地址:http://mirrors.neusoft.edu.cn/mariadb//mariadb-galera-5.5.56/bintar-linux-x86_64/mariadb-galera-5.5.56-linux-x86_64.tar.gz 1.下载通用二进制程序并展开 [[email p

CentOS系统上编译、安装、配置OpenCV

声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流! 假设CentOS系统下的CodeBlocks已经安装完成,下面我们要在CentOS平台下编译OpenCV,并在CodeBlocks下进行开发测试. (1)下载OpenCV源码,并编译安装 当前最新的版本是OpenCV-2.2,可以从http://sourceforge.net/projects/opencvlibrary/上下载. OpenCV的编译方式有两种,一种是传统的./configure ; make ; m

DenyHosts在CentOS系统上的使用

DenyHost简介: DenyHosts是用Python编写的脚本程序用来分析ssh登录日志信息以确定哪些主机在尝试攻入我们的服务器.它还能对指定的用户账号进行监控,通常DenyHost将用户账号分成3类,合法用户.root用户和非合法用户,它会对使用ssh方式连接时使用的账号信息与当前系统上存在的系统账号进行对比并分类至合法还是非法用户以及root用户,如果用户名在系统中不存在,就会被归类到非法用户中,这种方式实现更细致的对尝试破解攻入系统的远程主机进行记录,并根据设定的密码尝试频次来追踪每