A primeira resposta a esta pergunta usa o que você sugere e lida com pacotes ausentes depois. Entre as respostas, algumas pessoas sugerem que esta é uma má ideia. Observe também que, se a seleção incluir :i386
, talvez seja porque algum outro pacote requer explicitamente um pacote para essa arquitetura. Se você quiser verificar antes, aqui está uma sugestão.
No seu sistema, você deve encontrar listas de pacotes disponíveis por repositório em /var/lib/apt/lists
. Você pode verificar a lista de pacotes com um: i386 contra essas listas para garantir que eles estejam presentes para as arquiteturas i386 e amd64. O script a seguir é um exemplo do que você poderia fazer
#!/bin/bash
#iterate on installed packages with a :something in their names
for package in $(
dpkg --get-selections |
grep ":" | #comment to check all the selection
grep -v deinstall |
cut -f1 |
sed s/:.*// |
sort -u
)
do
#find all occurences in repository package lists
grep "Package: $package$" /var/lib/apt/lists/* 2>/dev/null |
#translation and sources are not usefull
grep -v Translation |
grep -v Sources |
#put the distribution as a prefix
sed 's/^\(.*\)_dists_\([^_]*\)\(.*\)/ /' |
#put the architecture difference in the repository file name as a prefix
sed 's/^\(.*\)-\(amd64\|i386\)_\(.*\)/ _/' |
#count consecutive identical lines ignoring the architecture prefix
uniq -c -f1 |
#print architecture distribution and package if some line is not duplicated
awk '$1!=2{print $2 " " $3 " " $5}'
done
Em uma instalação lubuntu isso não me dá nada, e em um debian, os pacotes libc6-i686, libwine-bin, libwine-alsa, libwine-gl
são apenas para arquitetura i386 por exemplo