Saya memiliki sistem 32-bit yang berjalan pada prosesor 64-bit. Bagaimana cara mengubahnya menjadi semua-64-bit, tanpa menginstal ulang? Saya telah melihat di suatu tempat bahwa itu dapat dilakukan sebagai hasil dari kerangka kerja Multiarch yang baru.
Jawaban yang Diterima:
TL;DR: Itu bisa dilakukan, tetapi rumit. Saya telah menguraikan alternatif di bagian bawah.
Sekarang deskripsi panjangnya , dan ambil dengan sebutir garam, karena saya mungkin tidak mengambil rute terbaik:
Itu mungkin, dan inilah yang saya lakukan selama dua malam terakhir:
Ada entri wiki yang menjelaskan cara jadul tanpa dukungan multiarch. Sangat membantu untuk memperbaiki paket yang rusak.
Untuk memigrasikan sistem dasar Anda, lakukan ini:
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
Beberapa paket Anda kemudian menjadi amd64, tetapi sebagian besar akan tetap i386. apt-get upgrade
akan menangani beberapa paket, apt-get -f install
akan memperbaiki beberapa kesalahan, tetapi sebagian besar paket akan tetap menggunakan i386. Jika Anda ingin mengatasinya, lewati bagian yang sulit
Menggunakan dpkg --get-selections | grep :i386
akan mengembalikan semua paket Anda, yang masih harus Anda migrasikan.
Ide saya selanjutnya adalah melakukan:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Tapi ternyata itu ide yang buruk:beberapa paket tidak tersedia di amd64 (mis. libc6-i686), apt-get akan bingung, dan banyak paket akan diinstal di kedua versi. Banyak pekerjaan manual dalam bakat yang harus dilakukan.
Lebih banyak kesulitan: Beberapa paket penting dapat diganti, sehingga Anda akan selalu menginstal binari untuk instalasi, tetapi beberapa paket harus dihapus dan diinstal lagi, mis. Saya punya masalah dengan tar. Saya mendapatkan paket di sistem lain, mengekstrak paket melalui ar p package.deb data.tar.gz | tar zx
lalu scp
edit file yang diekstrak melalui scp -r ./* [email protected]_computer:/
, sehingga binari tersedia lagi. Bilas dan ulangi, dan scp
file .ed akan ditimpa.
Apa yang akan saya lakukan sebagai gantinya
Saya telah melakukan hal berikut, setiap kali saya berpindah sistem:
Cadangkan /home
, /etc
(dan mungkin /var
, /usr/local
, beberapa file lain yang telah Anda ubah, /root
, …, YMMV).
Dapatkan daftar paket yang diinstal dengan dpkg --get-selections > packagelist
dan salin file yang dihasilkan packagelist
juga.
Kemudian lakukan instal ulang bersih Debian, buat semua pengguna lagi, mungkin peran, dll.
Instal ulang semua paket dengan dpkg --set-selections < packagelist; apt-get -f install
.
Salin kembali direktori yang dicadangkan, file, dan Anda sudah selesai.
Satu kelemahan dari pendekatan itu:Semua paket Anda, termasuk perpustakaan, akan ditandai sebagai diinstal secara manual, sehingga tidak akan dihapus instalasinya, ketika tidak ada paket yang bergantung padanya lagi.