如何为软件包列表运行命令?

Mar*_*cel 5 shell debian package-management

我试图按照这个解释在 Debian 测试上安装 Gnome 3 。然而,这不起作用,让我没有任何图形用户界面。

目前我试图解决这个问题,我意识到有一长串标记为手动安装的软件包。我存储了一个(以换行符分隔的)包列表——在我看来——应该被标记为自动安装(几乎所有的)。

现在我想竞选apt-mark auto这个名单。

我怎么做?

PS:如果有人告诉我这不是一个好主意(如果不是),我也会很感激。

lum*_*ric 7

您可以使用 xargs:

 cat /path/to/file | xargs apt-mark auto
Run Code Online (Sandbox Code Playgroud)

如果文本文件中的每行有一个包名,这应该可以工作/path/to/file

另一种选择是使用 for 循环:

 for pkg in `cat /path/to/file`; do apt-mark auto $pkg; done
Run Code Online (Sandbox Code Playgroud)

如果您遇到类似的问题,即无法使用参数列表调用命令,但您必须为每个参数调用一次,则第二种方法可能很有用。但在你的情况下,它当然不是那么优雅...... :)

顺便说一句,我假设您正在使用 bash。

注意:在我的系统上apt-mark --help说:

Usage: apt-mark [options] {markauto|unmarkauto} packages...
Run Code Online (Sandbox Code Playgroud)

并且:

apt-mark is deprecated, use apt-get markauto/unmarkauto.
Run Code Online (Sandbox Code Playgroud)

  • 使用`xargs`,你可以只写`</path/to/file xargs apt-mark auto`;并且它会处理包名之间的任何空格分隔,不一定是换行符(`xargs` 有引用问题,但 Debian 包名不包含任何有问题的字符,所以这里没问题)。一个更简单的方法是`apt-mark auto $(cat /path/to/file)`(同样,它不需要任何特殊的预防措施,因为包名不包含特殊字符)。 (3认同)