.deb文件和.run文件之间的区别


Answers:


8

.deb文件是dpkg的软件包,dpkg是低级Debian软件包管理器(由APT及其亲戚在后台调用)。甲.deb文件是Debian或衍生物如Ubuntu或薄荷包。

Debian软件包包含属于该软件包的文件以及一个“控制文件”,该文件描述了软件包的依赖性和其他元信息,以及在安装,升级或卸载软件包时执行的安装脚本。

您可以.deb使用dpkg -c和来查看文件的内容dpkg -I。如果没有dpkg,则可以使用ar t foo.deb列出.deb文件的ar x foo.deb control.tar.gz各个control.tar.gz部分并提取该部分(其他部分也类似)。

Red Hat(以及诸如CentOS和Fedora之类的亲戚),SuSE和其他人使用rpm,这是一种具有类似特征的不同格式。还有其他人在其他UNIX系统。

.run不是标准扩展名。一个.run文件大概是东西,你可以执行。它可能会安装程序或执行完全不同的操作。


8

通常,.deb文件类似于zip文件,该文件包含一些文件以及一些短脚本,这些脚本可以在安装后运行,以在安装后向系统中添加用户,组等。

.run文件通常是单个二进制可执行文件或包含可安装的二进制Blob的Shell脚本。如果它是shell脚本的变体,则通常会包含一个二进制blob,该二进制blob通常与递归zip文件或tar文件同义。换句话说,它将包含文件的目录结构。

在其他时间,这种类型的.run文件将仅包含.deb或.rpm文件,这些文件将转储到磁盘中,并且可以单独安装,或者包含它们的脚本将其转储到磁盘中,然后尝试使用系统的软件包管理器软件安装它们。

例如,如果您从Oracle下载Java JDK。一般来说,这是一个可执行文件,当执行将转储的.deb或.rpm文件到磁盘上,然后使用安装它们the package management tools: dpkgaptyum,或rpm

这是这些.run文件之一的下载/安装外观的示例。扩展名是.bin,但这只是表面上的,扩展名除了帮助用户区分不同类型的文件外,实际上没有任何意义。

$ wget http://www.java.net/download/jdk7/archive/b125/binaries/jdk-7-ea-bin-b125-linux-x64-13_jan_2011.bin
$ ./jdk-7-ea-bin-b125-linux-x64-13_jan_2011.bin

在这里,上面的文件将转储组成JDK的各种组件的软件包,之后,您可以安装所有组件或仅安装所需的组件。

通过这种方式,除了安装软件包之外,还可以做其他事情。例如,Oracle拥有他们希望您接受的许可协议:

10.5本协议是双方就其标的物达成的全部协议。它取代了之前或同期的所有口头或书面通讯,提议,条件,陈述和保证,并优先于各方之间就其标的物,包括任何Bi,一元代码许可,补充条款或许可软件中包含的其他许可。除非经双方授权代表书面签署,否则对本协议的任何修改均不具有约束力。

您是否同意上述许可条款?[是还是不是]

通过以上安装程序,您可以看到它仅包含文件目录的二进制二进制文件:

Extracting...
UnZipSFX 5.52 of 28 February 2005, by Info-ZIP (http://www.info-zip.org).
   creating: jdk1.7.0/
   creating: jdk1.7.0/lib/
  inflating: jdk1.7.0/lib/jexec      
   creating: jdk1.7.0/lib/visualvm/
   creating: jdk1.7.0/lib/visualvm/visualvm/
   creating: jdk1.7.0/lib/visualvm/visualvm/modules/
  inflating: jdk1.7.0/lib/visualvm/visualvm/modules/com-sun-tools-visualvm-attach.jar  
  inflating: jdk1.7.0/lib/visualvm/visualvm/modules/com-sun-tools-visualvm-host-views.jar  
   creating: jdk1.7.0/lib/visualvm/visualvm/modules/locale/
...

在这种情况下,这种安装方式不是召唤软件包管理器,而是简单地将内容转储到单个目录树中,以便您可以将其移动到所需位置。

在生产环境中,通常不希望使用包管理器,而是拥有对部署的更多控制权。也许您要部署几个应用程序,每个应用程序都需要不同版本的JDK。使用这种方法,您可以使它们更容易共存,然后通过程序包管理器进行说。

$ pwd
/home/saml/jdk1.7.0
[saml@grinchy jdk1.7.0]$ ls -l
total 19308
drwxr-xr-x  2 saml saml     4096 Jan 13  2011 bin
-r--r--r--  1 saml saml     2487 Jan 13  2011 COPYRIGHT
drwxr-xr-x  5 saml saml     4096 Jan 13  2011 db
drwxr-xr-x 11 saml saml     4096 Jan 13  2011 demo
drwxr-xr-x  3 saml saml     4096 Jan 13  2011 include
drwxr-xr-x  6 saml saml     4096 Sep 29 10:57 jre
drwxr-xr-x  3 saml saml     4096 Sep 29 10:57 lib
-r--r--r--  1 saml saml     9005 Jan 13  2011 LICENSE
drwxr-xr-x  4 saml saml     4096 Jan 13  2011 man
-r--r--r--  1 saml saml    25379 Jan 13  2011 README.html
-r--r--r--  1 saml saml    20320 Jan 13  2011 README_ja.html
-r--r--r--  1 saml saml    15160 Jan 13  2011 README_zh_CN.html
-r--r--r--  1 saml saml     5348 Sep 29 10:58 register.html
-r--r--r--  1 saml saml     5645 Sep 29 10:58 register_ja.html
-r--r--r--  1 saml saml     4951 Sep 29 10:58 register_zh_CN.html
drwxr-xr-x  8 saml saml     4096 Jan 13  2011 sample
-rw-r--r--  1 saml saml 19631790 Jan 13  2011 src.zip

参考文献

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.