あるシステムにインストールされているパッケージのリストを取得して、それらのすべてを別のシステムにインストールしたいと思います。
ターゲットシステムで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