时间:2015.09.20
linux-软件包管理
程序包管理介绍
在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。
程序包的组成
程序包是由以下部分组成
二进制程序:程序包最核心的组成部分,通常放在/bin, /sbin,/ /usr/bin, /usr/sbin,
库文件:其主要是实现二进制文件和代码共享 通常存放在/lib64, /usr/lib64
配置文件:/etc
帮助文件:其形式有manual, info
这里我们主要来介绍一下RPM包;其主要操作有:
打包:一个单一的归档文件中;
安装:把包放到其相应的文件中去
卸载:就是手机程序包的信息统一到一起,然后删除
升级:就是新版本应用替换老的程序
查询:实现查看一个程序安装的有什么功能和程序的路径位置
校验:是检查程序包安装完以后其文件是否被篡改了
程序分包机制
分为:核心包和支包
其命名机制
核心包 testapp-version
支包testapp-devel-version
version:major.minor.release
主版本号.次版本号.release号
例:base-4.2.4.tar.gz
rpm的命名机制
包名-版本-release.arce.rpm
例:bash-4.2.4-1.el7.x86_64.rpm
分解:
bash 包名
4 主版本号
2 次版本号
4 release号
1.el7 release号 是rpm的发行号
x86_64 平台架构
包和包之间:有可能存在依赖关系
如何获取rpm包:
1、发行版提供的程序包;
2、Fedora-EPEL
3、项目的官方站点
4、搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
5、光盘
下面我们来看一下rpm是如何安装的
首先我们这里先挂载自己的光盘,如下图
命令格式
rpm [option] 包名
rpm –i[v|h] [--excludedocs |prefix |test |replace[pkgs |files] |nodeps] sudo
[解析] i为安装,v为显示详细信息,h为hash是进度信息
如图:
前面我们说过rpm包会有依赖关系的,我们以下图为例,下图中我们安装的rpm包就会有它的先决条件包,而我们要想安装这个rpm包除了先把其的先决条件包安装完的方法外,我们还有如下选项 --nodeps 忽略依赖关系,这是这样安装完之后程序可能无法运行,例:
有的时候我们安装完的程序包,我们还可以重新安装,其命令就是--replacepkgs 重装程序包
查看程序包是否安装,我们使用rpm -q 报名或者rpm -ql 报名显示此包的安装位置,如下图:
rpm的升级
常用选项
rpm -Uvh package.rpm
rpm -Fvh package.rpm
-Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;
-Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;
这里找不到升级包了就不做升级了
rpm 的卸载
格式:rpm -ev package
如下图:
rpm的查询
格式:rpm -qa package 查询已安装的包
如下图:
rpm -qc package 查询已安装软件生成了哪些配置文件
rpm -qd package 查询已安装软件生成了哪些文档
rpm -ql package 显示软件包中的文件列表
显示太多就不截图了
rpm -qi package 显示软件包信息
rpm -qf /path/ 查询此路径所属的软件包
rpm 的校验
rpm -V package
S 为文件大小是否改变
5 为文件的md5校验值
L 链接文件
T 文件创建时间时间戳是否改变
D 设备文件是否改变或者是否匹配
U 文件的用户是否改变
G 文件的用户组是否改变
M 文件的权限是否改变
包校验:
来源合法性验正:非对称加密
完整性验正:单向加密
导入**:rpm --import /PATH/TO/KEY_FILE
校验:rpm -K /PATH/TO/RPM_FILE
=====================包管理的yum=======================
yum百科
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum源的配置
CentOS 默认已经安装了yum,不需要另外安装
yum 的配置文件分为两部分:main 和repository
main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。
repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中;如下图:
yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项,我们使用vim打开主配置文件,vim /etc/yum.conf ;如下图:
主配置文件,我们大部分不需要做操作,在这里我们就不需要多说了。
下面我们主要来看一下/etc/yum.repos.d/*.repo文件是如何定义的吧,我们首先来看如下截图:
上图,中我们是把内网中的一台服务器当做yum服务器了,而他则每天晚上去外网同步更新安装包,由于资源有限,我们就不再做操作了,我们在文章最后来配置一下光盘当做yum源文件吧!
上图,详解:
解释两个变量
$releasever 引用当前系统的主版本号,也就是Centos6.7的主版本号就是6
$basearch 当前系统的基本架构 比如:x86_64
|
选项 |
功能描述 |
| [] |
[]中填写的yum源中唯一的ID,可以为任意字符 |
|
name |
指定yum源名称,可以为任意字符,一般我们都按照自己的习惯来。 |
| baseurl |
指定yum源的URL地址(可以是 http、ftp、或者是本地路径) |
|
mirrorlist |
指定镜像站点目录 |
| enabled |
是否**yum源(0代表禁用,1代表**,默认为**状态) |
|
gpgcheck |
安装软件时是否检查签名(0代表禁用,1代表**),如果此项设置检查,gpgkey就需设置key路径 |
|
gpgkey |
检查签名的秘钥文件 |
| provides |
查看包是由哪个软件包生成的 |
| reinstall |
重新安装软件包 |
当我们创建好yum源仓库了,我们可以使用如下命令来使用yum
YUM命令格式
用法:yum [选项] [指令] [软件包]
其中我们常用的选项-y, 是执行非交互式安装,假定安装过程中出现的所有提示回答为YES
指令
| 用法 |
描述 |
| install package1 ...package10 |
使用yum安装软件包 |
| update package1 ...package10 |
使用yum源升级安装包 |
| check-update |
使用yum源检查所有可升级的安装包 |
| remove | erase package1 ...package10 | 卸载软件包 |
| list |
列出系统中已安装的以及yum源中所有可用的软件包 |
| info |
查看软件包信息 |
| clean all |
清空所有的缓存信息 |
| groupinstall group1..... |
使用yum安装组包 |
| grouplist |
列出系统中已安装或者yum源可用的安装包 |
| groupremove group1..... |
卸载组包 |
| search string1..... |
根据关键字查找软件 |
| localinstall rpmfile1... |
通过本地的rpm文件安装软件 |
| history |
查看历史记录 |
| provides package1 | 查看包是由哪个软件包生成的 |
| reinstall package1 | 重新安装软件包 |
实例:
yum install httpd 安装
yum -y remove httpd卸载
yum check-update 检查需要升级的软件包
我们使用yum update 加报名对指定的包升级,如果不加将全部升级
yum list 后面加包名就单列出此包
yum info 软件包名 查看软件包的基本信息
yum clean all 如下图:
yum grouplist
yum groupinstall 组名
yum groupremove 卸载组这里就不截图了
我们使用yum search string1通过关键字来查找软件
yum history
yum provides zsh
yum reinstall zsh*
yum的基本操作我们讲解完毕,下面我们来使用光盘来当做yum源文件,配置个yum源服务器;我们做此操作我们需要先把光盘挂载到本地,在这里我们就不一一写命令了,看图说话
下图:光盘挂载至本地
然后我们创建yum源文件
编辑.repo文件,如下图: 备注,cost是定义使用优先级的。
我们使用yum repolist 查看,如下图:
其实我们也可以创建本地的yum源,我们使用yum install createrepo,然后creatrepo /path/path 路径,然后在修改baseurl的路径为创建的路径即可。
然后创建本地yum源目录,此目录首先自己要用mkdir创建好
修改repo文件,并验证
好了,这样我们我软件包管理结束了,我们一共说了两种软件包管理方法希望能帮助大家。
转载于:https://blog.51cto.com/huichengu/1696426