Answers:
如果Ubuntu版本(或从Debian派生的其他安排)发行版中软件包版本的依赖性与您要构建的版本的deps相同的可能性,则可以运行apt-get build-dep nginx
或aptitude build-dep nginx
-无法安装nginx软件包,但将安装所有列出为依赖项的文件(以及它们的依赖项,照常),其中包括libssl-dev
(当前正在查找的软件包)。
在大多数情况下,这将使另一个(可能是较新的)版本的构建成功完成,并且省去了您自己一个人安装每个库及其头文件的麻烦。即使您尝试构建的其他版本中有新的依赖项,build-dep <package>
也是一个不错的起点,因为这意味着您只需要手动安装额外的新依赖项。
例如,在我的一台服务器上的结果是:
user@host:~$ sudo aptitude build-dep nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initialising package states... Done
The following NEW packages will be installed:
autotools-dev cvs{a} debhelper gettext{a} html2text{a} intltool-debian{a}
libcroco3{a} libmail-sendmail-perl{a} libpcre3-dev libpcrecpp0{a}
libssl-dev libsys-hostname-long-perl{a} po-debconf{a} zlib1g-dev
0 packages upgraded, 14 newly installed, 0 to remove and 19 not upgraded.
Need to get 7,217kB of archives. After unpacking 22.9MB will be used.
Do you want to continue? [Y/n/?]
它打算安装一些库和头文件,以启用nginx构建,但不启用nginx本身。
需要注意的一件事是,如果由于某些原因需要不同的构建选项而不是需要不同的版本而正在编译自己的副本,则最好从存储库的源代码进行编译,而不是直接使用上游的源代码。这样的问题是快速搜索中出现的第一个有用的页面,尽管您可以根据需要轻松找到更详细的教程。
另一个需要注意的小事项:所安装的软件包apt-get build-dep
将被标记为手动安装,就好像您当前正在手工完成一样。这意味着您不能一口气删除它们(没有apt-get unintall-dep
或没有类似的东西)-尽管这与手动库/标头安装中得到的情况没有什么不同(我只提到了一些人期望的事实)是一种撤消build-dep
操作的单步方法,并且没有)。