我想获得一个安装在一个系统上的软件包列表,然后将它们全部安装在另一个系统上。
我知道这dpkg --get-selections
可以给我列出所有可以安装到dpkg --set-selections
目标系统上的软件包的列表。但是,有些已安装的软件包是我在本地构建的(例如使用checkinstall),无法从存储库中获得。dpkg --set-selections
当无法在存储库中找到这些软件包时,该过程将失败。
那么,有什么方法可以过滤生成的列表dpkg --get-selections
,使其仅包含当前存储库中当前安装版本可用的软件包?
total=$(dpkg --get-selections '*'|wc -l); i=0; dpkg --get-selections '*' | while read line; do i=$(($i+1)); apt-cache policy $(echo "$line" | cut -f1 ) | grep -q 'http://' && echo "$i/$total $line"; echo $line>>/var/tmp/dpkg-selection.list; done