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文件中信息。
上一篇:Linux基础之vim
下一篇: