RHEL程序包管理

RHEL程序包管理

YUM : Yellowdog UpdateModifier

RPM : RPM is PackageManager

一.程序包管理


1.程序包的命名格式:

程序包的命名经过多个过程,最初状态是由程序员编写后以program_name-VERSION的形式打包共享的。编译之后会加上相应的适用硬件架构平台ARCH。

program name-VERSION.tar.gz

编译:--> 归档压缩

programname-VERSION-ARCH.tar.gz

包管理器:-->

program name-VERSION-ARCH.rpm

版本号的具体形式:

VERSION:major.minor.release

major:主版本号

minor:次版本号

release:  修订号

例如:bash-4.3.2.tar.xz

当然,包的命名中不仅仅有程序包的版本号,还会包括所对应的程序包管理器的的修订号。

例如:RPM包bash-4.3.2-1.centos6.x86_64.rpm,-1仅用于标识对rpm自身的修订。


2.程序包的分包机制:

程序包之所以会有分包机制主要是为了让程序包适应不同的用户。试想:某程序有20个功能;有10个常用功能,有3个次常用,用3个二次开发相关,余下极少用。这样分包之后,主包可以满足大多数用户的10常用功能,特定的用户自行安装自己需要的功能包。

包的分类:

主包:命名与源程序包名一致

bash-4.3.2-1.centos6.x86_64.rpm

子包(支包):

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

3.获取包的途径:

1、系统原发行光盘或者官方站点服务器;

镜像:http://mirrors.sohu.com

2、程序项目官方站点

3、第三方组织

Fedora-EPEL:epel

搜索引擎:http://rpmfind.net,http://rpm.pbone.net, http://pkgs.org

4、自己制作

提示:对于第三方组织,为了保证包的可靠。最好校验来源合法性,包的完整性。


二.RHEL系统程序包管理工具RPM的应用:


1.安装

格式:#rpm{-i|--install} [install-options] PACKAGE_FILE ...

#rpm -ivh  [install-options]PACKAGE_FILE

选项

-i: 安装

-v, -vv , -vvv:显示详细信息, vvv比vv显示的信息更为详细, vv又比v详细

-replacepkgs:重新安装

--nodeps: 忽略依赖关系

--test: 测试安装,而不执行真正的安装过程;dryrun模式;

注意:这里在安装程序包的时候极有可能会出现包之间的依赖关系,如果不解决依赖关系可能会导致依赖包的不正常;

2.升级:

格式:# rpm -Fvh[install-options] PACKAGE_FILE ...

执行升级时,如果存在升级包就升级。如果不存在,即停止。

选项:

-U:如果有较旧版本程序包, 则升级安装;否则执行安装操作

-F:如果有较旧版本程序包, 则升级安装;否则终止操作

-v, -vv , -vvv:显示详细信息,vv比v信息更全面,依次vvv最详细。

--oldpackage:降级安装;

--force: 忽略冲突,强制执行过程;

注意:1.不要对内核包执行升级操作;linux支持多版本内核并存,因此,对新版本内核可直接安装;2.如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保


3.卸载:

格式: #rpm -ePACKAGE_NAME ...

选项:  --nodeps: 忽略依赖关系

--test:卸载测试

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

4.查询:

格式:#rpm{-q|--query} [select-options] [query-options]

选项:  -q PACKAGE_NAME ... 查询某包是否安装

-qa   查询已安装的所有包

-qf   /path/to/somefile查询某文件是由哪个包安装生成

-qpl  PACKAGE_FILE查询尚未安装包的相关信息

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

-ql   PACKAGE_NAME安装后的所有文件列表

-qc   PACKAGE_NAME查询某包安装后生成的所有配置文件的列表

-qd   PACKAGE_NAME查询某包安装后生成的所有帮助文件的列表

-q --changelogPACKAGE_NAME查询某rpm包制作时changelog变化                      -q --provides PACKAGE_NAME查询某包提供的capabilities

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

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

5.校验:

格式:rpm -V PACKAGE_NAME

如果出现问题,就会以下面单个字符形式显示。

S file Sizediffers

M Mode differs (includes permissions andfile 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--import PUBKEY ...

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

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

--nodigest:不检查完整性

三.Linux程序包管理前端工具YUM

1.安装:

yum install PACKAGE_NAME ...

PACKAGE-VERSION 安装指定的版本的程序

reinstall PACKAGE_NAME ... 重装指定的程序包

yum groupinstall "GROUP_NAME"  安装包组

注意:这里加引号是防止空格

2.升级:

yum update PACKAGE_NAME

update PACKAGE-VERSION升级包可用,且仅期望升级指定版本

yum groupupdate "GROUP_NAME"升级包组

yum check-update检查可用升级

3.降级:           yum downgrade PACKAGE_NAME

4.卸载:

yum erase|removePACKAGE_NAME:

yum groupremove "GROUP_NAME "卸载包组

或yum [email protected]"GROUP_NAME"

注意:依赖于卸载指定程序包的其它包,会被一并卸载;

5.查询:

yum list 查看所有包

yum info PACKAGE_NAME 查看具体某个包组

yum search KEYWORD: 根据关键字模糊查询包名

yum provides|whatprovides/path/to/somefile

yum grouplist 显示所有包组

6.yum客户端包仓库的创建:

配置文件:/etc/yum.conf这个是核心配置文件。当需要配置包仓库路径的时候,可以自己创建/etc/yum.repos.d/*.repo    例如:vim/etc/yum.repos.d/REPO_ID.repo

仓库定义:

[REPO_ID]

name=REPOdescription

baseurl=ftp://192.168.0.1/pub/CentOS6/包仓库路径

enabled={1|0}创建时包仓库是否激活默认为1

gpgcheck={1|0}是否检验包的可靠性

gpgkey=ftp://172.16.0.1/pub/CentOS6/gpg-key公钥导入地址

保存退出执行包仓库创建命令:

yum –y install createrepo

注意:1、在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;2、baseurl中指定路径时可使用变量$releasever:表示当前OS发行版的主版本号;$basearch:表示基础平台,例如i686,i586,i486,i386系列的基础平台都是i386;

例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

 

7.程序包的编译安装:

有时我们计划使用的包在仓库中无法找到时,还需要自己编译安装。

编译安装源程序的前提:

提供开发环境:开发工具和开发库

包组:DevelopmentTools、Server Platform Development、Desktop PlatformDevelopment。

项目构建工具:make (gcc)。这是C源程序的的编译过程。

编译C源程序的步骤:

1、/configure:检查编译环境,并根据指定的选项确定编译的特性、安装路径等;

--prefix=:   指定安装路径;多数程序都有默认安装路径;

--sysconfidr=:   指定配置文件安装路径;

2、make:调用所需要的编译器根据makefile配置文件定义执行编译过程;

3、make install:安装程序;

注意:这里的./configure的目的会生成makefile文件,如果包中已有可直接跳过。


8.程序安装于专用目录时,安装后的配置:

1.导出二进制程序所在路径至PATH环境中

# export PATH=/usr/local/nginx/sbin:$PATH

手动添加配置文件: /etc/profile.d/*.sh

2导出库文件给OS

OS查找库文件方法:根据/etc/ld.so.conf配置文件指定的路径搜索,或搜索/lib, /lib64, /usr/lib, /usr/lib64,把查找到的所有的库文件路径和其名称映射关系保存为一个缓存文件/etc/ld.so.cache;

手动添加配置文件:/etc/ld.so.conf.d/*.conf

假设nginx安装于/usr/local/nginx,此目录中有其库文件子目录lib,导出此目录中库文件:

(1)新建文件/etc/ld.so.conf.d/nginx.conf,在文件添加如下行:

/usr/local/nginx/lib

(2) 运行命令:

Ldconfig  -v:

3帮助文件导出

man命令搜索特定路径查找手册页文件,这些路径是定义在/etc/man.config中的MANPATH参数所指定的路径下的;将源程序的包中man文件cp到/usr/share/man/man{1,8}这里要具体看自己的源程序包是第几章节。

4头文件导出

导出独立安装应用程序的头文件方法:创建链接至/usr/include下即可;

例如:/usr/local/nginx/include

#ln -sv /usr/local/nginx/include /usr/include/nginx

时间: 2024-11-03 05:34:24

RHEL程序包管理的相关文章

RHEL系统程序包管理器【rpm、yum】

程序包管理器 将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager, RPM is Package Manager rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. RPM包的命名 例如,bash-4.3.2-1.ce

rpm程序包管理器详解

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

Linux程序包管理之RPM

一.RPM的简介 由于程序源代码到可被计算机识别并运行的指令是需要多步骤处理的:程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接. 这里以C,C++为例做为说明.程序员写完C,C++源代码后需要把源代码进行预处理,即通过预处理器把源代码分割或处理成为特定的符号用来支持宏调用.预处理后进一步通过编译器(gcc)编译为目标代码(object code),它由接近于机器语言的代码组成.目标代码通过编译器编译后才能生成可供CPU识别的机器代码.机器指令.由于C,C++在

程序包管理

CentOS系统上rpm命令管理程序包: 安装.卸载.升级.查询.校验.数据库维护 常用rpm命令 rpm -qa | grep coreutils    <-- 查看系统上是否已经安装了coreutils rpm -qi coreutils               <-- 查看已经安装的好的coreutils的描述信息 rpm -qf /bin/bash            <-- 查看bash文件属于哪个包 rpm -ql bash                    <

Linux学习笔记:rpm程序包管理

以CentOS为例,rpm程序包管理器的相关内容如下: CentOS的程序包管理器:    程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:          

Linux程序包管理与初识磁盘

Linux 程序包管理 API:Application Binary Interface(应用程序的二进制接口) ABI:APPlication Program Inertface(应用程序的开发接口) Windows : exe,msi Windows与Linux不兼容 ELF:(Executale and Linkable Format):可执行可连接格式,linux运行格式 PE:(Portable  Executable)可移植可执格式Windows运行格式 库级别的虚拟化: 要想在Wi

#12 程序包管理与rpm命令的使用

Linux的程序包管理: 程序:指令+数据 程序:算法+数据结构 应用程序的存在形式: 1.源代码:包含了整个应用程序的编程语言的所有代码的文本文件: 2.二进制:将源代码经过一系列的转换操作之后得到的可以直接执行的文件 使用源代码安装应用程序: 预处理(预处理器) --> 编译(编译器) --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件 POSIX:POS,Portable Operating System,可移植操作系统 API:Applic

linux程序包管理初步

1.概述 API:Application Program Interface ABI:Application Binary Interface     Unix-like         ElF     windows         exe,msi 库级别的虚拟化    winE(linux上运行模拟windows)     cywin(windows上运行模拟linux) 系统级开发:     C/C++:httpd,vsftpd,nginx     go 应用级开发:     java/P

程序包管理一之概论及rpm详解

程序包管理是运维人员的基本工作之一.在操作系统上,不断的安装,卸载,配置应用程序包,让不同程序包运行提供不同的服务:利用某种工具完成某些操作的过程.这就要求运维工作人员熟悉安装,管理应用程序包. 在linux上,程序包主要有两种:tar,rpm包. Linux程序包管理: 一.概述: 系统接口 API:Application Program Interface  应用编程接口 ABI:APPlication Binary Interface应用二进制接口 不同操作系统,API兼容,ABI不一定相