20150910程序包管理

第一、程序包的定义

程序包管理:

内核功能:进程管理:内存管理,网络协议栈、驱动程序……………

应用程序

Linux常用包管理器、打包、包管理(安装、升级、卸载、查询、校验)

deb:debian 早期程序包管理

rpm:redhat (redhat package manage---> (标准)

RPM is Package Manager( 采用C语言实现、目前成为Linux包的标准)

第二、程序包组成

程序包组成4类:

二进程制程序(/bin,/sbin ,/usr/bin,/usr/sbin

库文件(共通的功能,通过库形式提供/lib64,/usr/lib64

配置文件:/etc

帮助文件:manual,info

第三、包管理器功能

打包:前以上类型文件存放在一个单一的归档文件中,支持包管理的功能)

安装: 将相应文件安装到相应的位置,执行文件在/bin,/usr/bin

卸载:

升级:新版本替换旧版本程序

查询:安装信息

检验:检验的二个方面:来源的合法性、完整性,基于md5

第四、rpm包工具

rpm利用rpmbuild创建:依赖于specs文件,每个文件存在不同的路径

10,5,3,2(说明10个功能包,5个常用,3个次常用、2个很少用)

RPM分包机制:   例如:testapp-version.tar.gz ,(tar.gz归档压缩格式)

testapp-version 核心包(主包)

testapp-develp-version 支包(分包)

一个包分多个片,安装时安装需要的小包

第五、RPM包的命名

version:主版本号---- 次版本号------ realese(修正)

major. Minor.release(点号分隔)

RPM包的命名机制:

name-verision-release.ARCH.rpm(ARCH架构,RPM特定后缀)

示例:bash-4.2.4.1.el17.x86.rpm

bash_devel-4.2.4-1.e17.x86_64.rpm

4.2.4为version,1el17为release是rpm包release,不是程序包

Release:rpm release el17指redhat 7

libselinux-2.2.2-6.el7.i686.rpm这主包

libselinux-devel-2.2.2-6.el17.i686.rpm等为分包

第六:包之间依赖关系

rpm实现基本功能包与包之间有可能存在依赖关系(功能单一),

多个包或工具来完成复杂工作。

Linux为了追踪系统安装的rpm包以及生成的文件有RPM数据库,

记录当前包名、文件、原始检验码、对应关系等。通常在/var/lib/rpm路径下

第七:如何获取rpm包:

获取途径

1、发行版提供的程序包

2、fedora-EPEL 是程序项目 社区组织开源项目提供额外包

3、项目的管方站点: 国内阿里、163等镜像

4、搜索引擎 第三方

http://rpmfind.net http://rpm.pbone.net http://pkgs.org

第八:RPM包管理

1、包挂载

显示OS版本

centos识别光盘使用的文件cdrom,所有文件先挂载后使用

/dev/cdrom-sr0 是一个链接 cdrom-sro系统可能不同

cdrom实际为一个符号链接,采用ls –l显示

-r代表只读,

查看安装包/cdrom/Packages目录下包的数量使用ls |wc –l

2、基于RPM命令支持程序包管理操作

1)安装:

     A:命令格式:

NAME

rpm - RPM Package Manager

SYNOPSIS

QUERYING AND VERIFYING PACKAGES:

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

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

INSTALLING, UPGRADING, AND REMOVING PACKAGES:

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

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

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

命令选项:

--i install

-v显示详细过程 -vv, -vvv

-h hash用#号显示进度

示例:安装包

一般-ivvh更详细的内容:包括安装目录、

示例:删除、卸载包  -e选项代表ease、uninstall

示例:查看包是否安装,后为包名

B:依赖关系

程序包有依赖关系,未安装将被组织

每个rpm包都提供一个或多个capabilitles

--nodeps 忽略依赖关系

--test 只测试

--replacepkgs 重装程序包

--nodeps可放到后面

示例:-- 忽略依赖进行安装,

重新安装并忽略依赖关系

      C:安装多个包,后面多个包名即可,并可添加相应的选项

2)升级

   A:命令格式

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

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

-UuH:如果有旧版本程序包,则升级,如果没有则安装

-Fvh:如果有旧版程序包,则升级,如果没有则不安装

安装选项

--nodeps

--oldpackage:降级

--force 强制升级

3)卸载

A:命令格式

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

[--notriggers] [--test] PACKAGE_NAME …

--noscripts

卸载指定包名  rpm –e 包名

4)查询

    A:命令格式

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} PACKAGE_NAME …

查询选项:

-qa包括所有包   -a所有包 -f由那个生成、-g包组

-qf /path/file 这个文件由那个安装包生成

示例:/etc/fstab文件由setup包生成

-qc 查询指定程序生成那些配置文件

-qd 查询指定安装包生成的文档:一般在doc、man、info

-qi 包名: 指定相关包的相关信息

-ql 查询安装包生成了那些文件的列表:wc-l统计信息

-qR 查看依赖那些程序包

-q –scripts 包名,显示程序包中的脚本

共4类:preinstall安装前准备脚本

postintall  安装后脚本

preuninstall卸载前脚本

postuninstall卸载后脚本

-p :查询针对未安装的程序包文件

安装后可能生成的文件-qpl

5)校验

       命令格式:用于检查安装包是否被修改过

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

rpm -V的属性

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 –V zsh    :修改zsh安装后通过rpm –ql查看相

关文件,利用vim修改后运行运行查看是被修改,输出如下

6)包校验:

来源合法性验证:非对称加密(利用公钥、私钥)有公钥需要私钥解密。

有私钥需要用公钥解密,如果二次验证码相同说明来源合法

默认情况下公钥在安装盘中存在。其中rpm-gpc-key为公钥

系统自带公钥:

导入密钥:(导入后不会再提醒)将RPM-GPG-KEY-CentOS-7导入

后,将校验安装在光盘package目录的所有包,示例:

rpm –import RPM-GPG-KEY-CentOS-7

用选项-K(大写) 进行校验

  完整性验证:单向加密

导入密钥:rpm --import /path/to/file

校验: rpm -K /path/to/RPM_FILE

第九:YUM源管理

1)YUM定义

用于自动更新依赖关系(操作系统提供不好),YUM一次只能安装一

个包,不能够并行运行。

YUM (yellowdog update modfity)

YUM(依赖服务器组件)指定一个包仓库(可不指一个),

每个仓库都有(仓库管理程序包的集合,包名、版本号、依赖关系

都记录在仓库源数据文件当中)。每个仓库都有源数据文件下载缓存,

通过缓存数据文件下载(最新版本源文件包名、版本号、下载关系)YUM

一般是文件服务器。一般源数据文件不会删除,但下载的文件安装完成后下载)

yum install zsh 在仓库找zsh程序包,找最新的同时下载

到本地,放到缓存空间中。所有相关包完成开始类似rpm进行安装

下载后,本地后进行安装。针

YUM通过检验码检测最新版本!新版本将覆盖本地旧版本文件。

2)YUM的配置与使用

A:常用YUM源

常用的YUM源镜像包括aliyun,163,sohu等(EPEL)

      mirrors.aliyun.com等

repodata为源数据所在目录的你目录为仓库路径,该目录与服务器对比

yum repositories:提供的三种方式

文件服务器:

ftp://hostmae/Path/to/repo

http://hostname/path/to/repo

file:///path/to/repo     本地某个目录

告诉yum来源 mirrors.aliyu.com

B:yum程序(客户端)的配置文件

/etc/yum.conf 全局,对所有都适用的配置

/etc/yum.repos.d/*.repo

一个文件通常用于一个或一组功能相近或相关仓库。

重要是参数指向

C:定义一个仓库指向:

   格式:

[REPO_ID]

name=

baseurl=或多个可从中选一个(文件服务器三种定义形式之一),要求包相同

#mirrorlist=互联网上的某个文件 scheme://hostname/path/to/mirror_list_file

enable={1|0} 是否启用

gpgcheck={1|0} 检验,需要key,二端都需要有

gpgkey 互联网路径密钥路径

cost=开销

Repo 路径为仓库路径(示例-Centos aliyun)

仓库指向时可利用的变量:实现引用当前系统的主版本号

$releasever:这条当前OS主版本号

$basearch:当前系统的基本架构

i386,i486,i586,i686,

例如http;//mirrors.magedu.com/centos/$releaser/$basrarch

当7时输出为

http://mirrors.magedu.cm/centos/7/i586

http://mirrors.magedu.cm/centos/$releasever/i586

$releaser/替换7等

步骤1:准备父路径(一般为repodata上一级目录

这里为http://mirrors.aliyun.com/centos/7/os/x86_64/

步骤2: 修改/etc/yum.repos.d目录下CentOS-Base.repo

文件,修改别名(非repo结尾)

步骤3:在/etc/yum.repos.d目录下创建以repo结尾的文件

根据仓库指向定义的格式进行编辑

步骤4:利用yum repolist显示可用仓库

可参考针对epel进行路径fedora-epel指定

yum repolist中status为包的数量

D:YUM命令的使用

命令格式

yum(8) yum(8)

NAME

yum - Yellowdog Updater Modified

SYNOPSIS

yum [options] [command] [package ...]

常用命令

安装 yum install php-mysql (自动解决依赖关系)

卸载yum remove 包名 (依赖所有的包都将卸载)

升级yum update 包名/yum check-update(查验可用升级包)

查询 yum info 包名

yum search zs 基于关键字

yum list all 所有以安装未安装或者yum list 包名(zs*)支持通配符

yum list all|installed|available

yum list all |grep

yum provides /path/to/somefile  文件名 ,程序文件由那个包安装完成

重新安装:reinstall

yum 可安装本地某路径文件 localinstall(旧版本使用)

降级:downgrade

clean:清理缓存:存储文件(后面文件类型)

[ packages | metadata | expire-cache | rpmdb | plugins | all ]

生成缓存:makecache

包组:列出所有包组 yum grouplist  列出所有包组

groupinfo “GRP_NAME”

groupinstall “GRP_NAME”

Groupremove “GRP_NAME”

包组信息:注意名称空格使用双引号 " "

仓库相关命令:repolist

repoinfo[all|enable|disable]

不能同时启动二个yum安装,因为二个yum之间相互隔离

yum help repoinfo

E:使用光盘当做本地仓库

步骤1:定义文件:前提光盘已挂载

步骤2:在/etc/yum.repos.d目录创建centos-local.repo文件

步骤3:编辑文件:使用file:///指明其访问路径

数据越大,优先级低。默认1000

步骤4:yum repolist

F:创建本地仓库

自己利用rpm包创建本地仓库包

yum install createrepo 自动分析源数据包

createrepo /path/to/rpmfiles/

yum分组基于xml定义

yum是包程序前端管理工具

G:DNF(yum的升级版,有suse研发)

可利用yum install dnf进行安装

时间: 2024-10-05 10:55:35

20150910程序包管理的相关文章

学习笔记之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命令详解: 功能: 安装.卸载.升级.查询和数据库维护

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

10 Linux程序包管理

CentOS系统上rpm命令管理程序包:        安装.卸载.升级.查询.校验.数据库维护          安装:               rpm {-i|--install} [install-options] PACKAGE_FILE ...                      -v: verbose                      -vv: -h: 以#显示程序包管理执行进度:每个#表示2%的进度                        rpm -ivh

Linux程序包管理

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

Linux中程序包管理

u    无论我们使用哪种操作系统,仅使用操作系统自带的程序包一般都满足不了我们的使用需求,所以我们都需要安装程序.这篇博文我们来讲解一下在Linux操作系统中我们该如何安装程序. 本篇文章会涉及rpm管理程序包.yum管理程序包.yum仓库的指定.自己编译源码安装程序.简要介绍一下该如何自己建立一个yum仓库给其他主机提供程序包. 一.rpm管理程序包 (1)如何获取安装包 1)系统发行版的光盘或者官方的文件服务器(或者镜像站点): http://mirrors.aliyun.com/ htt

学习日志---linuxの 程序包管理综述

Linux的程序包管理: 应用程序: GPL:源码, POSIX: Portable Operatin System API: 兼容,意味开发库兼容,因此,源代码可跨平台 ABI:兼容,编译后的程序可以跨平台: 不同的平台可执行的二进制程序格式不同,因此编译后的相同程序在不同平台不一定都能运行 库:可执行程序,本身不能作为程序执行入口,但可以被调用 编译好的二进制格式 程序:预编译.编译.汇编.链接 静态: 动态链接:dll(windows), 在linux下,so(shared object)