32 비트 (x86) 데비안 기반 시스템을 64 비트로 변환하는 방법 비트 시스템이 있습니다. 다시 설치하지

64 비트 프로세서에서 실행되는 32 비트 시스템이 있습니다. 다시 설치하지 않고 어떻게 64 비트로 변환합니까? 나는 새로운 Multiarch 프레임 워크 의 결과로 그것이 가능하다는 것을 어딘가에서 보았다 .



답변

TL; DR : 그것은 가능하지만 복잡합니다. 나는 바닥에 대안을 제시했다.

이제 가장 긴 길을 가지지 않았으므로 긴 설명 을 소금 알갱이로 가져 가십시오.

그것은 가능하며, 지난 2 박 동안 내가 한 일이
있습니다 . 다단계 지원없이 구식 방식설명하는 위키 항목이 있습니다 . 손상된 패키지를 수정하는 데 도움이됩니다.

기본 시스템을 마이그레이션하려면 다음을 수행하십시오 .

$ 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은 혼란 스러우며 많은 패키지가 두 버전 모두에 설치됩니다. 적시에 많은 수동 작업을 수행해야합니다.

더 어려운 점 : 일부 필수 패키지를 교체 할 수 있으므로 설치를 위해 항상 바이너리를 설치해야하지만 일부 패키지를 제거했다가 다시 설치해야합니다 (예 : tar에서이 문제가 발생했습니다). 다른 시스템에서 패키지를 가져 와서 패키지를 통해 추출한 ar p package.deb data.tar.gz | tar zx다음 scp추출 된 파일을 통해을 통해 scp -r ./* root@other_computer:/바이너리를 다시 사용할 수 있습니다. 헹구고 반복하면 scped 파일을 덮어 씁니다.

내가 대신 할 것

시스템을 전환 할 때마다 다음을 수행했습니다.

백업 /home, /etc(그리고 어쩌면 /var, /usr/local일부 다른 파일을 변경 한, /root, …, YMMV).

설치된 패키지 목록을 dpkg --get-selections > packagelist가져 와서 결과 파일 packagelist도 복사하십시오 .

그런 다음 데비안을 완전히 다시 설치하고 모든 사용자를 다시 만들고 역할 등을 만드십시오.

로 모든 패키지를 다시 설치하십시오 dpkg --set-selections < packagelist; apt-get -f install.

백업 된 디렉토리, 파일을 다시 복사하면 대부분 완료됩니다.

이러한 접근 방식의 한 가지 단점 : 라이브러리를 포함한 모든 패키지는 수동으로 설치된 것으로 표시되므로 더 이상 종속 패키지가없는 경우 제거되지 않습니다.


답변

다른 답변은 이론적으로는 가능하지만 매우 복잡하고 노력할 가치가 없다는 것을 보여줍니다. 그러나 $HOME동일한 설치를 유지하면 새로 설치하고 프로세스를 비교적 쉽게 처리 할 수 ​​있습니다 .

일반적인 과정은

  1. 설치된 패키지 목록과 자동으로 설치된 패키지 목록을 백업하십시오.

    dpkg --get-selections '*' > package.list
    apt-mark showauto >auto.list
    

    multiarch를 사용하여 설치 한 패키지 이름에서 아키텍처를 제거 할 수도 있습니다 .

    dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
    
  2. 귀하의 경우 /home별도의 파티션, 그냥 확인 설치 과정에서 포맷 할 수 없습니다. 별도의 파티션에 없으면 나중에 복원 할 수있는 백업을 만드십시오.

    tar cvzf home_backup.tgz $HOME/
    
  3. 새 시스템을 설치 한 후 누락 된 패키지를 설치하십시오.

    sudo dpkg --set-selections < package.list
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-mark auto $(cat auto.list)
    
  4. $ HOME을 복원하십시오. tgz 파일을 복사하여 $ HOME 디렉토리에서 추출하십시오.

    tar xvzf home_backup.tgz
    

Mint가 제공 하는 도구 를 살펴보면 이 작업을 쉽게 할 수 있습니다. 그들은 모두 우분투에도 설치 가능해야합니다.


답변

이론 상으로는 가능하지만 위험한 것 같습니다. 현재 데비안 multiarch는 multiarch lib를 지원하지만 바이너리는 지원하지 않습니다. 그게 있습니다.

이 시스템은 주로 자체 아키텍처 dpkg-architecture(실제로는 펄 스크립트이지만 아치 정보를 추출하여 표시)를 이해 하며 아키텍처 를 설정할 수 있다고 주장합니다 .


경고 : 나는이 심지어도 그것을하지 않은 IT !!!


대략적인 과정은 다음과 같습니다.

  1. 모든 라이브러리의 다중 아키텍처를 설치하십시오 (가장 중요합니다 libgcc1)
  2. dpkg-architecture -aamd64아치를 이동하는 데 사용 합니다 (참고 : GCC에 대해 불평 할 수 있음)
  3. 필요한 모든 구성 요소를 다운로드하여 준비합니다 (다음 참조).
  4. amd64 변형 dpkg및 종속성 강제 설치
  5. apt-get커널과 커널을 포함한 필수 기본 시스템 패키지의 amd64 변형을 강제 설치 합니다 (많은 불만이있을 수 있습니다)
  6. 재부팅
  7. 아마도 나머지 시스템을 apt-get

이 단계들은 지난 12 년 동안 리눅스 배포판들 (거의 사용했던 것 포함) 중에서 거의 독점적으로 사용한 데비안의 디자인 debtakeover과 내가 취할 접근법에 대해 알고 있습니다. 따라서이 모든 책임은 귀하에게 있습니다 . 4 단계를 시도한 후 언제든지 시스템을 사용할 수 없게 될 수 있습니다 . 4 단계와 5 단계의 대체 단계 다음과 같습니다 debbootstrap.

가장 중요한 것은 관심있는 작업을 수행하기 전에 VM에서 시도해 보는 것이 좋습니다.

행운을 빕니다. 그리고 힘이 당신과 함께 있기를 바랍니다 .


답변

질문에 대한 대답은 아니지만 x86에서 amd64로 모든 패키지를 업그레이드하는 것은 어려울 수 있지만 적어도 64 비트 응용 프로그램과 가상 시스템 및 컨테이너를 실행할 수있는 amd64 커널 패키지를 최소한 쉽게 설치할 수 있습니다 ( 필요한 것으로 충분할 수 있습니다).

로 amd64 linux-image 패키지를 설치하십시오 dpkg -i --force-architecture.


답변

거기에는 꽤 많은 매뉴얼이 있지만, 실제로 어떤 것이 실제로 기대되는지는 거의 보여주지 않습니다. 32 비트에서 64 비트로 업그레이드를 완료 한 데비안 Wheezy 노트북에서 이것을 작성하고 있으며 실제로 작동합니다.

나는이 지시를 따랐으며 실제로 당신이 직면하게 될 것에 대해 정확했습니다.

http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html

권장 사항은 전체 프로세스를 통해 시스템 전원을 유지하는 것입니다. 모든 항목을 마이그레이션했으며 제거 된 모든 항목이 다시 설치되었는지 (특히 필수 패키지) 확실하지 않은 경우 재부팅하지 마십시오. 그렇지 않으면 시스템이 다시 실행되지 않습니다.


답변

awk 사용 아이디어에 따라 다음 을 사용했습니다.

dpkg --get-selections \               # get the list
 | grep -v deinstall \                # throw away deselected packages
 | grep ':i386' \                     # get the i386 arch packages
 | sed 's/install//g' \               # drop 'install' to get list
 | sed 's/:i386/:amd64/g' \           # replace i386 with amd64
 | while read package; do \           # iterate over the result
      apt-get -yf install $package; \ # install each one and fix dependencies
   done

나는 그것을 몇 번 실행해야했다. dpkg --get-selections는 알파벳순 목록이므로 맨 아래에있는 패키지가 필요한 맨 위에있는 패키지가 전달됩니다. 설치중인 수를 보려면 루프 dpkg --get-selections | grep amd64 | wc -l내부에서 수행 하십시오 while.


답변

나는 그 문제에 대해 거의 경험이 없지만 32에서 64로 변환하면 다중 아키텍처를 사용할 수 있어야한다고 말했을 때 정확하다고 생각합니다. 이 새로운 시스템이 얼마나 잘 지원되는지에 대해서는 신중해야합니다.

다음은 내가 읽은 문서 중 하나입니다. 아마 도움이 될 것입니다 : https://wiki.ubuntu.com/MultiarchSpec

세 번째 사용자 사례를 확인하십시오. 동일한 주제와 관련된 또 다른 링크는 다음과 같습니다.
https://help.ubuntu.com/community/MultiArch

데비안과 우부 누투 사이에는 다소 차이가있을 수 있지만 이것은 핵심 기능입니다. 우분투와 데비안은 우분투가 떠나기 전에이 구조가 제대로 작동하도록하기 위해 긴밀히 협력 할 것이라고 생각합니다.

행운을 빕니다!