Linux软件包管理 rpm与yum

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

一、 文件的打包 与压缩

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

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

    compress压缩效率低下,压缩比也较差,几乎已经不再使用
    gzip 与 bzip2 gzip比bzip2性能好,但bzip2可以获得更高压缩比。
    tar可以将很多文件打包成为一个文件
    
  6. gzip命令: 可以解压compress 、 zip 、 gzip等算法压缩的文件

    1. 选项与参数

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

      压缩
      命令 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
      
  7. zcat查看压缩文件的内容

    1. cat可以读取纯文本文件,那么zcat则可以读取纯文本文件被压缩后的压缩文件
    2. 示例

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

    1. gzip 是为了取代 compress 并提供更好的压缩比,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。
    2. 选项与参数

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

      压缩
      [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 #不删源文件
      
  9. compress、uncompress(仅做了解,目前已不用,当前系统内核已不提供该命令)

    1. 选项与参数

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

    1. 选项与参数

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

  1. 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.rpm
    hadoop-yarn-2.5.0xx.rpm
    
  2. RPM的优点

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

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

    1. rpm -ivh package_name
    2. 选项与参数

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

      使用wget http://rpmfind.net/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 查看是否安装成功
      这里并不是自动为我们配置了环境变量   具体看这里http://blog.csdn.net/qq_31246691/article/details/79331355
      但是有些特定的场合下是需要java的环境变量的 , 最好还是自己也配置一遍:
      [root@root ~]# vim /etc/profile
      加入内容如下:export JAVA_HOME=/usr/java/jdk1.8.0_111
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      export PATH=$JAVA_HOME/bin:$PATH
      [root@root ~]# source /etc/profile
      [root@root ~]# java -version
      java version “1.8.0_111 “
      
  5. 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 installed
    rpm -Fvh <pacakge_name>
    -Fvh如果后面接的软件并未安装到Linux系统上,则该软件不会被安装,只有已安装的软件才会被升级
    
  6. rpm查询

    1. 简单原理:

      简单原理: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
      
    2. rpm查询已安装软件

      1. 选项与参数

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

    -V :后面加软件名称,若该软件安装之后被改动过,会列出被修改过的 文件。!!
    -Va :列出目前系统上面rpm安装的所有包中被修改过的文件。!
    -Vp :后面加的是rpm文件名,列出rpm包中的文件在当前系统中是否修改。
    -Vf :列出某个文件(直接列出软件包安装之后的文件名)是否被改动过。!!
    
  8. 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安装 、 删除 、 更新软件

  1. 为什么要有yum?

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

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

    yum是通过分析RPM的标头资料后,根据各软件的相关性制作出属 性相依时的解决方案,然后可以自动处理软件的依赖问题,以解决软 件安装、移除、升级中遇到的繁琐操作的问题
    
    1. 基本配置 /etc/yum.repos.d
  3. 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
    
  4. yum 安装/升级/卸载软件

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

四 、 yum进阶

  1. yum服务器与客户端架构图
  2. 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包安装。
    
  3. yum配置文件信息

    [root@localhost soft]# cd /etc/yum.repos.d
    [root@root yum.repos.d]# cat CentOS-Base.repo
    [base]
    name=CentOS-$releasever - Base
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=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:数字证书公钥文件所在位置
    
  4. yum服务器端

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

Linux_09 Linux软件包管理 rpm与yum相关推荐

  1. Linux软件包管理-rpm、yum

    Linux软件包管理 软件包是什么?软件包顾名思义就是将应用程序.配置文件和数据打包的产物. 所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便, ...

  2. Linux软件包管理— rpm软件包查询

    之前我们说的rpm软件包的安装和卸载,都可以使用yum命令来代替,但是rpm软件包的查询,yum命令是代替不了的. 注意: 这不是说yum没有查询命令,只是yum查询命令和rpm软件包的查询命令,所查 ...

  3. Linux 软件包管理常用命令 -- yum

    yum Yellow dog Updater Modified, 是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. install yum install # 全部安装 ...

  4. linux软件包管理-rpm

    1.程序包管理 功能:将编译好的应用程序的各组件组成文件打包成一个或几个程序包文件,从而更方便快捷实现程序包的安装升级,卸载和查询等管理操作 1 程序包的组成清单(每个程序包都单独实现) 文件清单 安 ...

  5. 07 Linux软件包管理

    Linux软件包管理 rpm软件包管理 Yum软件包管理 Dnf软件包管理 源码编译安装 准备工作 挂载iso镜像 将光驱挂载到系统中 [root@myserver dev]# mount /dev/ ...

  6. linux软件包管理之rpm 、yum基本使用

    linux软件包管理之rpm .yum基本使用 一.RPM RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是 ...

  7. 大数据与云计算学习计划 (一) 云计算系统管理 6 Linux中RPM软件包管理操作 、 Yum软件包仓库操作(概念与实操)

    大数据与云计算学习计划 (一) 云计算系统管理 6 Linux中RPM软件包管理操作 . Yum软件包仓库操作(概念与实操) 一.RPM软件包管理 1.常见软件包类型 2.RPM包文件名特征 3.RP ...

  8. 软件包管理 rpm yum apt-get dpkg

    软件包管理 rpm yum apt-get dpkg 标签: debdebian工具linuxubuntulotus 2012-03-28 10:17 3410人阅读 评论(0) 收藏 举报  分类: ...

  9. 【Linux基础】Linux软件包管理器yum的使用指南rzsz安装

    [Linux基础]Linux软件包管理器yum的使用指南|rzsz安装 前言 主页: 潮.eth的博客_CSDN博客-C学习,C++学习,数据结构and算法领域博主 Linux基础专栏: Linux基 ...

最新文章

  1. Android应用工程文件组成
  2. Linux 网络编程—— libpcap 详解
  3. 中国城市商业银行产业模式展望及布局规模前景分析报告2021-2027年
  4. 如何防止同一账号多次登录
  5. Ucenter社区服务搭建
  6. 英特尔回应杨笠代言争议;天弘基金称已处理在支付宝上「无故扣款」问题;Eclipse 4.19 发布 | 极客头条...
  7. phpstrom 设置svn提交的代码同步到服务器
  8. mysql python用法_python-mysql基本用法
  9. Java开源框架 iBase4J 搭建笔记
  10. 绿色奖学金申请答辩PPT模板
  11. 车间和仓库可以一起吗_为什么厂房和仓库不能混用?
  12. 宝元系统通讯软件recon_企业即时通讯系统拥有哪些二次开发能力?
  13. git使用报错:fatal: Couldn‘t find remote ref master的解决方法
  14. 保姆级教学——Python+Pygame怎么实现吃豆豆游戏
  15. STM32单片机烧录失败汇总
  16. 基于离散小波变换 (DWT)的图像信息隐藏算法
  17. Gradle 2.0 用户指南翻译——第五十章. 依赖管理
  18. Android界面布局练习
  19. [Violet]蒲公英(分块)
  20. 微吼2022企业直播创见大会:探寻直播行业星辰大海

热门文章

  1. Swift3.0温习之基础篇
  2. object-c编程tips-timer
  3. [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding
  4. N!-201308071627.txt
  5. 【转载自codeproject】Another Look At IDisposable
  6. 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
  7. C语言中的数据类型在VB中的申明
  8. python的应用范围有哪些_Python主要应用场景有哪些?
  9. docker编译Linux内核,c – 如何编译在docker中使用内核函数的C代...
  10. java snmp walk_snmpwalk用法