我喜欢使用pip requirements来管理依赖项。在apt-get中有类似的东西吗?
http://www.pip-installer.org/en/latest/requirements.html#requirements-file-format
我喜欢使用pip requirements来管理依赖项。在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 system depencences by running
cat ~/project/install/requirements.system | xargs sudo aptitude install
我们已经使用这个配置运行了大约两年时间,有几次需要从头重新创建环境,但我们从未遇到过任何问题。
package_name=version
(例如python-virtualenv=1.7.1.2-1
)来添加软件包的版本号。但是,这种方法可能没有pip那么有用,因为Debian镜像不像PyPI存储库那样维护大量旧版软件包。 - C2H5OHxargs apt-get install <reqs.txt
。 (注:该命令意为不需要使用“cat”命令,直接用“xargs”和“apt-get install”命令并结合输入重定向符“<”来安装“reqs.txt”文件中所列出的软件包。) - arand我们在工作中使用 aptfile格式。它只是一个带有一些内置助手的bash包装器。
aptitude install
的方式吗? - Abhi我通常使用apt list --installed | awk -F/ '{print $1}' | grep -v Listing... > installed_packages.txt
创建一个已安装软件包的列表。
解释:
apt list --installed
会列出当前安装的软件包及其版本。awk -F/ '{print $1}'
会去掉软件包的版本,这使得该文件与您的发行版无关(在Mint、Ubuntu、Debian stable/testing之间有下游兼容性,但不一定是上游兼容性)。grep -v Listing...
去掉了apt的“交互式”显示(第一行)。然后,您可以通过cat installed_packages.txt | xargs apt install -y
在另一个系统上安装软件包,使用该文件的每一行作为apt的参数。
由于apt可以从标准输入接受输入,因此最简单的方法是:
$ 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.