第六讲 - linux软件包管理

更新时间:2023-12-25 19:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第六讲 linux软件包管理

一、使用 RPM 来管理软件包

RPM 软件包管理器(RPM)是开放打包系统,任何人都可以使用。它在 Red Hat Linux,以及其它 Linux 和 UNIX 系统上运行。Red Hat, Inc. 鼓励其它销售商在他们自己的产品上使用 RPM 技术。RPM 按照 GPL 条款被发行。

对于终端用户来说,RPM 简化了系统更新。安装、删除安装、升级 RPM 软件包可以使用简短的命令就可完成。RPM 维护一个已安装软件包和它们的文件的数据库,因此,你可以在系统上使用功能强大的查询和校验。

在升级中,RPM 处理配置文件时非常谨慎,因此你决不会丢失你定制的配置 — 这是你用普通的 .tar.gz 文件所无法达到的。

对于开发者来说,RPM允许你把软件编码和程序打包,然后提供给终端用户。这个进程非常简单,它能从你创建的单个文件或补丁中驱动。这种对你的“纯净”源码、补丁和建构指令的清晰描述减轻了发行软件新版本所带来的维护负担。

安装

RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。其中包括软件包的名称(foo), 版本号(1.0), 发行号(1), 和硬件平台(i386). 安装一个软件包只需简单的键入以下命令:

#rpm -ivh foo-1.0-1.i386.rpm

如果您要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:

# rpm -ivh foo-1.0-1.i386.rpm

foo /usr/bin/foo conflicts with file from bar-1.0-1 error: foo-1.0-1.i386.rpm cannot be installed

要想让RPM 忽略该错误信息, 请使用--replacefiles 命令行选项。

RPM软件包可能依赖于其它软件包,也就是说要求在安装了特定的软件包之后才能安装该软件包。如果在您安装某个软件包时存在这种未解决的依赖关系。会产生以下信息: $ rpm -ivh bar-1.0-1.i386.rpm failed dependencies:

foo is needed by bar-1.0-1

您必须安装完所依赖的软件包,才能解决这个问题。如果您想强制安装(这是个坏主意,因为安装后的软件包未必能正常运行), 请使用--nodeps 命令行选项。

卸载

卸载软件包就象安装软件包时一样简单: $ rpm -e foo

注意这里使用软件包的名字name ``foo'', 而不是软件包文件的名字file ``foo-1.0-1.i386.rpm''.

如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如: $ rpm -e foo

removing these packages would break dependencies: foo is needed by bar-1.0-1

要想RPM忽略该错误信息继续卸载的话(这可不是一个好主意 ,因为依赖于该软件包

的程序可能无法运行), 请使用--nodeps 命令行选项.

升级

升级软件包和安装软件包十分类似:. $ rpm -Uvh foo-2.0-1.i386.rpm

foo ####################################

RPM将自动卸载已安装的老板本的foo 软件包,您不会看到有关信息。事实上您可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包,也能正常运行。

因为升级其实就是软件包的卸载与安装的综合,您可能会遇见那些操作中所可能发生的错误。有一处不同,那就是当您使用旧版本的软件包来升级新版本的软件时,会产生以下错误信息:

$ rpm -Uvh foo-1.0-1.i386.rpm

foo package foo-2.0-1 (which is newer) is already installed error: foo-1.0-1.i386.rpm cannot be installed

要使RPM 坚持这样“升级”,就使用 --oldpackage 命令行参数。 查询

使用命令rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包 的包名 ,版本号,和发行号: $ rpm -q foo foo-2.0-1

除了指定软件包名以外,您还可以连同-q使用以下选项来指明要查询哪些软件包的信息。这些选项被称之为 “软件包指定选项“: -a 查询所有已安装的软件包. -f 将查询包含有文件. 的软件包 -p 查询软件包文件名为. 的软件包

有几种方式来指定查询软件包时所显示的信息。以下选项用于选择您感兴趣的信息进行显示。它们被称作信息选择选项:

-i 显示软件包信息,如描述, 发行号, 尺寸, 构建日期, 安装日期, 平台, 以及其它一些各类信息。

-l 显示软件包中的文件列表。

-s 显示软件包中所有文件的状态。.

-d 显示被标注为文档的文件列表(man 手册, info 手册, README's, etc).

-c 显示被标注为配置文件的文件列表。这些是您要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc).

对于那些要显示文件列表的文件, 您可以增加-v 命令行选项以获得如同 ls -l 格式的输出。

验证

验证软件包是通过比较compares从软件包中安装的文件和软件包中的原始文件信息来进行的。除了其它一些东西,验证主要是比较文件的尺寸, MD5 校验码, 文件权限, 类型, 属主和用户组等。

rpm-V命令用来验证一个软件包。您可以使用任何包选择选项来查询您要验证的软件包 命令rpm -V foo 将用来验证foo软件包。又如: 验证包含特定文件的软件包: rpm -Vf /bin/vi

验证所有已安装的软件包:

rpm -Va

根据一个RPM来验证某个软件包: rpm -Vp foo-1.0-1.i386.rpm

二、tar管理

tar可以为文件和目录创建档案.利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘.利用 tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的.Linux上的tar是GNU版本的.

语法∶tar [主选项+辅选项] 文件或者目录

使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用.

主选项∶

? c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项. ? r 把要存档的文件追加到档案文件的未尾.例如用户已经作好备份文件,又发现还有

一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中.

? t 列出档案文件的内容,查看已经备份了哪些文件.

? u 更新文件.就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新

的文件,则把它追加到备份文件的最后. ? x 从档案文件中释放文件. 辅助选项∶

? b 该选项是为磁带机设定的.其后跟一数字,用来说明区块的大小.系统预设值为20块

(20*512 bytes).

? f 使用档案文件或设备,这个选项通常是必选的.

? k 保存已经存在的文件.例如我们把某个文件还原,在还原的过程中,遇到相同的文件,

不会进行覆盖.

? m 在还原文件时,把所有文件的修改时间设定为现在. ? M 创建多卷的档案文件,以便在几个磁盘中存放.

? v 详细报告tar处理的文件信息.如无此选项,tar不报告文件信息. ? w 每一步都要求确认.

? z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一

定要使用该选项进行解压缩.

gzip命令

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.

语法∶gzip [选项] 压缩(解压缩)的文件名 各选项的含义∶

? -c 将输出写到标准输出上,并保留原有文件. ? -d 将压缩文件解压.

? -l 对每个压缩文件,显示下列字段∶ 压缩文件的大小, 未压缩文件的大小, 压缩比,

未压缩文件的名字,

-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩. ? -t 测试,检查压缩文件是否完整.

? -v 对每一个压缩和解压的文件,显示文件名和压缩比.

? -num 用指定的数字num调整压缩的速度,-1或-fast表示最快压缩方法(低压缩比),-9

或-best表示最慢压缩方法(高压缩比).系统缺省值为6. unzip命令

用 MS Windows 下的压缩软件 winzip 压缩的文件如何在 Linux 系统下展开呢?可以用 unzip 命令,该命令用于解扩展名为 .zip 的压缩文件.

语法∶unzip [选项] 压缩文件名.zip 各选项的含义分别为∶

? -x 文件列表 解压缩文件,但不包括指定的file文件. ? -v 查看压缩文件目录,但不解压. ? -t 测试文件有无损坏,但不解压.

? -d 目录 把压缩文件解到指定目录下. ? -z 只显示压缩文件的注解. ? -n 不覆盖已经存在的文件.

? -o 覆盖已存在的文件且不要求用户确认.

? -j 不重建文档的目录结构,把所有文件解压到同一目录下. 支持通配符. 该命令的各选项含义如下∶

?

本文来源:https://www.bwwdw.com/article/7xcx.html

Top