一、压缩和打包概念
压缩:
指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。
打包:
指将多个文件(或目录)合并成一个文件,方便传递或部署。
在Linux系统中,文件的后缀名不重要,但是针对于压缩文件的后缀名是必须的,因为可以让其他的程序员根据文件的后缀名使用对应的算法进行解压。
Linux常见的压缩文件后缀名:
*.gz
gzip程序压缩的文件
*.bz2
bzip2 程序压缩的文件
*.Z
compress(旧的加密算法,目前基本不用) 程序压缩的文件
*.tar
tar命令打包的数据,并没有压缩过
*.tar.gz
tar程序打包的文件,并且经过 gzip 的压缩
*.tar.bz2
tar程序打包的文件,并且经过 bzip2 的压缩
二、压缩、打包、解压命令
1、压缩命令:
gzip:
压缩/解压命令
-c :
将压缩的数据输出到标准输出(stdout)上
-d :
解压缩
-t :
可以用来检验一个压缩文件的一致性,看看文件有无错误
-v :
可以显示出原文件/压缩文件的压缩比等信息
-(1,2,...,9):
压缩等级,1最快,但是压缩比最差;9最慢,但是压缩比最好,默认是6。
-l :
查看压缩文件的压缩比: gzip –l *.gz
案例: cp /root/install.log /home/gzip gzip -c install.log //将压缩的数据输出到标准输出 gzip –v install.log //压缩完显示 这时发现源文件不在了,如果想保留源文件,可以用数据重导向技术 gzip -d install.log.gz //解压 gzip -c install.log > install.log.gz gzip -t install.log.gz //检查文件是否有误 gzip -c9v install.log //提高压缩比(文件如果本身很小可能体现不出来)
bzip2:
压缩/解压命令:
-c :
将压缩的过程产生的数据输出到标准输出(stdout)
-d :
解压缩的参数
-k :
保留源文件,而不会删除原始的文件
-f :
强制压缩
-v :
可以显示出原文件/压缩文件案的压缩比等信息;
-(1,2,...,9):
与gzip同样的,都是在计算压缩比的参数,-9最佳,-1最快
注意: gzip拥有更快的压缩性能。 bzip2拥有更高的压缩比。
单纯从压缩比方面来说,那么bzip2 > gzip > compress
2、打包命令:
tar:
可以将一个文件/夹打包成一个文件。可以结合gzip、bzip2的算法对包文件进行相应的压缩和解压。
语法:
压缩: tar [选项] newFileName.tar.gz sourceFileName
解压: tar [选项] fileName.tar.gz [-C /path]
-c :
建立打包文件,
-t :
查看打包文件的内容含有哪些文件
-x :
解打包或解压缩的功能,可以搭配-C(大写)在指定目录解开
-j :
通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2
-z :
通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz
-v :
在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:
-f 后面跟处理后文件的全名称(路径+文件名+后缀名)
-C 目录:
这个选项用在解压的时候,若要在特定目录解压,可以使用这个选项
注:使用命令进行打包、压缩的时候,使用了什么算法,文件后缀名就一定要与其对应。
案例: 压缩: 1、使用gzip的算法进行打包压缩。 # bash tar -zcvf install.log.tar.gz install.log 注意tar的语法,tar -zcvf newFile sourceFile 2、使用bzip2的算法进行打包压缩。 # bash tar -jcvf install.log.tar.bz2 install.log 3、如果想要压缩指定目录中的内容是,可以考虑使用绝对路径。 # bash tar -zcvf [path]/newFileName.tar.gz [path]/sourceFile
3、解压命令(案例):
1、将一个压缩包文件解压到当前目录下 # bash tar -zxvf install.log.tar.gz 执行完成之后,文件会在当前的目录下。 2、将一个压缩包文件解压到指定目录下 # bash tar -zxvf install.log.tar.gz -C / 3、只解压包中的某个文件 # bash tar -zxvf etc.tar.gz etc/shells 4、配置jdk环境变量: # bash tar -zxvf jdk-8u131-linux-x64.tar.gz cd jdk1.8.0_131 pwd # 复制路径 vim /etc/profile # profile文件是系统环境变量的配置文件 在该文件的最后一行添加内容: export JAVA_HOME=[path] export PATH=$JAVA_HOME/bin:$PATH 保存退出 source /etc/profile 使环境变量生效
三、软件安装管理rpm
最初只有.tar.gz的打包文件,用户必须编译每个他想在Linux上运行的软件。用户们普遍认为系统很有必要提供一种方法来管理这些安装在机器上的软件包,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为dpkg。稍后RedHat才决定开发自己的“rpm”包管理系统。
优点:
自带编译后的文件,免除用户对软件编译的过程
可以自动检测文件系统(硬盘)的容量、系统的版本。避免软件被错误的安装。
自带软件的版本信息、帮助文档、用途说明等信息。
缺点:
无论安装还是卸载,RPM都有一个恶心人的依赖关系。
安装的软件需要依赖,那么优先安装依赖。
卸载的软件存在依赖,那么优先卸载依赖。
默认路径:
/etc
一些配置文件放置的目录,例如/etc/crontab
/usr/bin
一些可执行文件
/usr/lib
一些程序使用的动态链接库
/usr/share/doc
一些基本的软件使用手册与说明文件
/usr/share/man
一些man page(Linux命令的随机帮助说明)文件
安装: 语法:rpm -ivh packageName.rpm
i
表示安装
v
表示处理过程
h
显示处理进度(进度条)
案例: 软件包在资料中提供: X:\课件V4.0提供的资料\rpm\ 安装软件: 单个安装: # bash rpm -ivh pack1.rpm 多个安装: # bash rpm -ivh pack1.rpm pack2.rpm *.rpm 安装网络上的RPM包 # bash rpm -ivh "https://网络地址/package.rpm"
查询:
rpm -[选项]
-q :
仅查询,后面接的软件名称是否有安装
-qa :
列出所有的,已经安装在本机Linux系统上面的所有软件名称 !!!
-RPqi :
列出该软件的详细信息,包含开发商、版本和说明等 !!
-ql :
列出该软件所有的文件与目录所在完整文件名 !!
-qc :
列出该软件的所有配置文件 !
-qd :
列出该软件的所有说明文件
-qR :
列出和该软件有关的相依软件所含的文件
-qf :
由后面接的文件名,找出该文件属于哪一个已安装的软件
案例1:查找是否安装jdk # rpm -qa |grep jdk 案例2:查找所有系统已经安装的包,并只查看前3个 # rpm -qa |head -n 3 案例3:查询lrzsz所包含的文件及目录 # rpm -ql lrzsz 案例4:查看lrzsz包的相关说明 # rpm -qi lrzsz 列出iptables的配置文件 # rpm -qc iptables 案例7:查看apr需要的依赖 # rpm -qR apr
卸载:
rpm -e package_Name # package_Name需要通过qa的选项来查询出来。
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系统上,则该软件不会被安装,只有已安装的软件才会被升级
四、软件安装管理yum
yum的由来,是因为rpm的缺点所导致,因为rpm无论安装还是卸载都需要解决依赖关系,并且比较繁琐,所以诞生yum的技术。
yum通过分析rpm的信息来进行软件的安装、升级、卸载。
优点:
可以一键解决rpm的依赖关系。
缺点:
yum的所有执行操作全都都需要repo文件(YUM源)。
使用yum安装软件,中招几率高达90%。
所有的yum源都存放在/etc/yum.repos.d/目录下。
工作环境中,一般都会屏蔽系统自带的yum源,而选择权威机构的yum源。
yum的查询:
search
查询某个软件名称或者是描述的关键字
list
列出目前yum所管理的所有的软件名称与版本,有点类似 rpm -qa
info
同上,格式不太一样,不过有点类似 rpm -qai 的执行结果
yum的安装:
yum install package_Name 案例: # bash yum install lrzsz 期间会提示y/N 输入y即可。
yum的卸载:
yum remove package_Name 案例: # bash yum remove lrzsz
yum的更新:
yum update package_Name yum安装、卸载、更新的过程中出现的y/N,可以通过在命令的结尾出 -y,表示全部过执行yes操作。
1.首先备份原来的cent os官方yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.获取阿里的yum源覆盖本地官方yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
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缓存,并生成新的缓存
yum clean all yum makecache
加入hadoop组件相关yum源
1,查看当前系统中yum支持的所有软件包中是否存在hadoop [root@tedu yum.repos.d]# yum list|grep hadoop #发现没有 2,如果想要当前系统的yum支持hadoop软件包,需要本地/etc/yum.repos.d下创建cloudera-cdh5.repo文件 http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh
五、rpm及yum的取舍
如果安装、卸载、更新的软件是单个独立的离线安装包,那么建议使用RPM的方式进行安装、卸载、更新。
如果安装一个软件时,发现此软件有众多的依赖环境,那么首选就是yum的方式进行处理。
例如: 安装一个jdk,那么首选rpm的方式。 安装tomcat的话就可以考虑使用yum。