我喜欢如何使用 pip 要求管理依赖项。在 apt-get 的情况下是否有类似的东西?
http://www.pip-installer.org/en/latest/requirements.html#requirements-file-format
我喜欢如何使用 pip 要求管理依赖项。在 apt-get 的情况下是否有类似的东西?
http://www.pip-installer.org/en/latest/requirements.html#requirements-file-format
您的问题是您希望在一个文件中包含系统依赖项列表,以便能够使用一个命令安装它。
我不建议您在系统依赖项中包含软件包的版本。在“ build-essential ”或“ uuid-dev ”等软系统依赖项中,您通常需要最新版本的软件包。在诸如 python、postgres 或其他的“硬依赖”中,通常版本是在包本身的名称中指定的,例如“ python2.6-dev ”或“ postgresql-8.4 ”。您可能在定义软件包的确切版本时遇到的另一个问题是, postgresql-8.4的 8.4.11-1 版本可能在三个月或一年后不会在存储库中可用,您最终将安装当前版本在回购中。
例子。您可以使用项目所需的系统包创建一个名为“requirements.system”的文件:
python-virtualenv
python2.6-dev
uuid-dev
python-pip
postgresql-8.4
然后,在您的 INSTALL 文件中说明如何安装系统包。
# Install system depencences by running
cat ~/project/install/requirements.system | xargs sudo aptitude install
我们已经运行这个配置大约两年了,不得不从头开始重新创建环境几次,我们从来没有遇到过问题。
我们在工作中使用aptfile格式。它只是一个内置了一些帮助程序的 bash 包装器。
我通常使用apt list --installed | awk -F/ '{print $1}' | grep -v Listing... > installed_packages.txt
.
解释:
apt list --installed
回显当前安装的软件包列表,包括版本awk -F/ '{print $1}'
摆脱软件包版本,这使文件独立于您的发行版(Mint、Ubuntu、Debian 稳定/测试之间的下游兼容性,上游不是必需的)grep -v Listing...
摆脱 apt 的“交互式”显示(第一行)然后,您可以通过cat installed_packages.txt | xargs apt install -y
使用所述文件的每一行作为 apt 的参数在另一个系统上安装。
由于 apt 接受来自 stdin 的输入,因此最简单的方法是:
$ cat requirement.txt
gcc
cmake
$ apt install < requirement.txt
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.