创建和创建有什么区别.deb 文件安装它们并运行.运行文件?
答案1
.deb
文件是用于包装袋,低级 Debian 软件包管理器(由 APT 及其相关产品在幕后调用)。文件.deb
是 Debian 或衍生版本(例如 Ubuntu 或 Mint)的软件包。
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 等使用转速,具有相似特征的不同格式。有其他的在其他 UNIX 系统上。
.run
不是标准扩展。文件.run
大概是您可以执行的东西。它可能会安装一个程序或执行完全不同的操作。
答案2
一般来说,.deb 文件类似于 zip 文件,其中包含文件以及简短的脚本,这些脚本可以在安装后运行以在安装后将用户、组等添加到系统中。
.run 文件通常是单个二进制可执行文件或包含可安装的二进制 blob 的 shell 脚本。如果是 shell 脚本类型,它通常会包含一个二进制 blob,该二进制 blob 通常与递归 zip 文件或 tar 文件同义。换句话说,它将包含文件的目录结构。
其他时候,这种类型的 .run 文件将仅包含 .deb 或 .rpm 文件,这些文件将转储到磁盘,并且可以单独安装,或者包含它们的脚本将它们转储到磁盘,然后尝试使用系统的包管理器软件安装它们。
例如,如果您从 Oracle 下载 Java JDK。它通常是一个可执行文件,执行时会将 .deb 或 .rpm 文件转储到磁盘,然后使用the package management tools: dpkg
、apt
、yum
或 来安装它们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任何代码许可证、补充条款或许可软件中包含的其他许可证。除非以书面形式并由各方授权代表签署,否则对本协议的任何修改均不具有约束力。
您同意上述许可条款吗? [是还是不是]
通过上面的安装程序,您可以看到它只包含文件目录的二进制 blob:
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