使用文件通过apt-get安装软件包


9

我发现通过brewfiles,caskfiles,dockerfiles,package.json等软件包文件在新计算机上安装软件包非常方便。

apt-get是否有替代方法,因为我仍然只是
通过命令行使用它

apt-get install pkg1 pkg2 pkg3…


2
需要一个吗?您可以使用xargsxargs -P1 apt-get install < list-of-packages
muru

@muru好吧,我真的不知道xargs的工作原理(现在正在阅读man),但是我不认为这是将软件包集中在一个文件中的解决方案吗?我仍然必须在<之后手动列出文件,因为使用带有三个包的.txt文件不能使用此命令(在Debian上测试)
thibmaek 2015年

1
<是shell重定向。对于多个文件,请使用:cat file1 file2 .. | xargs -P1 apt-get install
muru 2015年

Answers:


13

如您的问题注释中所指定,您可以构建一个简单的文本文件,名为packages.txt,列出要安装的软件包:

iceweasel
terminator
vim

然后运行以下命令:

cat packages.txt | xargs sudo apt-get install

xargs用于将程序包名称从packages.txt文件传递到命令行。从手册页:

xargs从标准输入中读取由空格(可以用双引号或单引号或反斜杠保护)或换行符分隔的项,并执行一次(多次)命令(默认为/ bin / echo),并在其后加上任何初始参数按从标准输入中读取的项目。


9

在@ ortomala-lokni的答案上有一些改进,您可以直接将文件作为参数传递给xargs

xargs -a packages.txt sudo apt-get install

如果您不包含任何非空白字符,则可以选择提供xargs一个-r选项以完全阻止apt-get调用运行packages.txt


这可能是Alpine / BusyBox的特性,但是-aarg没有记录在案,并且似乎在这里不起作用:xargs: unrecognized option: a。我显示的版本输出是BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston '18

使用接受的答案导致对apt的Y / n查询中止。使用此工作。谢谢!
Ok Letsdothis


0

除了更通用的脚本解决方案之外,您还可以创建一个deb包。

你会需要

  • equivs-build,以建立辩论。deb只能包含依赖项。这是一个简化的deb构建器。
  • gdebi 安装deb。

这将在所有基于debian的系统(使用apt / deb-files的系统)上运行。

与shell脚本相比,使用deb文件执行此操作的优点是撤消更加容易,您可以卸载deb或重新配置deb并重新安装它(这将导致文件被删除)。添加和删​​除)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.