Rya*_*son 9 package-management dpkg
我想获取一个系统上安装的软件包列表,并将它们全部安装在另一个系统上。
我知道这dpkg --get-selections可以给我一个我可以dpkg --set-selections在目标系统上输入的所有已安装包的列表。但是,一些已安装的软件包是我自己在本地构建的(例如使用 checkinstall),并且无法从存储库中获得。dpkg --set-selections当无法在存储库中找到这些包时,该过程将失败。
那么有没有一种方法可以过滤生成的列表,dpkg --get-selections以便它只包含当前安装版本在我当前存储库中可用的包?
我相信软件中心现在具有在计算机之间同步的功能。如果正确处理丢失的包,它可以解决您的问题。
这里的问题dpkg是不知道存储库,只知道安装的包。您可以通过运行apt-cache policy $package. 如果您在 中看到一个存储库,则Version Table它在那里可用。
那么,这个怎么样?它很慢,但应该有效:
dpkg --get-selections '*' \
| while read line; do
apt-cache policy $(echo "$line" | cut -f1 ) \
| grep -q 'http://' \
&& echo "$line"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12111 次 |
| 最近记录: |