Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python apt get的需求文件,类似于pip_Python_Pip_Apt_Apt Get - Fatal编程技术网

Python apt get的需求文件,类似于pip

Python apt get的需求文件,类似于pip,python,pip,apt,apt-get,Python,Pip,Apt,Apt Get,我喜欢使用pip需求管理依赖关系的方式。在apt get中是否有类似的情况 您的问题是,您希望在一个文件中有一个系统依赖项列表,以便能够用一个命令安装它 我不建议您在系统依赖项中包含包的版本。在软系统依赖项中,如“build essential”或“uuid dev”,您通常需要包的最新版本。在python、postgres等“硬依赖”中,通常以包本身的名称指定版本,如“python2.6-dev”或“postgresql-8.4”。定义软件包的确切版本时可能遇到的另一个问题是,postgres

我喜欢使用pip需求管理依赖关系的方式。在apt get中是否有类似的情况


您的问题是,您希望在一个文件中有一个系统依赖项列表,以便能够用一个命令安装它

我不建议您在系统依赖项中包含包的版本。在软系统依赖项中,如“build essential”或“uuid dev”,您通常需要包的最新版本。在python、postgres等“硬依赖”中,通常以包本身的名称指定版本,如“python2.6-dev”或“postgresql-8.4”。定义软件包的确切版本时可能遇到的另一个问题是,postgresql-8.4的8.4.11-1版本可能在三个月或一年内无法在存储库中提供,并且最终将在repo中安装当前版本

例如。您可以使用项目所需的系统包创建名为“requirements.system”的文件:

python-virtualenv
python2.6-dev
uuid-dev
python-pip
postgresql-8.4
然后,在安装文件中解释如何安装系统软件包

# Install system depencences by running
cat ~/project/install/requirements.system | xargs sudo aptitude install

我们运行这种配置已经两年了,不得不从Scrache中重新创建环境几次,我们从来没有遇到过问题。

我们在工作中使用这种格式。它只是一个bash包装器,内置了一些助手。

因为apt接受来自stdin的输入,最简单的方法是:

$cat requirement.txt
海湾合作委员会
克马克
$apt安装
我通常使用
apt list--installed | awk-F/'{print$1}'| grep-v Listing…>已安装的\u packages.txt

说明:

  • apt list--installed
    回显当前安装的软件包列表,包括版本
  • awk-F/'{print$1}'
    摆脱了软件包版本,这使得文件独立于您的发行版(Mint、Ubuntu、Debian stable/testing之间的下游兼容性,上游无需)
  • grep-v清单…
    摆脱apt的“交互式”显示(第一行)
  • 所有这些都将通过管道传输到单个文件

然后,您可以通过
cat installed_packages.txt | xargs apt install-y
将所述文件的每一行作为apt的参数安装到另一个系统上。

您能举例说明您的意思吗?您是指版本依赖关系吗?如果是,答案是肯定的。如果没有版本依赖项,任何包管理器都是不完整的。我的意思是拥有requirements.txt文件以便批量安装包。您可以创建元包以批量安装包。只需将这些包指定为元包的依赖项。此解决方案还允许您在需求文件中添加注释:您还可以使用与pip类似的方式,使用
package\u name=version
python virtualenv=1.7.1.2-1
)添加包的版本号。但是,它可能没有pip那么有用,因为Debian镜像维护的包版本不如PyPI存储库维护的包版本多。有时您需要指定版本,因为某些dpkg非常糟糕。我记得memecache或类似产品需要一些过时的版本,否则将无法安装。这是个小案子,所以有时候是件好事。此外,如果已知系统在特定状态下运行良好,则需要重现该状态。如果需要最新版本,标准部署工作流是使用指定的要求(但使用最新版本)从头开始创建新环境,并对其进行测试。无需cat:
xargs apt get安装简单易用。有没有一种方法可以让我使用
aptitude install
?@Abhi提交一个问题,我也许可以这样做。当然我会提交一个问题!!据我所知,这完全不起任何作用,或者说,它的作用与
apt install”“
相同,并且不会安装任何东西。