我喜欢如何使用pip要求管理依赖项。在apt-get的情况下有类似的东西吗?
http://www.pip-installer.org/en/latest/requirements.html#requirements-file-format
答案 0 :(得分:28)
您的问题是,您希望在一个文件中包含系统依赖关系列表,以便能够使用一个命令进行安装。
我不建议您在系统依赖项中包含软件包的版本。在软件系统依赖中,例如“ build-essential ”或“ uuid-dev ”,您通常需要最新版本的软件包。在像python,postgres或其他类似的“硬依赖”中,通常版本在包本身的名称中指定,如“ python2.6-dev ”或“ postgresql-8.4 < / EM>”。您可能定义的软件包的确切版本的另一个问题是,可能在三个月或一年内, postgresql-8.4 的版本8.4.11-1将无法在存储库中使用,并且您将最终在repo中安装当前版本。
实施例。您可以使用项目所需的系统包创建名为“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
我们已经运行了这个配置大约两年,不得不从刮擦中重新创建环境几次,我们从来没有遇到过问题。
答案 1 :(得分:6)
我们在工作中使用aptfile格式。它只是一个内置了一些助手的bash包装器。
答案 2 :(得分:0)
我通常使用 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 的参数安装在另一个系统上。
答案 3 :(得分:-1)
由于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.