云网牛站
所在位置:首页 > Linux培训 > Linux专业知识二:软件包管理,文件的归档和压缩

Linux专业知识二:软件包管理,文件的归档和压缩

2018-07-09 21:32:05作者:魏文应稿源:linux站

本篇文章讲解Linux专业知识:软件包管理、文件的归档和压缩。

 

第一部分:软件包管理

准备工作:

1.练习的过程中,需要一些rpm软件包,供你尝试,我们把一会它下载下来。

2.因为 bin-DVD1 类型的系统镜像,自带有一些rpm软件包的。

3.比如我用的系统镜像是 CentOS-6.9-i386-bin-DVD1.iso (如果是其它,比如CentOS-6.9-i386-LiveDVD.iso,是不带Package的)。

4.VMware挂载DVD镜像(选择CentOS-6.9-i386-bin-DVD1.iso 镜像的位置):

Linux专业知识二:软件包管理,文件的归档和压缩

5.点击确定以后,在虚拟机右下角的 DVD光盘图标 中,右键点击连接,linux中就能看到光盘了。

Linux专业知识二:软件包管理,文件的归档和压缩

6.使用 df -l 查看一下挂载点,默认挂载到了 /media/CentOS_6.9_Final/ 目录下:

Linux专业知识二:软件包管理,文件的归档和压缩

 

一、rpm软件包管理

RPM: Redhat Package Manager 的简称。

1.rpm包说明: 比如 zsh-5.0.2-14.el7.x86_64.rpm :

zsh

-5

0

2

14

el7

x86

64

软件名

主版本号

次版本号

修订号

软件发布次数

发行商RHEL7

CPU架构平台

支持系统位数

2.安装rpm软件:

参数

说明

-i, --install

安装软件包

--nodeps

不验证软件包依赖

-v, --verbose

提供更多的详细信息输出

-h, --hash

软件包安装的时候列出哈希标记

3.到rpm包相关的网站上去下载软件包:

http://rpmfind.net/

http://rpm.pbone.net/

http://www.rpmseek.com/index.html

4.rpm查询功能

rpm查询功能(rpm –q 常与下面参数组合使用):

参数

说明

-a

查询所有已安装的软件包

-f

查询文件所属软件包

-i

显示已经安装的rpm软件包信息

-l

和p搭配使用显示未安装软件包的相关文件列表和信息

查看某个软件是由哪个rpm包安装的: rpm -qf `vim` (查看vim是有哪个rpm包安装的)。

查看已经安装的rpm包生成了哪些文件:rpm -ql [rpm包名]

Linux专业知识二:软件包管理,文件的归档和压缩

查看一个未安装包的安装后将生成的文件: rpm -qpl [rpm包名]

Linux专业知识二:软件包管理,文件的归档和压缩

5.rpm软件包安装

软件包升级: rpm -Uvh [rpm包名] 。

6.rpm软件包卸载

rpm卸载: rpm -e [rpm包名] 。如果有依赖,导致无法卸载,可以使用 --nodeps 参数忽略依赖强制卸载。

7.rpm包签名验证

MD5哈希签名验证,可以防止别人修改软件包:

查看签名: rpm -K [软件包名] 例如:rpm -K httpd-2.2.15-60.el6.centos.6.i686 。

Linux专业知识二:软件包管理,文件的归档和压缩

导入密钥: rpm --import [密钥文件] 例如:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 (系统密钥默认保存在 /etc/pki/rpm-gpg/ 这个目录下)。

 

二、yum的使用

yum(Yellow dog Update, Modified)安装时,自动处理依赖关系。yum基于C/S架构。

1.yum源的位置

配置文件在: cd /etc/yum.repos.d/ :

Linux专业知识二:软件包管理,文件的归档和压缩

手工书写yum源配置文件:

# 源的名称,你随意起一个

[7-soucre]

# 描述信息,随意写一些说明

name=rhel7-server

# 源的位置,也就是rpm软件包的位置,file://说明是本地源,

# /media 是本地存放软件包的目录。

# baseurl=file:///media

baseurl=file:///media/CentOS_6.9_Final

# 启用yum源:1

# 关闭yum源:0

enabled=1

# 签名验证,为1检验公钥的正确性,0不检验

gpgcheck=0

2.使用本地yum源

删除原来的源码配置文件:将 cd /etc/yum.repos.d/ 目录下的 .repo 文件进行备份,然后清空这个目录下的文件(yum将该目录下所有.repo结尾的文件,识别为yum源配置文件)。

创建一个以 .repo 结尾的文件,比如:vim CentOS-Base.repo,然后写入手工配置文件的内容(注意修改挂载点)。

保存配置文件后,执行下面命令,清空一下yum缓存: yum clean all 。

重新生成列表: yum list 。

安装软件: yum install [软件名称] (如果安装过程中,软件有需要用户输入yes或者no进行的确认的步骤,如果你想全部选择yes,则加上 -y 参数 :yum install -y [软件名称])。

检测升级:yum check-update (本地yum源是不行的,远程网络才能升级)

查看软件信息: yum info [软件名称] 。

卸载软件: yum remove [软件名称] 。

按组来安装:就是一下子可以安装一组软件。查看一下有哪些rpm组包:yum grouplist 。安装某组软件:yum

3.使用远程yum源

远程yum源一般由开源镜像站提供,开源镜像站一般会提供一个配置文件,比如阿里镜像站:

http://mirrors.aliyun.com/repo/

或者网易镜像站:

http://mirrors.163.com/.help/

找到对应的 .repo 文件,下载放入 /etc/yum.conf.d/ 这个目录下就可以了。每一个 .repo 文件都配置了一个源,所以如果原来的 .repo 文件,你不想用了,将它从 /etc/yum.conf.d/ 这个目录删除就可以了。然后执行 yum clean all 和 yum makecache 更新一下就可以了。

 

三、源码编译安装软件包

解压源代码包。

进入解压后的目录,用 ./configure [--prefix=/usr/local/filname] 来配置,这个过程主要是收集系统信息、设置安装目录等(卸载的时候只需将这个目录删除则可)。

编译:make -j 4 。

安装:make install 。

1.源码方式安装nginx服务器:

需要 pcre-devel 、 zlib-devel 。查看一下这两个依赖包有没有:rpm -q pcre-devel zlib-devel 。如果没有安装就安装它: yum install -y pcre-devel zlib-devel 。

添加一个程序运行的系统用户: useradd -s /sbin/nologin -M nginx (-s指定shell,shell为/sbin/nologin,-M表示不生成宿主目录)。

解压准备好的压缩包 tar -zxvf nginx-1.0.15.tar.gz 。

解压完成上次一个 nginx-1.0.15 目录,进入这个目录。执行配置命令

# --prefix指定安装的位置

# --user  指定运行的用户

# --group 指定运行的组

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

如果这一步出错,提示没有安装gcc:

./configure: error: C compiler gcc is not found

则安装GCC编译器: yum install -y gcc 。再执行上面配置命令。如果你和我一样,使用了本地软件源,gcc可能因为版本问题,安装失败。可以先打开网络源,比如阿里源,安装gcc。

编译和编译安装:make -j4 && make install 。如果安装成功,会有 /usr/local/nginx/sbin/nginx 可执行程序。另外可以执行 netstat -anptu | grep nginx 命令查看nginx是否已经监听80端口。如果没有,启动nginx:/usr/local/nginx/sbin/nginx。

Linux专业知识二:软件包管理,文件的归档和压缩

然后用 ifconfig 命令查看一下你的ip地址,在浏览器中输入 [ip地址]:80 ,比如我的:192.168.154.133:80 。你会看到Welcome to nginx! 显示出来。

2.nginx 首页修改测试

打开任意一个网页,比如百度,通过浏览器查看网页源代码,将网页源代码复制到 /usr/local/nginx/html/index.xml 中(删除原来的内容)。然后通过浏览器,输入 [ip地址]:80 ,这时显示的就是百度首页了,而不是 Welcome to nginx! 。

Linux专业知识二:软件包管理,文件的归档和压缩

 

四、使用 | 管道命令

管道命令: | 。将前面命令的输出信息,最为后面命令的输入信息。比如,执行rpm -qa 这个命令时,终端会打印很多信息。如果将这些输出信息,作为grep命令的输入,grep命令通过这些输入字符,找到包含 httpd 字符的字符串。

Linux专业知识二:软件包管理,文件的归档和压缩

可以进行分页查看:打印信息太多时,追加上 | more 进行分页查看,例如 rpm -qa | more 。

 

附:Xshell与远程机器通信

rz命令: 在使用Xshell这个SSH工具登陆Linux时,如果想 向linux系统传文件,可以使用 rz 命令。使用这个工具,需要安装lrzsz这个工具包:yum -y install lrzsz。注意:在其它终端执行这个命令会使终端卡死。

 

第二部分:文件的归档和压缩

一、tar工具

tar工具可以进行压缩、打包文件。

语法:tar [参数] [生成的包的名称] [将要打包或解压的目标文件/目录]

参数和说明

-c:create 创建文件

-x:解压还原文件

-v:显示执行详细过程,解压过程打印一些信息

-f:指定备份文件

-t:列出备份文件内容

-P(大写):在使用绝对路径时,不移除文件名称前的根号

-C (大写):指定解压位置

-z:通过 gzip 进行压缩

-j:通过 bzip2 解压缩

 

二、创建归档

这里是将文件打包成一个文件,但还没有压缩。

1.打包一个文件:

# 将/boot/grub/目录下的内容打包

# 打包以后生成一个grub.tar文件

# -c 参数是创建包,-v参数显示压缩过程,f是指定文件。

tar -cvf grub.tar /boot/grub/

Linux专业知识二:软件包管理,文件的归档和压缩

如果你的文件想保留根/ ,那么你可以加上参数 -P (大写P):

tar -cvPf grub-1.tar /boot/grub/

把多个文件打成一个包:tar -cvf test.tar a.txt b.txt c.txt (将a.txt、b.txt、c.txt这三个文件成一个test.tar包)。

 

三、查看压缩包里面的内容

查看压缩包里面的内容(就像你在桌面直接双击一个压缩包文件一样,可以看到里面的文件列表,但没有解压开):

# 查看,并通过more分页显示

tar -tvf grub.tar | more

Linux专业知识二:软件包管理,文件的归档和压缩

 

四、Linux压缩工具

1.压缩工具: gzip、 bzip2、 zip、 tar。

参数

说明

一般文件后缀命名

压缩示例

解压示例

-z

通过gzip工具压缩

.tar.gz

tar -czvf test.tar.gz

tar -xzvf test.tar.gz

-j

通过bzip2工具压缩

.tar.bz2

tar -cjvf test.tar.gz

tar -xjvf test.tar.gz

--

通过zip工具压缩

.zip

zip test.zip /etc/passwd

unzip test.zip

2.常见的压缩格式:gz、 bz2、 xz、 zip、 Z 。

3.使用gzip工具压缩:tar -zcvf newfile.tar.gz SOURCE(-z参数表示压缩) 。

Linux专业知识二:软件包管理,文件的归档和压缩

4.使用bzip2工具压缩: tar -jcvf newfile.tar.bz2 SOURCE (-j参数表示压缩) 。

5.使用zip工具压缩(直接压缩,不像tar那样先归档后压缩): zip test.zip SOURCE 。如果是压缩的对象时目录,要使用 -r 参数 :zip -r test.zip /tmp/tmp-dir/(将/tmp/tmp-dir/这个目录下所有内容进行打包压缩):

Linux专业知识二:软件包管理,文件的归档和压缩

6.专门用于压缩的工具

有一些工具专门用于压缩(其实tar会调用它们):gzip、 bzip2、 xz。在文件使用tar打包以后,可以使用压缩工具进行压缩。这些工具只有压缩功能,没有打包功能。

注意:gzip、 bzip2、 xz这些工具只能对文件进行压缩,且压缩后源文件消失(其中 xz 命令可以加上-k 参数保留源文件)

7.gzip命令: 压缩:gzip [文件] 、解压: gzip -d [文件] 。

Linux专业知识二:软件包管理,文件的归档和压缩

8.bzip2命令: 压缩: bzip2 [文件] 、解压:bzip2 [文件]。

Linux专业知识二:软件包管理,文件的归档和压缩

9.xz命令: 压缩: xz [文件] 、 解压:xz -d [文件] 或者 unxz -d [文件]。

Linux专业知识二:软件包管理,文件的归档和压缩

 

五、解压

解压一个 普通包(没有经过压缩的): tar -xvf grub.tar (把grub.tar这个文件解压开)。

解压到 指定目录: tar -xvf grub.tar -C /tmp(-C参数,解压到了/tmp/这个目录下)。

解压一个经 gzip工具压缩 的文件:tar -xzvf test.tar.gz 。

解压一个经过 bzip2工具压缩 的文件:tar -xjvf test.tar.bz2 。

解压一个经过 zip工具压缩 的文件:unzip test.zip (-d参数解压以后的目录:unzip test.zip -d /tmp/)。

 

六、确定文件类型

使用 file 命令确定文件类型(常见返回结果):

返回结果和说明

empty:空文件

directory :目录文件

English text:英文正式文件

assembler program text :汇编语言程序的正文文件

ascii text:ASCII编码的文本文件

command text:命令语言编写的命令正文程序

c program:C语言正文程序

relocation text:用于连接的目标文件

executable:可执行的目标代码文件

data:数据文件

 

七、查看文件大小

查看具体某个文件的大小:du -sh test.tar

ll -h test.tar

列出当前文件夹下使用文件,并显示大小:du -sh * :

Linux专业知识二:软件包管理,文件的归档和压缩

 

八、参数列表

ZIP参数列表:

zip Linux上适用的参数:

-1 : 最快压缩,压缩率最差。

-9 : 最大压缩,压缩率最佳。

-b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。

-c : 替新增或更新的文件增加一行注解。

-d : 从 zip 文件移出一个文件。

-D : 不要在 zip 文件中储存文件的目录信息。

-f : 以新文件取代现有文件。

-F : 修复已经损毁的压缩文件。

-g : 将文件压缩附加到 zip 文件中。

-h : 显示辅助说明。

-i : 指定要含入的某些特定文件。

-j : 只储存文件的名称,不含目录。

-k : 强迫使用 MSDOS 格式文件名。

-l : 将 CR ( Carriage Return ) LF ( Line Feed ) 转换成 LF,一般是要将 MS-DOS 上的文本文件压缩后拿到 UNIX 下使用时才使用此参数。这只适用于文本文件 ( .txt ),如果用于二进制文件则会造成二进制文件损毁。

-L : 显示 zip 命令的版权。

-m : 将特定文件移入 zip 文件中,并且删除特定文件。

-n : 不压缩特定扩展名的文件。

-o : 将 zip 文件的时间设成最后修正 zip 文件的时间。

-q : 安静模式,不会显示相关讯息和提示。

-r : 包括子目录。

-t : 只处理 mmddyy 日期以后的文件。

-T : 测试 zip 文件是否正常。

-u : 只更新改变过的文件和新文件。

-v : 显示版本资讯或详细讯息。

-x : 不需要压缩的文件。

-y : 将 symbolic link 压缩,而不是压缩所连结到的文件。

-z : 为 zip 文件增加注解。

-# : 设定压缩速度,-0 表示不压缩,-1 表示最快速度的压缩,

-9 :表示最慢速度的压缩 ( 最佳化的压缩 ),预设值为 -6。

-@ : 从标准输入读取文件名称。

 

相关主题

文件压缩与解压_Linux常用命令大全

精选文章
热门文章