700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux_09 Linux软件包管理 rpm与yum

Linux_09 Linux软件包管理 rpm与yum

时间:2021-07-29 02:46:05

相关推荐

Linux_09 Linux软件包管理  rpm与yum

Linux软件包管理 rpm与yum

文件的压缩与打包rpm安装软件yum安装删除软件yum进阶

一、 文件的打包 与压缩

压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。 打包:指将多个文件(或目录)合并成一个文件,方便传递或部署。压缩文件或打包文件常见的扩展名:.tar,.tar.gz,.gz,.bz2 ,.tar.bz2,.Z;linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。

常见的文件扩展名

*.gz gzip程序压缩的文件 *.bz2 bzip2 程序压缩的文件 *.Z compress(旧的加密算法,目前基本不用) 程序压缩的文件*.tar tar命令打包的数据,并没有压缩过 *.tar.gz tar程序打包的文件,并且经过 gzip 的压缩 *.tar.bz2 tar程序打包的文件,并且经过 bzip2 的压缩

常见的压缩\打包命令

compress压缩效率低下,压缩比也较差,几乎已经不再使用gzip 与 bzip2 gzip比bzip2性能好,但bzip2可以获得更高压缩比。 tar可以将很多文件打包成为一个文件

gzip命令: 可以解压compress 、 zip 、 gzip等算法压缩的文件

选项与参数

-c :将压缩的数据输出到标准输出(stdout)上 -d :解压缩 -t :可以用来检验一个压缩文件的一致性,看看文件有无错误 -v :可以显示出原文件/压缩文件的压缩比等信息 -(1,2,...,9):压缩等级,1最快,但是压缩比最差;9最慢,但是压缩比最好,默认是6。 -l :查看压缩文件的压缩比: gzip –l *.gz

示例

压缩命令 gzip -v install.log (如果不加 -v 则默认直接压缩)显示 install.log:76.8% -- replaced with install.log.gz注意 : 源文件被压缩之后 , 自动在源文件名后追加“.gz” , 源文件将不再存在解压命令 gzip -d install.log.gz注意: 源文件被解压之后 , 自动将源文件名后的“.gz”删掉 , 源文件将不再存在 。 压缩或解压缩之后保留源文件命令 gzip -c install.log > install.log.gz查看源文件是否存在ll | grep install

zcat查看压缩文件的内容

cat可以读取纯文本文件,那么zcat则可以读取纯文本文件被压缩后的压缩文件

示例

[root@root tmp]# zcat *.gz #查看全部内容[root@root tmp]# zcat *.gz |head -n #查看前n行

bzip2命令

gzip 是为了取代 compress 并提供更好的压缩比,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。

选项与参数

-c :将压缩的过程产生的数据输出到标准输出(stdout) -d :解压缩的参数 -k :保留源文件,而不会删除原始的文件 -f :强制压缩-z :压缩的参数(有无均可)-v :可以显示出原文件/压缩文件案的压缩比等信息; -(1,2,...,9) :与gzip同样的,都是在计算压缩比的参数,-9压缩率最佳,-1压缩速度最快

示例

压缩[root@root tmp]# bzip2 -z install.log #删除源文件[root@root tmp]# ls install*install.log.bz2[root@root tmp]# bzip2 -zk install.log#保留源文件解压[root@root tmp]# bzip2 -d install.log.bz2 #删除源文件[root@root tmp]# bzip2 -dk install.log.bz2 #不删源文件

compress、uncompress(仅做了解,目前已不用,当前系统内核已不提供该命令)

选项与参数

-r :可以连同目录下的文件也同时给予压缩-c :将压缩数据输出成为standard output -v :可以列出压缩后的文件信息以及压缩过程中的一些文件名变化

tar命令

选项与参数

-c :建立打包文件,-t :查看打包文件的内容含有哪些文件 -x :解打包或解压缩的功能,可以搭配-C(大写)在特定到特定目录解开 -j :通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2 -z :通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来 -f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名) -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个 选项 -p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件--exclude=FILE:在压缩的过程中,不要将那些文件打包 注意 -c, -t, -x 不可同时出现在一串指令列中

tar命令仅解压压缩包中的某一个文件 ,如:shell文件

1、查询shells文件在压缩包中是否存在tar –ztv –f [/路径/]filename.tar.gz|grep ‘shells’[root@root ~]# tar -ztv -f /tmp/etc01.tar.gz |grep 'shells’或[root@root tmp]# tar -ztv -f etc01.tar.gz |grep 'shells'2、仅解压出shells文件[root@root tmp]# tar -zxv -f etc01.tar.gz etc/shells解压后在/tmp下生产一个etc文件夹,etc下有shells文件3、仅解压出etc/yum目录:也可以解压压缩包中的某一个子目录

二、 rpm安装软件

RPM(RedHat Package Manager)安装管理

这个机制最早是由Red Hat开发出来,后来实在很好用,因此很多 distributions(发行版)就使用这个机制来作为软件安装的管理方式 。包括Fedora,CentOS,SuSE等等知名的开发商。 例如:CDH(Cloudera Distributed Hadoop,Cloudera公司的 Hadoop发行版)提供rpm包(省略部分详细版本号),使得在 Linux上安装Hadoop这样的分布式系统变得更加简单: hadoop-mapreduce-2.5.0xx.rpm hadoop-mapreduce-historyserver-2.5.0xx.rpmhadoop-yarn-2.5.0xx.rpm

RPM的优点

RPM内含已经编译过的程序与配置文件等数据,可以让用户免除重 新编译的困扰 RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可 避免文件被错误安装 RPM文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件 RPM管理的方式使用数据库记录 RPM 文件的相关参数,便于升级 、移除、查询与验证

RPM的默认安装路径

/etc 一些配置文件放置的目录,例如/etc/crontab /usr/bin 一些可执行文件 /usr/lib 一些程序使用的动态链接库 /usr/share/doc 一些基本的软件使用手册与说明文件 /usr/share/man 一些man page(Linux命令的随机帮助说明)文件

rpm安装命令

rpm -ivh package_name

选项与参数

-i :install的意思 -v :察看更细部的安装信息画面 -h :显示指令执行过程。

示例: rpm 按装JDK

使用wget /linux/rpm2html/search.php?query=lrzsz,下载lrzsz-0.12.21-15.x86_64.rpm 将所需要的JDK rpm包下载到本地执行rpm -ivh jdk-8u111-linux-x64.rpm执行完成之后 键入 java -version 查看是否安装成功这里并不是自动为我们配置了环境变量 具体看这里/qq_31246691/article/details/79331355但是有些特定的场合下是需要java的环境变量的 , 最好还是自己也配置一遍:[root@root ~]# vim /etc/profile加入内容如下:export JAVA_HOME=/usr/java/jdk1.8.0_111export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH[root@root ~]# source /etc/profile[root@root ~]# java -version java version “1.8.0_111“

rpm升级与更新

rpm -Uvh <package_name> -Uvh后面接的软件如果没有安装过, 系统会直接安装,若后面接的软件安装过但版本较旧,则更新至新版 [root@localhost soft]# rpm -Uvh jdk-8u111-linux-x64.rpm Preparing...########################################### [100%]package jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64 is already installedrpm -Fvh <pacakge_name> -Fvh如果后面接的软件并未安装到Linux系统上,则该软件不会被安装,只有已安装的软件才会被升级

rpm查询

简单原理:

简单原理:rpm在查询的时候,其实查询的地方是在/var/lib/rpm/ 这个目录下的数据库文件 [root@localhost ~]# ll /var/lib/rpm/ total 58272 -rw-r--r--. 1 root root 5500928 Mar 8 20:27 Basenames -rw-r--r--. 1 root root 12288 Mar 4 23:06 Conflictname -rw-r--r-- 1 root root 24576 Mar 8 20:42 __db.001 -rw-r--r-- 1 root root 229376 Mar 8 20:42 __db.002

rpm查询已安装软件

选项与参数

-q :仅查询,后面接的软件名称是否有安装 -qa :列出所有的,已经安装在本机Linux系统上面的所有软件名称 !!!-qi :列出该软件的详细信息,包含开发商、版本和说明等 !!-ql :列出该软件所有的文件与目录所在完整文件名 !!-qc :列出该软件的所有配置文件 !-qd :列出该软件的所有说明文件 -qR :列出和该软件有关的相依软件所含的文件 -qf :由后面接的文件名,找出该文件属于哪一个已安装的软件 查询某个 RPM 文件内含有的信息: -qp[icdlR]: 注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出 某个 RPM 文件内的信息,而非已安装的软件信息

rpm检查

-V :后面加软件名称,若该软件安装之后被改动过,会列出被修改过的 文件。!! -Va :列出目前系统上面rpm安装的所有包中被修改过的文件。!-Vp :后面加的是rpm文件名,列出rpm包中的文件在当前系统中是否修改。 -Vf :列出某个文件(直接列出软件包安装之后的文件名)是否被改动过。!!

rpm 卸载

找出与apr有关的软件名称,并尝试移除apr这个软件 [root@root ~]# rpm -qa | grep apr apr-1.3.9-5.el6_2.x86_64 [root@root ~]# rpm -e apr [root@root ~]# rpm -qa | grep apr

三、 yum安装 、 删除 、 更新软件

为什么要有yum?

rpm头疼的依赖关系 (例如安装某个游戏时)

当安装一个rpm包时,发现它依赖于其它的rpm包,只能先去下载及安装这个依赖包。 当这样的依赖关系非常复杂时,一个个rpm安装对于大数据工程师来说,安装这件事演变成一个灾难。 卸载,也一样!删除某个rpm包时,如果有其它的rpm依赖于它,也得先删掉他们。如果有一个集中的地方管理多如牛毛的rpm,简化“下载+解决依赖问题+安装”这样的繁琐步骤,该多好啊

yum

yum是通过分析RPM的标头资料后,根据各软件的相关性制作出属 性相依时的解决方案,然后可以自动处理软件的依赖问题,以解决软 件安装、移除、升级中遇到的繁琐操作的问题

基本配置 /etc/yum.repos.d

yum查询

search :查询某个软件名称或者是描述的关键字 list :列出目前yum所管理的所有的软件名称与版本,有点类似 rpm -qa info :同上,格式不太一样,不过有点类似 rpm -qai 的执行结果 查找jdk相关软件包 [root@root yum.repos.d]# yum search jdk查看beakerlib软件包功能 [root@root yum.repos.d]# yum info beakerlib列出 yum 服务器上面提供的所有软件的详细信息(20条)[root@root yum.repos.d]# yum info | head -20列出 yum 服务器上面提供的所有软件名称(100条)[root@root yum.repos.d]# yum list |head -100列出目前服务器上可供本机进行升级的软件有哪些 [root@root yum.repos.d]# yum list updates !!!列出目前服务器上xz.x86_64可更新版本[root@root yum.repos.d]# yum list updates|grep xz.x86_64

yum 安装/升级/卸载软件

yum [install | update | remove] 软件名 install :后面接要安装的软件 update :后面接要升级的软件,若要整个系统都升级,就直接update即可 remove:删除某个软件时,依赖于该软件并已经安装到系统中的 其它软件或者包,会被一并删除(rpm方式删除某个包时,如果依赖于该包的其它包之前也被安装到系统中,删除不会成功,需要先手动删除那些包. )在安装过程中有时会出现 需要输入y/n确认的情况 在确定的情况下 使用 yum [install | update | remove] -y 跳过所有的选择 , 默认为选择yes

四 、 yum进阶

yum服务器与客户端架构图

yum客户端运行机制

客户端每次使用yum调用install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的文件,这些配置文件指定了yum服务器的地址。yum会定期去“更新”yum服务器上的rpm “清单” ,然后把“清单”下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum/$basearch/$releasever下、即/var/cache/yum/x86_64/6),每次调用yum安装包的时候都会去这个cache目录下去找“清单”,根据“清单”里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,如果rpm包的cache不存在,就去yum服务器下载rpm包安装。

yum配置文件信息

[root@localhost soft]# cd /etc/yum.repos.d[root@root yum.repos.d]# cat CentOS-Base.repo[base]name=CentOS-$releasever - Basemirrorlist=/?release=$releasever&arch=$basearch&repo=os#baseurl=/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [base] :代表容器的名字,中括号是必须带的,里面名字可以自定义,但不能有两个相同的名字,否则yum找不到相关的软件列表 name:只是描述容器mirrorlist: “#”注释掉 baseurl:容器的固定地址 gpgcheck:gpg验证是否开启, 1是开启,0是不开启;“开启”会让yum检查每个下载的RPM的GnuPG签名。这么做是因为你需要适当的GnuPG key注册到您的RPM数据库。可以防止被欺骗,如:非法入侵发行版网站,木马导入软件包,使不知情用户下载 gpgkey:数字证书公钥文件所在位置

yum服务器端

所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式 都可以。yum服务器有一个最重要的环节就是整理出每个rpm 包的基本信息,包括rpm包对应的版本号,conf文件,binary 信息,以及很关键的依赖信息。在yum服务器上提供 了createrepo工具,用于把rpm包的基本概要信息做成一张"清 单",这张"清单"就是描述每个rpm包的spec文件中信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。