我有一个 Ubuntu 系统,安装了很多软件包和应用程序。
让我们将这个系统命名为来源。此处的应用程序仅作为 deb 包安装。
我需要在新系统上安装带有桌面文件的应用程序(目标)。
我怎样才能做到这一点?
答案1
首先我们需要获取可执行文件列表来源系统使用如下命令:
dpkg -S $(which $(grep -r ^Exec --no-filename /usr/share/applications/ | sed 's/Exec=//' | awk '{print $1}' ) | grep -v /home/$USER | grep -v /usr/local) 2> /dev/null | awk '{print $1}' | sed 's/://' | sort -u > apps-list.txt
(命令被格式化为内联代码以提供可读性,请不要将其更改为代码块)
上述命令解析中的所有桌面文件/usr/share/applications/
,提取Exec=
行的内容,跳过安装在主文件夹和中的应用程序/usr/local
,然后找到相应的路径,最后将它们转换为要存储在文本文件中的包列表。
第二次在目标我们可以使用以下命令简单地安装这些应用程序
sudo apt install $(cat apps-list.txt)
注意:我们可以使用 grep 过滤掉不存在的包来跳过它们:
sudo apt install $(cat apps-list.txt | grep -v -E "app-not-found1|app-not-found2")