专栏首页星汉技术Linux基础之软件包管理 原

Linux基础之软件包管理 原

一、文件压缩与打包

1、概念

压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。 

打包:指将多个文件(或目录)合并成一个文件,方便传递或部署。

压缩文件或打包文件常见的扩展名:*.tar、*.tar.gz、*.gz、*.bz2 、*.tar.bz2、*.Z(仅做知识扩展);linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。

2、常见文件扩展名

*.gz:gzip程序压缩的文件。

*.bz2:bzip2程序压缩的文件。

*.Z:compress(旧的加密算法,目前基本不用) 程序压缩的文件。

*.tar:tar命令打包的数据,并没有压缩过。

*.tar.gz:tar程序打包的文件,并且经过gzip的压缩。

*.tar.bz2:tar程序打包的文件,并且经过bzip2的压缩。

3、常见的压缩/打包指令

gzip比bzip2性能好,但bzip2可以获得更高压缩比。 tar可以将很多文件打包成为一个文件。

1.gzip

gzip命令(应用广泛):可以解开compress、zip与gzip等软件所压缩的文件。

命令格式:

gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...]
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]

选项与参数:

-c:将压缩的数据输出到标准输出(stdout)上。

-d:解压缩。

-t:可以用来检验一个压缩文件的一致性,看看文件有无错误。

-v:可以显示出原文件/压缩文件的压缩比等信息。

-(1,2,...,9):压缩等级,1最快,但是压缩比最差;9最慢,但是压缩比最好,默认是6。 

-l:查看压缩文件的压缩比:gzip -l *.gz

示例1:

用gzip压缩。

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /root/install.log . #“.”当前目录
[root@localhost tmp]#gzip –v install.log (如果不加-v的话就是直接压缩)
install.log:    76.8% -- replaced with install.log.gz

注意:源文件被压缩后,自动在源文件名后追加”.gz”,源文件将不再存在。

解压gz的压缩文件。

[root@xinghan tmp]#gzip –d install.log.gz

注意:源文件被解压后,自动将源文件名后的”.gz”删掉,源文件将不再存在。

示例2:

1.在/tmp文件夹下创建/part1/gzip 2.将/root/anaconda-ks.cfg文件拷贝到/tmp/part1/gzip 3.将拷贝后的文件进行gzip压缩,并显示压缩信息。 4.将压缩后文件的名称改为mygzip01.gz

[root@xinghan tmp]# gzip -c install.log >install.log.gz
[root@xinghan tmp]# ll |grep install
-rw-r--r--. 1 root root 41364 Nov 28 05:10 install.log
-rw-r--r--. 1 root root  9626 Nov 28 05:27 install.log.gz

zcat查看压缩文件内容

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

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

2.bzip2命令

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

选项与参数

同gzip用法很类似,选项与参数如下:

-c:将压缩的过程产生的数据输出到标准输出(stdout)。

-d:解压缩的参数。

-k:保留源文件,而不会删除原始的文件。

-f:强制压缩。

-z:压缩的参数(有无均可)。

-v:可以显示出原文件/压缩文件案的压缩比等信息。

-(1,2,...,9):与gzip同样的,都是在计算压缩比的参数,-9最佳,-1最快。

示例:

压缩:

[root@xinghan tmp]# bzip2 -z install.log #删除源文件
[root@xinghan tmp]# ls install*
install.log.bz2
[root@xinghan tmp]# bzip2 -zk install.log#保留源文件

解压:

[root@xinghan tmp]# bzip2 -d install.log.bz2 #删除源文件
[root@xinghan tmp]# bzip2 -dk install.log.bz2 #不删源文件

用bzip2最佳压缩比压缩install.log,显示压缩信息,并保留源文件。

[root@xinghan tmp]#bzip2 -9cv install.log > install9c.log.bz2
install.log:  5.084:1,  1.574 bits/byte, 80.33% saved, 41364 in, 8136 out
[root@xinghan tmp]#bzip2 -9zvk install.log

3.compress、uncoppress

compress压缩效率低下,压缩比也较差,几乎已经不再使用。

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

-r :可以连同目录下的文件也同时给予压缩。

-c :将压缩数据输出成为standard output。

-v :可以列出压缩后的文件信息以及压缩过程中的一些文件名变化。

4.tar

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常用的指令组

1)打包与压缩

tar -zcv -f [/路径/]filename.tar.gz 被压缩的文件或目录。

tar -jcv -f [/路径/] filename.tar.bz2 被压缩的文件或目录。

示例:

tar -zcvf /tmp/part1/tar/etc01.tar.gz /etc
tar -jcvf /tmp/part1/tar/etc02tar.bz2 /etc

2)查询

tar -ztv -f [/路径/] filename.tar.gz

tar -jtv -f [/路径/] filename.tar.bz2

3)备份

tar -zpcv -f [/路径/]filename.tar.gz 被备份文件或目录

tar -jpcv -f [/路径/]filename.tar.bz2 被备份文件或目录

4)解压到当前目录

tar -jxv -f [/路径/] filename.tar.bz2

tar -zxv -f [/路径/] filename.tar.gz

5)解压到指定目录

tar -jxv -f [/路径/] filename.tar.bz2 -C  指定目录

tar -zxv -f [/路径/] filename.tar.gz -C 指定目录

注意:filename前带路径表示此路径下的filename文件,如果没有表示当前目录下filename文件。

该路径表示的就是我们写入的路径,如果不写路径的话表示在当前路径下。

示例1:

tar -zxvf /home/software/filename.tar.gz

上述中的例子,表示我们要解压的文件在/home/software/路径下。(使用了绝对路径)

举例2:

tar -zxvf filename.tar.gz

上述中的例子,表示我们要解压的文件在当前所处的目中。(使用了相对路径)

示例:

#1.将/etc压缩到/tmp/下etc01.tar.gz
#方式一:filename.tar.gz前不带路径
[root@hadoop1 ~]# cd /tmp/
[root@hadoop1 tmp]# tar -zcvf etc01.tar.gz /etc/
#方式二:filename.tar.gz前带路径,推荐新手使用。
[root@hadoop1 ~]# tar -zcvf /tmp/etc01.tar.gz  /etc
#2.将/tmp/下etc01.tar.gz解压到/tmp/目录下
[root@hadoop1 ~]# cd /tmp/  #首先进入对应目录
[root@hadoop1 tmp]# tar -zxvf etc01.tar.gz 
#3.将/tmp/下etc01.tar.gz解压到/usr/目录下
[root@hadoop1 tmp]# tar -zxvf etc01.tar.gz -C /usr
#或者
[root@hadoop1 tmp]# tar -zxvC /usr -f etc01.tar.gz

6)解压单独文件 仅解压压缩包中的某一个文件,如解压包中shells文件。

1、查询shells文件在压缩包中是否存在。

    tar -ztv -f [/路径/]filename.tar.gz|grep ‘shells’

[root@xinghan ~]# tar -ztv -f /tmp/etc01.tar.gz |grep 'shells’
#或
[root@xinghan tmp]# tar -ztv -f etc01.tar.gz |grep 'shells'

2、仅解压出shells文件。

[root@xinghan 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:显示指令执行过程。即进度条。

示例:

#安装单个rpm包。
rpm -ivh package_name 
#安装多个rpm包。每个包之间以空格隔开。
rpm -ivh a.i386.rpm b.i386.rpm *.rpm 
#安装网上某个位置rpm包。
rpm -ivh http://website.name/path/pkgname.rpm

3.演示安装jdk

将jdk-8u111-linux-x64.rpm从本机拷贝到虚拟机中。

rz:从本机到虚拟机;sz从linux虚拟机到本机。

[root@xinghan ~]# rz
-bash: rz: command not found

这是因为当前虚拟机没有安装lrzsz程序,所以我们需要先安装该程序才可使用rz和sz命令。首先使用可视化界面用root登录进入,浏览器访问http://rpmfind.net/linux/rpm2html/search.php?query=lrzsz,下载lrzsz-0.12.21-15.x86_64.rpm 或者通过wget进行下载: http://rpmfind.net/linux/Mandriva/official/2011/x86_64/media/main/release/lrzsz-0.12.21-15-mdv2011.0.x86_64.rpm

[root@xinghan ~]# mkdir /usr/soft #以后安装软件都放在该目录下
[root@xinghan ~]# cp /root/下载/lrzsz-0.12.20-22.1.x86_64.rpm /usr/soft/
[root@xinghan ~]# ls /usr/soft/
lrzsz-0.12.20-22.1.x86_64.rpm
[root@xinghan ~]# rpm -ivh /usr/soft/lrzsz-0.12.20-22.1.x86_64.rpm
[root@xinghan soft]#rz  #弹出窗口,选择jdk-*-x64.rpm,默认放到当前目录下

安装jdk-8u111-linux-x64.rpm。

[root@xinghan soft]# rpm -ivh jdk-8u111-linux-x64.rpm

备份系统环境变量文件

[root@xinghan ~]# cp /etc/profile /home/

编辑系统环境变量 

rpm -qa |grep jdk
rpm -ql jdk1.8.0_111-1.8.0_111-fcs.x86
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@xinghan ~]# source /etc/profile
[root@xinghan ~]# java -version 
java version “1.8.0_111” 

5、RPM升级与更新

1.命令格式

rpm -Uvh <package_name>

rpm -Fvh <pacakge_name>

-Uvh后面接的软件如果没有安装过,系统会直接安装,若后面接的软件安装过,但版本较旧,则更新至新版。

[root@xinghan 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

-Fvh如果后面接的软件并未安装到Linux系统上,则该软件不会被安装,只有已安装的软件才会被升级。

6、RPM查询

简单原理:rpm在查询的时候,其实查询的地方是在/var/lib/rpm/ 这个目录下的数据库文件。如下:

[root@xinghan ~]# 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

1.命令格式

查询某个RPM文件内含有的信息:

rpm -qp[icdlR] 应用名称

查询rpm包中的信息。

注意-qp后面接的所有参数与上面的说明一致。但用途仅在于找出某个RPM文件内的信息,而非已安装的软件信息。

2.选项与参数

rpm查询已安装软件,选项与参数:

-q:仅查询后面接的软件名称是否已安装。 

-qa:列出所有已经安装在本机Linux系统上面的软件名称!!!

-qi:列出该软件的详细信息,包含开发商、版本和说明等!

-ql:列出该软件所有的文件与目录所在完整文件名!!

-qc:列出该软件的所有配置文件!

-qd:列出该软件的所有说明文件。

-qR:列出该软件所依赖的软件所含的文件。

-qf:由后面接的文件名,找出该文件属于哪一个已安装的软件。

3.案例

①查找是否安装jdk

[root@xinghan ~]# rpm -qa |grep jdk
jdk1.8.0_111-1.8.0_111-fcs.x86_64

②查找所有系统已经安装的包,并只查看前3个

[root@xinghan ~]# rpm -qa |head  -n 3
gvfs-gphoto2-1.4.3-15.el6.x86_64
hicolor-icon-theme-0.11-1.1.el6.noarch
libopenraw-gnome-0.0.5-4.1.el6.x86_64

③查询lrzsz所包含的文件及目录

[root@xinghan ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

④查看apr所包含的文件及目录

[root@xinghan ~]# rpm -ql apr
/usr/lib64/libapr-1.so.0
/usr/lib64/libapr-1.so.0.3.9
/usr/share/doc/apr-1.3.9
/usr/share/doc/apr-1.3.9/CHANGES
/usr/share/doc/apr-1.3.9/LICENSE
/usr/share/doc/apr-1.3.9/NOTICE

⑤查看lrzsz包的相关说明

[root@xinghan ~]# rpm -qi lrzsz
Name        : lrzsz                        Relocations: (not relocatable)
Version     : 0.12.20                           Vendor: CentOS
Release     : 22.1                          Build Date: 2007年01月06日 星期六 21时04分33秒
Install Date: 2016年11月29日 星期二 07时56分17秒      Build Host: builder

如何查询刚刚安装jdk的相关信息?

[root@xinghan soft]# rpm -qa |grep jdk
jdk1.8.0_111-1.8.0_111-fcs.x86_64
[root@xinghan soft]# rpm -qi jdk1.8.0_111-1.8.0_111-fcs.x86_64

⑥查看apr包的相关说明

列出jdk1.8.0_111的配置文件(无显示说明不需要配置文件)

[root@localhost ~]# rpm -qc jdk1.8.0_111 
[root@localhost ~]# rpm –qc apr #不需要配置

列出iptables的配置文件

[root@localhost ~]# rpm -qc iptables 
/etc/sysconfig/iptables-config 

列出apr的说明文件

[root@localhost ~]# rpm -qd apr 
/usr/share/doc/apr-1.3.9/CHANGES 
/usr/share/doc/apr-1.3.9/LICENSE 
/usr/share/doc/apr-1.3.9/NOTICE. 

⑦查看apr需要的依赖

[root@xinghan ~]# rpm -qR apr
/sbin/ldconfig  
/sbin/ldconfig  
libapr-1.so.0()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.10)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit) 

7、rpm检查

1.命令格式

rpm [参数] [应用名称]

2.选项和参数

-V:后面加软件名称,若该软件安装之后被改动过,会列出被修改过的文件!!

-Va:列出目前系统上面rpm安装的所有包中被修改过的文件!

-Vp:后面加的是rpm文件名,列出rpm包中的文件在当前系统中是否修改。

-Vf:列出某个文件(直接列出软件包安装之后的文件名)是否被改动过!!

示例:

列出lrzsz这个软件被改动过的文件。

[root@xinghan ~]# rpm -V lrzsz

没有被修改的文件显示,说明该软件没有文件被改动过

查询/etc/crontab是否被改动过。

[root@xinghan ~]# rpm -Vf /etc/crontab

没有信息显示说明没有被改动过,如果被改动过,会显示被改动的信息。

8、rpm卸载

-e:卸载软件。

找出与apr有关的软件名称,并尝试移除apr这个软件。

[root@xinghan ~]# rpm -qa | grep apr 
apr-1.3.9-5.el6_2.x86_64 
[root@xinghan ~]# rpm -e apr 
[root@xinghan ~]# rpm -qa | grep apr 

三、yum

1、简介

1.为什么要有yum?

rpm头疼的依赖关系(例如安装某个游戏时)。当安装一个rpm包时,发现它依赖于其它的rpm包,只能先去下载及安装这个依赖包。当这样的依赖关系非常复杂时,一个个rpm安装对于大数据工程师来说,安装这件事演变成一个灾难。

卸载,也一样!删除某个rpm包时,如果有其它的rpm依赖于它,也得先删掉他们。如果有一个集中的地方管理多如牛毛的rpm,简化“下载+解决依赖问题+安装”这样的繁琐步骤,该多好啊?

2.yum

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

2、yum查询参数

search:查询某个软件名称或者是描述的关键字。

list:列出目前yum所管理的所有的软件名称与版本,有点类似rpm -qa。

info:同上,格式不太一样,不过有点类似rpm -qai的执行结果。

示例:

查找jdk相关软件包 
[root@xinghan yum.repos.d]# yum search jdk
查看beakerlib软件包功能 
[root@xinghan  yum.repos.d]# yum info beakerlib
列出 yum 服务器上面提供的所有软件的详细信息(20条)
[root@xinghan yum.repos.d]# yum info | head -20
列出 yum 服务器上面提供的所有软件名称(100条)
[root@xinghan yum.repos.d]# yum list |head -100
列出目前服务器上可供本机进行升级的软件有哪些 
[root@xinghan yum.repos.d]# yum list updates !!!
列出目前服务器上xz.x86_64可更新版本
[root@xinghan yum.repos.d]# yum list updates|grep xz.x86_64

3、yum安装、升级、卸载软件

1.命令格式

yum [install | update | remove] 软件名

2.选项参数

install:后面接要安装的软件。

update:后面接要升级的软件,若要整个系统都升级,就直接update即可。

remove:删除某个软件时,依赖于该软件并已经安装到系统中的其它软件或者包,会被一并删除(rpm方式删除某个包时,如果依赖于该包的其它包之前也被安装到系统中,删除

不会成功,需要先手动删除那些包)。

示例: 安装common-lisp-controller.noarch

[root@xinghan ~]# yum install common-lisp-controller.noarch
Dependencies Resolved
============================================== 
Package              Arch      Version           Repository   Size
==============================================
Installing:
 common-lisp-controller   noarch     7.4-2.el6           epel        20 k
Installing for dependencies:
 cl-asdf               noarch       20101028-1.el6      epel        88 k
Transaction Summary
==============================================
Install       2 Package(s)   Total download size: 108 k   Installed size: 427 k
Is this ok [y/N]:y
Downloading Packages:
      (1/2): cl-asdf-20101028-1.el6.noarch.rpm                     |  88 kB 00:00
      (2/2): common-lisp-controller-7.4-2.el6.noarch.rpm            |  20 kB 00:00
       Installed:  common-lisp-controller.noarch 0:7.4-2.el6
       Dependency Installed:  cl-asdf.noarch 0:20101028-1.el6
       Complete!

删除cl-asdf

[root@xinghan ~]# yum remove cl-asdf
Dependencies Resolved
==============================================================
 Package               Arch         Version            Repository   Size
==============================================================
Removing:
 cl-asdf                noarch       20101028-1.el6        @epel   401 k
Removing for dependencies:
 common-lisp-controller  noarch       7.4-2.el6             @epel   26 k
Transaction Summary
=============================================================
Remove        2 Package(s)  Installed size: 427 k
Is this ok [y/N]: y
Downloading Packages:  Running rpm_check_debug   Running Transaction Test
Transaction Test Succeeded   Running Transaction
  Erasing:common-lisp-controller-7.4-2.el6.noarch                   1/2 
  Erasing:cl-asdf-20101028-1.el6.noarch                            2/2 
  Verifying:cl-asdf-20101028-1.el6.noarch                          1/2 
  Verifying:common-lisp-controller-7.4-2.el6.noarch                  2/2 
Removed:  cl-asdf.noarch 0:20101028-1.el6    Dependency Removed:common-lisp-controller.noarch 0:7.4-2.el6                Complete!

升级xz.x86_64

[root@xinghan ~]# yum  update xz.x86_64
Dependencies Resolved
===================================================================== Package            Arch      Version                      Repository  Size
=====================================================================Updating:
 xz               x86_64  4.999.9-0.5.beta.20091007git.el6   base    137 k
Updating for dependencies:
 xz-libs           x86_64  4.999.9-0.5.beta.20091007git.el6    base    89 k
 xz-lzma-compat   x86_64  4.999.9-0.5.beta.20091007git.el6    base    16 k
Transaction Summary
=====================================================================Upgrade       3 Package(s)  Total download size: 242 k  Is this ok [y/N]: y
Downloading Packages:
(1/3): xz-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm       | 137 kB     00:00
(2/3): xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm    | 89 kB     00:00
(3/3): xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm | 16 kB 00:00
-------------------------------------------------------------------------------------------------------
     Total                                                           423 kB/s | 242 kB     00:00    
Updated:  xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6                   
Dependency Updated:  xz-libs.x86_64 0:4.999.9-0.5.beta.20091007git.el6   
  xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6      Complete!

4、yun进阶

yum服务器与客户端架构图:

1.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包安装。 

2.yum repo配置文件信息

[root@xinghan soft]# cd /etc/yum.repos.d
[root@xinghan 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:数字证书公钥文件所在位置。

3.yum支持hodoop分布式

如何让yum支持hadoop分布式软件安装?(仅作了解,建议手动配置,第一是学习,第二是将来的面试会有人问集群的搭建步骤和集群的配置文件。)

1、查看当前系统中yum支持的所有软件包中是否存在hadoop。

[root@xinghan yum.repos.d]# yum list|grep hadoop  #发现没有

2、如果想要当前系统的yum支持hadoop软件包,需要本地/etc/yum.repos.d下创建cloudera-cdh5.repo文件,保存hadoop对应的repo配置,而具体的配置信息可使用:http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo

3、再次查看。

[root@xinghan yum.repos.d]# yum list|grep hadoop #发现显示很多hadoop相关的包

注:http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5/RPMS/

noarch:    这个版本对系统没有要求。

x86_64/:需要64位操作系统。点击进入x86_64/可以看到很多与hadoop相关的rpm包。

4.yum服务器端

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux基础之权限 原

    chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]

    云飞扬
  • Linux基础之系统资源监控与任务管理 原

    -b:直接输入free时,显示的单位是bytes,我们可以使用b(bytes)、m(Mbytes)、k(Kbytes) 及g(Gbytes)来定义显示单位。部分...

    云飞扬
  • CDH5之启用邮箱警报 原

    在使用CDH5的时候,各种警报信息,需要及时知道,CDH5平台自带了邮箱预警功能,此邮箱预警功能,可以使用CDH5平台自带的邮箱,也可配置自定义的邮箱,下面一一...

    云飞扬
  • 加载远程图片

    根据默认图片的大小和位置,显示远程图片,只需要把组件挂载在Sprite上,需要更新的时候,调用以下方法即可。

    一枚小工
  • 使用Python从rds上下载mysql

    用户2398817
  • 如何独立开发一个网络请求框架

    (原创出处:https://cloud.tencent.com/developer/user/1148436/activities) 目录: 前言   准备...

    林冠宏-指尖下的幽灵
  • 如何独立开发一个网络请求框架

    林冠宏-指尖下的幽灵
  • Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的...

    Java_老男孩
  • iOS设置拍照retake和use按钮为中文简体

    iOS设置拍照retake和use按钮为中文简体,设置有两种方式一个是代码直接控制,第二就是xcode配置本机国际化为“china”(简体中文)。 本文重点要说...

    Java中文社群_老王
  • window常用命令(持续更新)

    1、netstat -ano 查看端口占用情况 可以根据PID到任务管理器中找到对应的进程

    程序员一一涤生

扫码关注云+社区

领取腾讯云代金券