什么是“构建必需”和“构建依赖”?

cla*_*ser 83 linux packages ubuntu

我正在研究如何在 Xubuntu 10.04 中安装 Ruby 1.9.1,我多次遇到命令build-essentialbuild-dep。有时它跟在包之后,有时它在包之前和之后都被包。

我正在查看的两个示例是:

sudo apt-get install build-essential zlib1g zlib1g-dev zlibc libruby1.9 libxml2 libxml2-dev libxslt-dev

须藤 apt-get build-dep ruby​​1.9

sudo apt-get install ruby​​ irb ri rdoc ruby​​1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libbm-ruby lib libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev

小智 73

该命令的sudo apt-get build-dep packagename意思是“作为 root,安装‘packagename’的所有依赖项,以便我可以构建它”。所以 build-dep 是一个 apt-get 命令,就像安装、删除、更新等一样。

build-essential 是一个包,其中包含对一般构建软件所需的众多包的引用。

  • 感谢您解释“build-dep”命令。因此,据我所知,在这种情况下,Ruby1.9 附有一个依赖项列表,Linux 将其视为“待办事项/构建列表”,并逐一构建这些项目中的每一项。构建的最终基础设施允许 Ruby1.9 正常运行。我不明白的是为什么“build-essential”或最上面的所有其他包(zlib1g zlib1g-dev zlibc libruby1.9 等)不会包含在“待办事项/构建列表”中' 附加到 Ruby1.9。如果只有一个命令不是更简单吗? (2认同)

小智 61

build-essential软件包是编译 Debian 软件包所需的所有软件包的参考。它通常包括 GCC/g++ 编译器和库以及一些其他实用程序。

在此处查看文档

  • 这个答案是错误的。下面的答案是正确的。`build-dep` 是一个 apt-get 命令,`build-essential` 是一个包。 (8认同)
  • @Adam 由于 Ruby 是一种解释型语言,解释器需要 C 或 C++ 编译器来构建自己以在您的机器上运行。`build-essential` 是一个元包(一个安装了许多其他包的包,比如 g++ 和 gcc:GNU C 和 C++ 编译器)。如果您想从源代码编译任何东西,并且您想使用几乎任何编程语言,那么它是必需的。哼! (5认同)
  • 简而言之,如果您(或您要安装的其他软件包)需要 C/C++ 编译器,则需要安装 build-essential。通常这是我在新的 Ubuntu 安装中安装的第一件事:-) (3认同)
  • 好的,但这仍然不能完全回答我的问题。我知道“build-essential”包含一个对创建 Debian 软件包至关重要的软件包信息列表。但是什么被认为是 Debian 软件包?红宝石?gcc/g++ 编译器?Debian 软件包和“build-essential”与 Ruby 有什么关系?Ruby 是否构建在 Debian 软件包之上?换句话说,Ruby 是否需要 build-essential 软件包才能运行?我真的希望看到所有这些部分之间的关​​系。 (2认同)
  • 这不是正确答案。提供的链接没有对 build-essential 包中的内容提供任何见解或解释。 (2认同)

Cir*_*郝海东 11

build-essential有一个神奇的属性:它不需要在源包的Build-Depends控制字段 ( debian-packages)下列为构建依赖项,如https://www.debian.org/doc/debian-policy/ch-source.html# 所述s-pkg-关系

您可以在以下位置获取 build-essential 软件包的列表:

cat /usr/share/doc/build-essential/list
Run Code Online (Sandbox Code Playgroud)

您还可以确定一个包是否属于build-essential

apt-cache show gcc
Run Code Online (Sandbox Code Playgroud)

其中说:

Build-Essential: yes
Run Code Online (Sandbox Code Playgroud)


小智 6

“build-essential”包含用于从源代码编译/构建软件的工具(如 gcc 编译器、make 工具等)。所以你从(通常是 C)源文件开始,然后从它们创建可执行文件。

如果您只是想安装 Ruby,我强烈建议您只使用RVM(Ruby 版本管理器)

按照“Github 存储库(推荐)”下的说明进行操作

请注意,您需要先安装 Git 版本控制软件。apt-get install git-core如果您还没有,请使用。