在 debian 系统上使用 BASH 安装批量 .debs

在 debian 系统上使用 BASH 安装批量 .debs

背景:我正在尝试弄清楚如何在 MX 19.3 系统上离线安装 WINE。我遇到了很大的困难。我似乎无法从源代码构建(我从来都不喜欢这样做)。我不关心大小,我喜欢保留自己的离线存储库,如果可以的话,我会下载我可能需要的所有 dll,这样我就可以根据需要离线安装它们。我发现的最接近的方法是使用 MX 软件包安装程序,将 /var/cache/apt/archives/ .debs 复制到离线系统(我将复制这些 debs 的位置添加到 /etc/apt/sources 中)。离线 PC 上的 list.d/mysources.list 并执行 sudo apt-get update)以及 MX 安装程序生成的文件列表,其中有 145 个,如下所示:

libaom0:i386 (1.0.0-3)
libasound2-plugins:i386 (1.1.8-1)
libasound2:i386 (1.1.8-1)
libasyncns0:i386 (0.8-6)
libatomic1:i386 (8.3.0-6)....

现在,当我通过离线 PC 的终端一一安装它们时(例如 sudo apt-get install libaom0:i386),使用从 MX 软件包安装程序的输出复制的列表,它们似乎安装得很好。但是,当我尝试一次安装全部内容时,它不起作用。我认为出于某种原因它也会尝试访问在线存储库。将它们一一粘贴到终端中并不是一个真正实用的解决方案。我尝试过的三个示例如下:

sudo apt-get install libaom0:i386 && \
libasound2-plugins:i386 && \ 
libasound2:i386 && \
libasyncns0:i386 && \
libatomic1:i386 .....


sudo apt-get install libaom0:i386 \
sudo apt-get install libasound2-plugins:i386 \ 
sudo apt-get install libasound2:i386 \
sudo apt-get install libasyncns0:i386 \
sudo apt-get install libatomic1:i386 .....


sudo apt-get install libaom0:i386 && \
sudo apt-get install libasound2-plugins:i386 && \ 
sudo apt-get install libasound2:i386 && \
sudo apt-get install libasyncns0:i386 && \
sudo apt-get install libatomic1:i386 .....

然而,以上都存在问题。我还不太擅长 BASH,有没有一种方法可以循环它,以便将每一行都视为新的粘贴到终端中,或者更好的是,对上面的内容进行调整,这样我就可以粘贴全部内容进入终端;因为我有一种感觉,如果将它们分开处理,以便单独处理每条线,那么它们都会安装。实际上,我只是想重新创建 MX 软件包安装程序的功能。

提前致谢!

答案1

awk '{print $1}' file |
    while read -r package
    do
        sudo apt -y install "$package"
    done

一个 while 循环,用于逐个读取file和安装软件包,而不要求确认(带有-y选项的 apt)。

或者:

xargs sudo apt install -y < <(awk '{print $1}' file)

相关内容