Linux对包管理阐述

  Centos/Redhat/Fedora的软件包,都是rpm后缀的文件。包管理器rpm(Redhat packages manager)

   linux的哲学思想是简单命令解决复杂任务,因此每个软件的功能较单一,所以各种包之间有着复杂的依赖关系,为了解决这种可以使用前端工具:

前端管理工具,自动解决依赖关系。

01、rpm包命名格式

二进制格式  name-VERSION.tar.gz

VERSION的格式: major.minor.release.os.arch

arch:i386,x64(amd64),ppc(power pc),noarch(java编写的,可以跨平台)

os:e17(红帽七) os:el6(红帽6)

eg:

主版本号为3,次版本号为0,发行号为2,编译次数为1,系统为centos7,平台为x64的rpm包

redis-3.0.2-1.centos7.x64.rpm

02、版本类型

fc       final candidate  最终版

alpha 内测版

beta 公测版

rc     发布候选版

release 正式版



程序包管理器:

源代码---> 目标二进制格式----> 组织成为一个或有限几个“包”文件,实现软件的安装,升级,卸载,查询,校验

后端管理工具:

debian:dpt,dpkg,".deb"

redhat: rpm,".rpm"   yum

S.u.S.E:rpm ,".rpm" 源于rpm但是组织结构不同,并不能和redhat兼容

Ubantu:是debian的分支,包管理机制一样

Gentoo;parts

Archlinux:linux界的新贵(极简哲学思想)



yum:rhel系列系统上的rpm包管理器的前端工具

apt-get:.deb包管理器的前端工具

zypper:suse的rpm包管理工具

dnf:Fedora20+系统上的rpm包管理器的前端工具,功能更强大,未来centos中也可能使用

03、常见的Mirrors

程序包组成包管理器的功能,将编译好的应用程序的各组成文件打包成一个或几个程序包文件

1.系统发行版的光盘或官方的文件服务器(或镜像站点)

http://mirrors.aliyun.com

http://mirrors.sohu.com

EPEL(较为可靠的组织):阿里云等中的epel目录

2.对rpm单个包下载

http://pkgs.org

http://rpm.pbone.net

http://rpmfind.net

04、RPM参数含义

CentOS系统上的rpm命令管理程序包,安装,升级,卸载,查询和校验,数据库维护

rpm命令: rpm [OPTIONS]  [PACKAGE_FILE]

安装: -i,--install

升级:-U,--updata,-F,freshen

卸载:-e,--erase

查询:-q,--query

校验: -V,--verify

数据库维护:--builddb,--initdb

1.安装



rpm -ivh PACKAGE_FILE

通用选项:

-v:verbose 显示详细信息,

-vv:更详细的输出

rpm {-i|--install} [install-options] PACKAGE_FILE...

[install-options]:

-h:hash marks 输出进度条,每个#表示2%的进度

--test:仅是测试,并不真的安装

--nodeps:忽略依赖关系,可以让你安装,但是不一定可以用。你建议使用

--force        强制安装

--replacepkgs;重新安装

如果自己不小心错误修改了某些配置文件,想要安装的初始文件,可以通过这个命令但是要把改变过的文件删除,否则重新安装不会替换它

--nodigest:不检查程序包的完整性

--nosignature:不检查包签名信息,不检查来源合法性

注意: rpm可以自带脚本;

四类:--noscripts,不执行任何脚本

preinstall:安装过程开始之前运行的脚本,%pre

postinstall:安装过程完成之后运行的脚本,%post

peruninstall:卸载过程真正开始执行之前运行的脚本,

postuninstall:卸载过程完成之后运行的脚本

2.升级:



rpm  {-U|--upgrade} [install-options]  PACKAGE_FILE

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

-U:升级或安装,有则升级,无则安装

-F :  升级,如果事先没有也不会安装

--oldpackage:降级;

--force:强制升级

常见用法:

rpm  -Uvh PACKAGE_FILE....

rpm  -Fvh  PACKAGE_FILE

注意:

1.不要对内核做升级操作;linux支持多内核版本共存,因此,直接安装新版本内核

2.如果某源程序的配置文件安装后被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名

(FILENAME.rpmnew)后提供(删除旧的,新的自动生成)

3.卸载:

rpm {-e|--erase} [--allmatchs][--nodeps][--noscripts][--test]PACKAGE_NAME

--allmatchs:卸载所有匹配指定名称的程序包的各版本

--nodeps: 忽略依赖关系,即使该文件被依赖,也会卸载

--test: 仅是测试,并不真的卸载

4.查询:

rpm {-q|--query}[select-options][query-options]

[select-options]:

-a,-all:查询所有已经安装的包

-f FILE:查询指定的文件由那个程序安装生成

-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息

rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件

rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件

--whatprovides CAPABILITY:查看指定的CAPABLITY由哪个程序包提供

--whatrequires CAPABLITY:查询指定的CAPABLITY被哪个包所依赖

[query-options]

--changlog;查询rpm包的changlog;

-l,--list:列出该安装包生成的文件列表

-i,--info:程序包相关的信息,版本号,大小,所属的包组等

-c,--configure:查询指定的程序包提供的配置文件

-d,--docfiles:查询指定的程序包提供的文档

--provides:列出指定的程序包提供的所有的CAPABLITY,提供了某个文件也是能力

-R,--requires:查询指定包的依赖关系

--scripts:查看程序包自带的脚本程序

eg:

[[email protected] ~]# rpm -q --provides bash       bash提供的能力

config(bash) = 4.1.2-40.el6

bash = 4.1.2-40.el6

bash(x86-64) = 4.1.2-40.el6

[[email protected] ~]# rpm -q --whatprovides ‘config(bash)‘      ;‘config(bash)‘ 这个能力是谁提供的

bash-4.1.2-40.el6.x86_64

[[email protected] ~]# rpm -q --whatrequires ‘config(bash)‘       ;‘config(bash)‘   这个能力被谁依赖

bash-4.1.2-40.el6.x86_64

05、RPM常见用法

rpm -qi   PACKAGE.NAME: 查询安装包的具体信息

rpm  -ql   PACKAGE.NAME:列出安装包生成的文件

rpm -qf   FILE:查询某个文件是由那个安装包提供的

eg:[[email protected] ~]# rpm -qf /usr/share/man/man1/wait.1.gz

bash-4.1.2-40.el6.x86_64

rpm  -qc  PACKAGE.NAME:查看安装包生成的配置文件

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

不安装包直接查看:

eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息

rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件

rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件

06、RPM效验

校验务必保证公钥是安全的,合法的

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

eg: rpm -Va

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

eg:

[[email protected] ~]# rpm -V zsh

S.5....T.    /usr/share/zsh/4.3.11/scripts/newuser   这里对应的就是上面的信息,.表示没有变化

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

合法性:一个包制作者利用单向加密数据,然后利用私钥对数据的MD5加密,这样大家获得公钥后就可以验证这个包的来源了

完整性:自己利用单向加密方法计算数据的MD5,然后比对md5码比对,如果一致,说明数据内容没有被修改。

[[email protected] ~]# rpm -K /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm

/media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

[[email protected] ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6

查看导入的秘钥文件

[[email protected] ~]# rpm -qa gpg-pubkey*

gpg-pubkey-c105b9de-4e0fd3a3

删除导入的文件:

[[email protected] ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3

数据库的重建:

rpm {--initdb|--rebuilddb}[--depath DIRECTORY][--root DIRECTORY]

--initdb:初始化数据库,当前无任何数据库可实验化创建一个新的;当前有时不执行任何操作,不要轻易操作

--rebuilddb:重新构建,读取当前系统上所有已经安装过的程序包进行重新创建

--depath:指定数据库的路径

--root:指定根的路径

时间: 2024-11-05 14:43:49

Linux对包管理阐述的相关文章

Linux程序包管理

Linux程序包管理 RPM包基础 RPM YUM 编译安装 概述 Linux上的程序包管理,是我们的必备技能,本文将从三个视角:rpm.yum.源码编译来浅析Linux的程序包管理.首先,我们来看下本文的主要内容: - 程序包的命名- RPM: 程序包管理器    安装.卸载.升级.查询.校验.数据库维护      - YUM: RPM的前端程序    yum的配置文件     yum的常规操作:升级.检查.卸载.查看.包组管理     使用光盘当作本地yum仓库     yum的命令行选项及

Linux程序包管理及yum安装管理

Linux程序包管理: API:ApplicationProgramming Interface   应用编程接口 POSIX:Portable OS    遵循本协议的程序均可在不同系统间移植 程序编写完成后,执行所要经过的处理步骤: 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:直接调用.so共享对象实现 ABI:ApplicationBinary Interface  应用二进制接口 Windows与Linux所支持的可执行二进制

Linux程序包管理工具简介

一.Linux程序包管理器-RPM RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装.RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. 1.RPM 安装操作 命令: rpm -i 需要安装的包文件名 例: rpm -i example.rpm 安装 example.rpm 包 rpm -iv example.rpm 安装

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

Linux程序包管理总结

Linux程序包管理 相比于Windows系统,Linux的程序包的管理就没有那么简单了,当然在Linux系统中也有像Windows系统中EXE或者MSI安装包一样的安装包文件,可以直接实现进行程序包安装,但即是这样的程序包的安装也要比Windows复杂多了,当然,大家不要被我这两句话给唬到了,当你学过这课后,你会发现Linux的程序包管理其实也很简单的,同样你也会发现Linux的程序包管理比Windows的好玩儿多了. Linux中的程序包格式: .deb  源于debian系统的安装包格式

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux程序包管理之rpm包管理

Linux程序包管理 软件包管理 功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装.升级.卸载.查询.校验.数据库维护. API:Application ProgramInterface应用程序接口: ABI:Application BinaryInterface应用二进制接口: Unix-like和linux在ABI层次是相同的 linux程序包:ELF格式: 但是与Windows相差甚远 windows程序包:exe,msi格式: API层次兼容不一定A

Linux程序包管理:RPM和YUM

Linux程序包管理:RPM和YUM   就像Window一样,我们安装了windows系统如果没有相应的应用软件,如OFFICE,IE,等各种软件,用户是无法使用计算机,linux 完成各种应用功能,也需要各种应用程序,所以程序包的管理就非常必要. Linux平台的内核功能:进程管理.内存管理.网络协议栈.驱动程序....             应用程序:              早期的linux程序包的组成部分:                二进制程序:/bin, /sbin,/ /u

Linux 程序包管理 rpm yum dnf

Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文