64비트 프로세서에서 실행되는 32비트 시스템이 있습니다. 다시 설치하지 않고 어떻게 전체 64비트로 변환합니까? 어딘가에서 이것이 가능하다고 읽었습니다.새로운 다중 아키텍처 프레임워크.
답변1
간단히 말해서:이는 가능하지만 복잡합니다. 하단에 대안을 설명했습니다.
이제 긴 설명, 최선의 경로를 택하지 않을 수도 있으므로 소금 한 알씩 받아들이십시오.
가능합니다. 지난 이틀 밤에 제가 한 일은 다음과 같습니다. 구식 방식을 설명하는 위키 항목이 있습니다.다중 아키텍처 지원은 없습니다. 손상된 패키지를 복구하는 데 도움이 됩니다.
기본 시스템을 마이그레이션하려면,이 작업을 수행:
$ 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
패키지 중 일부는 amd64이지만 대부분은 여전히 i386입니다. apt-get upgrade
일부 패키지는 작업 중이고 apt-get -f install
일부 버그는 수정될 예정이지만 대부분의 패키지는 i386으로 유지됩니다. 이 문제를 해결하려면 까다로운 부분을 건너뛰세요 ;)
를 사용하면 dpkg --get-selections | grep :i386
마이그레이션해야 하는 모든 패키지가 반환됩니다.
내 다음 생각은 다음과 같습니다.
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
그러나 이것은 나쁜 생각임이 밝혀졌습니다. 일부 패키지는 amd64(예: libc6-i686)에서 사용할 수 없으며 apt-get은 혼란스럽고 두 버전 모두 많은 패키지를 설치합니다. 기능 측면에서 수행해야 할 수동 작업이 많이 있습니다.
더 많은 어려움:일부 중요한 패키지를 교체하여 항상 설치용 바이너리를 설치할 수 있지만 일부 패키지는 제거하고 다시 설치해야 합니다. 예를 들어 tarring할 때 이 문제가 발생했습니다. 다른 시스템에서 패키지를 가져오고 ed를 통해 패키지를 추출한 ar p package.deb data.tar.gz | tar zx
다음 scp
추출된 파일을 ed scp -r ./* root@other_computer:/
하여 바이너리를 다시 사용할 수 있게 되었습니다. 헹구고 반복하면 scp
ed 파일을 덮어쓰게 됩니다.
내가 뭘 할까?
시스템을 전환할 때마다 다음을 수행합니다.
/home
, /etc
(어쩌면 /var
,,, /usr/local
변경한 다른 파일,, /root
..., YMMV)를 백업하세요 .
설치된 패키지 목록을 가져오고 dpkg --get-selections > packagelist
결과 파일을 복사합니다 packagelist
.
그런 다음 데비안을 완전히 다시 설치하고 모든 사용자를 다시 생성하거나 역할 등을 생성합니다.
모두 다시 설치하십시오 dpkg --set-selections < packagelist; apt-get -f install
.
백업 디렉터리와 파일을 다시 복사하면 기본적으로 완료됩니다.
이 접근 방식의 한 가지 단점: 모든 패키지(라이브러리 포함)는 수동으로 설치된 것으로 표시되므로 더 이상 의존하는 패키지가 없으면 제거되지 않습니다.
답변2
여기에 대한 다른 답변은 이것이 이론적으로는 가능하지만 매우 복잡하고 노력할 가치가 없을 것이라고 제안합니다. 그러나 변경하지 않고 그대로 유지하면 $HOME
새로 설치를 수행하여 프로세스를 비교적 쉽게 만들 수 있습니다.
일반적인 과정은 다음과 같습니다.
설치된 패키지 목록과 자동으로 설치된 패키지 목록을 백업합니다.
dpkg --get-selections '*' > package.list apt-mark showauto >auto.list
다음을 사용하여 설치된 패키지 이름에서 아키텍처를 제거할 수도 있습니다.다중 아키텍처:
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
별도의 파티션이 있는 경우
/home
설치 시 포맷하지 않도록 주의하세요. 별도의 파티션에 있지 않은 경우 나중에 복원할 백업을 만드세요.tar cvzf home_backup.tgz $HOME/
새 시스템을 설치한 후 누락된 패키지를 설치합니다.
sudo dpkg --set-selections < package.list sudo apt-get update sudo apt-get dist-upgrade sudo apt-mark auto $(cat auto.list)
$HOME을 복원하세요. tgz 파일을 복사하여 $HOME 디렉터리에 추출합니다.
tar xvzf home_backup.tgz
당신은 또한 살펴보고 싶을 수도 있습니다도구Mint는 이를 더욱 쉽게 만들어주는 기능을 제공합니다. Ubuntu에도 모두 설치할 수 있어야 합니다.
답변3
이는 이론적으로는 가능하지만 위험할 수 있습니다. Debian multiarch는 현재 multiarch 라이브러리를 지원하지만 바이너리는 지원하지 않습니다. 그래서 그게 다입니다.
시스템은 기본적으로 자체 아키텍처 dpkg-architecture
(실제로는 Perl 스크립트이지만 아키텍처 정보를 추출하여 표시함)를 알고 있으며 다음도 수행할 수 있다고 주장합니다.놓다건축학.
경고: 저는 이것을 하고 있지도 않고 심지어 시도조차 하지 않습니다!
대략적인 과정은 다음과 같습니다.
- 모든 라이브러리의 다중 아키텍처 변형 설치(가장 중요
libgcc1
) dpkg-architecture -aamd64
아치 이동용(GCC에 대해 불평할 수 있음 )- 모든 필수 구성 요소를 다운로드하고 준비합니다(아래 참조).
- amd64 변형
dpkg
및 종속성 강제 설치 - 커널을 포함하여 기본 시스템 패키지의 amd64 변형을 강제로 설치합니다
apt-get
(불평이 많을 수 있습니다). - 재시작
- 아마도 나머지 시스템을 설치할 것입니다.
apt-get
이 단계는 지난 12년 동안 Linux 배포판에서만 거의 독점적으로 사용해 온 데비안 디자인에 대한 나의 지식을 기반으로 합니다(사용 포함).debtakeover
이전) 그리고 내가 취할 접근 방식. 그러니 이것에 대해 생각해보세요자신의 책임 하에 사용하세요. 4단계를 시도한 후에는 언제든지 시스템을 사용할 수 없게 될 수 있습니다. 4단계와 5단계를 번갈아 수행하세요.가능한예 debbootstrap
.
가장 중요한 것은 관심 있는 작업을 수행하기 전에 가상 머신에서 시도해 볼 것을 적극 권장한다는 것입니다.
당신과 행운을 빕니다포스가 함께하길.
답변4
질문에 대한 대답은 아니지만 x86에서 amd64로 모든 패키지를 업그레이드하는 것은 어려울 수 있지만 적어도 amd64 커널 패키지를 쉽게 설치할 수 있습니다. 이를 통해 최소한 64비트 애플리케이션은 물론 VM 및 컨테이너(아마도 당신의 필요에 충분합니다).
.amd64를 사용하여 linux-image 패키지를 설치하면 됩니다 dpkg -i --force-architecture
.