Ubuntu

安裝與 32 位 Xubuntu 安裝相同的 64 位軟體包

  • April 3, 2013

我一直在使用虛擬機(Xubuntu 12.10,Windows 主機上帶有 VMWare)來完成我的所有程式工作,我正在嘗試將其從 32 位安裝轉換為 64 位安裝。我希望能夠在我的新 64 位 VM 中自動重新安裝我在 32 位 VM 中使用的所有軟體包。

閱讀這些說明後,我跑去sudo dpkg --get-selections獲取已安裝軟體包的列表,但許多軟體包都有:i386後綴。

有沒有簡單的方法來安裝相應的 64 位軟體包?在嘗試安裝它們之前,我是否可以安全地在我的包列表中替換:i386或類似的東西?:x86_64

這個問題的第一個答案使用你的建議,然後處理失去的包。在一些人的答案中,這是一個壞主意。另請注意,如果選擇添加 a: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 安裝上,這沒有給我任何東西,而在 debian 上,這些軟體包libc6-i686, libwine-bin, libwine-alsa, libwine-gl僅適用於 i386 架構

引用自:https://unix.stackexchange.com/questions/71002