저는 모든 프로그래밍을 수행하기 위해 가상 머신(Windows 호스트의 Xubuntu 12.10, VMWare)을 사용해 왔으며 32비트 설치에서 64비트 설치로 전환하려고 합니다. 32비트 VM에서 사용한 모든 패키지를 새 64비트 VM에 자동으로 다시 설치하고 싶습니다.
읽다이 지침sudo dpkg --get-selections
, 설치된 패키지 목록을 얻기 위해 실행했지만 많은 패키지에 접미사가 있습니다 :i386
.
해당 64비트 패키지를 쉽게 설치할 수 있는 방법이 있습니까? 설치를 시도하기 전에 :i386
패키지 목록에 있는 유사한 것으로 안전하게 교체 할 수 있습니까?:x86_64
답변1
이 질문에 대한 첫 번째 대답귀하의 제안을 활용하고 분실된 패키지를 처리하십시오. 답변 중에는 이것이 나쁜 생각이라고 생각하는 사람들도 있었습니다. 또한 추가하기로 선택한 경우 :i386
일부 다른 패키지가 이 아키텍처에 대한 패키지를 명시적으로 요구하기 때문일 수 있습니다. 미리 확인하고 싶다면 여기 제안사항이 있습니다.
시스템에서는 에 있어야 합니다 /var/lib/apt/lists
. 이 목록에 대해 :i386을 사용하여 패키지 목록을 확인하여 해당 패키지가 i386 및 amd64 아키텍처 모두에 있는지 확인할 수 있습니다. 다음 스크립트는 수행할 수 있는 작업의 예입니다.
#!/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_\([^_]*\)\(.*\)/\2 \1\3/' |
#put the architecture difference in the repository file name as a prefix
sed 's/^\(.*\)-\(amd64\|i386\)_\(.*\)/\2 \1_\3/' |
#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
lubuntu 설치에서는 아무런 이점이 없으며 데비안에서는 패키지를 libc6-i686, libwine-bin, libwine-alsa, libwine-gl
i386 아키텍처에서만 사용할 수 있습니다.
답변2
그러면 설치된 패키지 목록이 생성됩니다.
적성검색-F '%100p' '~i!~M' > 소프트웨어 목록