解压缩

tar.gz 压缩包

UNIX® 系统下标准的[31]压缩格式是由 GNU 项目开发的 gzip 格式,它被认为是最好的通用压缩工具。

gzip 经常会同一个称为 tar 的工具一起使用。tar 是远古时代的孓遗,当年计算技术人员将他们的数据保存在磁带上。现在,软盘、CD-ROMDVD 早已替代了磁带,然而 tar 依旧用于创建压缩包。比如,一个目录中的全部文件能够添加到一个单独的文件中。该文件能够简便地由 gzip 压缩。

这也就是为何许多自由软件以 gzip 压缩的 tar 包形式存在的缘故。因此,它们的扩展名为 .tar.gz (或简写为 .tgz)。

GNU Tar 的使用

要解压这种包,请依次使用 gziptar。不过 tarGNU 版本(gtar)可以即时调用 gzip,且不需要注意到此中每一步过程就能解压包(而且还不需要额外的磁盘空间)。

请如下使用 tar

tar <文件选项> <.tar.gz 文件> [文件]

其中 <文件> 选项并非必须。如果它被忽略,将会解压整个包。在解压 .tar.gz 压缩包内容时该参数并非必需。

举例说明:

$ tar xvfz guile-1.3.tar.gz
-rw-r--r-- 442/1002      10555 1998-10-20 07:31 guile-1.3/Makefile.in
-rw-rw-rw- 442/1002       6668 1998-10-20 06:59 guile-1.3/README
-rw-rw-rw- 442/1002       2283 1998-02-01 22:05 guile-1.3/AUTHORS
-rw-rw-rw- 442/1002      17989 1997-05-27 00:36 guile-1.3/COPYING
-rw-rw-rw- 442/1002      28545 1998-10-20 07:05 guile-1.3/ChangeLog
-rw-rw-rw- 442/1002       9364 1997-10-25 08:34 guile-1.3/INSTALL
-rw-rw-rw- 442/1002       1223 1998-10-20 06:34 guile-1.3/Makefile.am
-rw-rw-rw- 442/1002      98432 1998-10-20 07:30 guile-1.3/NEWS
-rw-rw-rw- 442/1002       1388 1998-10-20 06:19 guile-1.3/THANKS
-rw-rw-rw- 442/1002       1151 1998-08-16 21:45 guile-1.3/TODO
...

tar 的选项:

  • vtar 进入详细模式。该参数将导致在屏幕上显示包中所有文件。如果忽略该选项,执行过程中将没有详细信息输出。

  • f 是必需的选项。如果没有该选项,tar 将试图使用磁带(即设备 /dev/rmt0)而不是一个包。

  • z 让您能处理 “gzip” 压缩过的包(扩展名为 .gz)。如果您忘了这个选项,tar 将提示错误。同样,该选项也不可用于非压缩包。

tar 让您通过选项对包执行提取、读取、创建、添加等操作:

  • x:从包中提取文件。

  • t:列出包中的内容。

  • c:创建包。例如,您可以用它来备份您的个人文件。

  • r:在包尾部添加文件。它不能用于已被压缩的包。

Bzip2

对于一般用途,gzip 早已被称为 bzip2 的新压缩格式所替代。不过某些软件还会为了兼容旧有系统的而以 gzip 格式发布。现在,绝大多数自由软件已经以 .tar.bz2 形式发布。

命令 tar 以相同方式使用 bzip2gzip。唯一的区别是您需要把选项 z 改成 j。比如:

$ tar xvjf foo.tar.bz2

另一种形式是(移植性更好,不过需要键入更多字符!):

$ tar --use-compress-program=bzip2 -xvf foo.tar.bz2

在您如上使用 tar 之前必须先把 bzip2 安装到环境变量 PATH 中的某一目录。

亲身实践!

最简单的方式

既然您已准备好要压缩某个包了,别忘了请用管理员身份(root)来做。您将需要执行普通用户不能执行的事情,而且即使您能以普通用户执行其中的某一些,一直作为 root 也要更为简单一些,尽管这样可能并不十分安全。

首先,请进入 /usr/local/src 目录并将压缩包复制到那里。如果您后来丢失了已安装的软件,那您总是能在那里找到原来的压缩包的。如果您的磁盘空间不足,请在安装完软件之后将压缩包保存到软盘上。您也可以将其删除,不过您必须确保在需要的时候能从网上得到它。

一般,解压某个 tar 包后将会创建一个新的目录(您可以使用 t 选项预先检查一下)。然后进入该目录,您就可以执行下一步了。

最安全的方式

UNIX® 系统(比如 GNU/LinuxFreeBSD®)可以作为安全系统。这意味着普通用户不能执行可能会威胁到系统(比如格式化磁盘)或会更改其他用户文件的操作。而且它还对病毒免疫。

另一方面,root 可以作任何事情,甚至是运行一个恶意程序。拥有源代码让您能够检查其中是否含有恶意代码(病毒或木马)。小心谨慎为妙[32]

其想法是使用 adduser 命令专门创建一个管理员用户(比如 free 或是 admin)。该用户必须能够写入以下目录:/usr/local/src/usr/local/bin/usr/local/lib,以及 /usr/share/man 目录下的所有子目录(他还需要能够在别的地方复制文件)。我们推荐您把这些目录的所有者改为该用户,或者为他创建一个组并让这些目录对该组可写。

这些先决条件满足之后,您就可以依照“最简单的方式”一节所示操作了。



[31] 如今在 GNU/Linux 上,标准是 bzip2 格式。bzip2 对文本文件更为有效,但需要更多计算能力。请参考“Bzip2”一节中针对该程序的详细介绍。

[32] BSD 业界有句俗话:“决不信任没有得到源代码的软件包。