우분투를 다른 플랫폼으로 마이그레이션 할 때 설치된 응용 프로그램을 어떻게 보존합니까?
문제
나는 오래된 AMD64에서 새로운 인텔 듀얼 코어로 32 비트 인 새로운 인텔 듀얼 코어로 이동하는 것을보고 있습니다. 설치는 문제가되지 않지만 설치된 모든 앱을 전송할 수 있습니까? 마이그레이션이 비슷한 플랫폼과 파일 시스템을 제외하고 Google에서 지금까지 아무것도 찾을 수 없었습니다. 파일 시스템을 변경하지는 않지만 플랫폼은 다릅니다. Gentoo의 "World"파일의 줄에 무언가가 있습니까?
해결책
패키지 목록을 쉽게 저장할 수 있습니다. "Man DPKG"를 참조하고-세트 선택 및-Get-Secection을 검색하십시오.
그러나 그것의 기본은 패키지 목록을 저장하는 것입니다.
dpkg --get-selections > package_list
다른 시스템에서 해당 목록을 복원하려면 :
cat package_list | sudo dpkg --set-selections && sudo apt-get dselect-upgrade
아키텍처를 가로 질러 이동하면 일부 패키지를 사용할 수 없을 것입니다. 그들은 무시 될 것입니다. 예를 들어, ia32-libs
32 비트 시스템에서는 설치할 수 없습니다. X86-64에서 X86으로 이동하면 그 선택이 무시됩니다.
다른 팁
재미, 여기서 나는 Howto Repository (질문을 작성한 다음 내 대답을 선택하십시오)로 사용하고 있었지만, 내 자신의 대답을 쓰는 데 걸렸을 때, 나는 펀치 3 번에 맞았습니다!
어쨌든, 여기에 기록을 세우고 있습니다.
DPKG의-GET-SELECTIONS 및-세트 선택 옵션을 사용하여 현재 설치된 패키지를 캡처하고 선택하십시오.
먼저 이전 시스템에서 현재 패키지 목록을 내보내십시오.
sudo dpkg --get-selections > mypackages.txt
그런 다음 새 시스템에 설치할 패키지 로이 목록을 선택하십시오.
sudo dpkg --set-selections < mypackages.txt
(추가 크레딧은 APT 캐시 디렉토리를 복사하여 다운로드를 최소화하십시오. /var/cache/apt)
마지막으로 선택한 패키지를 다운로드하여 설치하도록 APT에 알려주십시오.
sudo apt-get dselect-upgrade
APT-GET을 사용하여 설치 한 모든 것에 대해 설치된 내용에 대한 레코드를 작성하려면 다음을 실행하십시오.
dpkg -l|awk '/^ii\s*(.*)\s*/ {print $2}'|packages.txt
설치 한 모든 패키지가 포함 된 텍스트 파일이 생성됩니다. 그런 다음 설치 후 다음과 함께 스크립트를 작성하고 실행합니다.
#!/bin/sh
for p in $(cat packages.txt); do apt-get install $p; done
메모:
1) 64 비트에서 32 비트로 이동하기 때문에 일부 패키지는 호환되지 않을 수 있습니다. 위의 스크립트를 실행하기 전에 '64'에 대한 패키지를 grep하고 필요한 경우 대안을 찾으십시오.
2) 소스에서 설치 한 내용은 소스에서 다시 메모하고 설치해야합니다.
행운을 빕니다!
(나처럼) 시스템을 엉망으로 만들기 전에이 작업을 수행하지 않았다면 라이브 CD 나 다른 설치로 부팅하고 Chroot를 사용 하여이 정보를 얻을 수 있습니다.
sudo chroot /path/to/old/system /bin/bash
그런 다음하십시오 dpkg --get-selections
춤을 추고 결과 파일을 사용하여 새 시스템을 설정할 수 있습니다.
이것은 일반적으로 비슷한 문제를 해결하기 위해하는 일입니다 (새 노트북으로 여러 번 마이그레이션).
이 질문에 대한 다른 답변에 두 가지 추가 사항이 있습니다. 이것은 또한 당신의 update-alternatives
그리고 debconf
전송되지 않았다는 것을 깨닫는 데 항상 오랜 시간이 걸리는 설정.
기존 시스템의 백업 :
sudo apt-get install dselect debconf-utils
mkdir system-selections
update-alternatives --get-selections > system-selections/alternatives-selections
dpkg --get-selections '*' > system-selections/dpkg-selections
sudo debconf-get-selections > system-selections/debconf-selections
구성 디렉토리를 뉴스 시스템에 복사합니다 ( "scp -r oldsystem:system-selections ~
"):
sudo apt-get install dselect debconf-utils
sudo dselect update
sudo dpkg --set-selections < system-selections/dpkg-selections
sudo debconf-set-selections < system-selections/debconf-selections
sudo apt-get -u dselect-upgrade
sudo update-alternatives --set-selections < system-selections/alternatives-selections
또한 동일한 방법을 사용하여 홈 디렉토리의 백업을 정기적으로 가져 와서 system-selections
(위에서 언급) 원격 저장소에. 따라서 노트북이 깨지거나 도난당하는 경우 비슷한 시스템을 구축하는 것이 매우 빠릅니다.
이것이 대답인지 확실하지 않지만 Aptitude-chreate-state-bundle 명령의 존재를 발견했습니다. 예, 그것은 하나의 명령입니다. Man Page를 확인하십시오.
내가 생각할 수있는 가장 좋은 방법은 현재 시스템에 설치된 패키지 목록을 백업 한 다음 해당 목록을 사용하여 새 시스템에 설치할 패키지를 설정하는 것입니다. 패키지 선택을 백업하고 복원하는 방법에 대한 일반 지침 :
도구를 설치하십시오
sudo apt-get install dselect
백업 패키지 목록
dpkg --get-selections | grep -v deinstall > ubuntu-files
패키지 선택을 복원하십시오
sudo apt-get update
sudo apt-get dist-upgrade
dpkg --set-selections < ubuntu-files
sudo dselect
이것은 dselect 세션을 열 것입니다. 'i'를 입력하고 dselect가 Ubuntu-Files 문서에 나열된 패키지를 설치하도록 허용하십시오. 완료되면 'Q'를 입력하고 Enter 키를 누르면 dselect를 종료하십시오.