Instale os mesmos pacotes de 64 bits como uma instalação do Xubuntu de 32 bits

2

Eu tenho usado uma máquina virtual (Xubuntu 12.10, com VMWare em um host do Windows) para todo o meu trabalho de programação, que estou tentando fazer a transição de uma instalação de 32 bits para uma de 64 bits. Espero poder reinstalar automaticamente todos os pacotes que tenho usado na VM de 32 bits em minha nova VM de 64 bits.

Ao ler estas instruções , corri sudo dpkg --get-selections para obter uma lista de aplicativos instalados pacotes, mas muitos dos pacotes têm um sufixo :i386 .

Existe uma maneira fácil de instalar os pacotes de 64 bits correspondentes? Estou seguro para substituir :i386 por :x86_64 ou algo semelhante na minha listagem de pacotes antes de tentar instalá-los?

    
por Ben 03.04.2013 / 12:36

2 respostas

1

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

    
por 03.04.2013 / 15:16
0

Isso gera uma lista dos pacotes instalados:

aptitude search -F '%100p' '~i!~M' > softare-list

    
por 03.04.2013 / 18:35