업데이트를 기본 시스템에 적용하기 전에 테스트하기 위해 가상 머신에 스테이징 환경을 설정하려고 합니다.
이를 위해 VM(메인 시스템과 동일)에 Debian Wheezy의 기본 설치를 수행한 다음 VM에서 루트로 실행했습니다.
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
불행하게도 제 경우에는 i386 아키텍처가 필요합니다. 시스템은 amd64 기반입니다.
문제는 dpkg --set-selections
가상 머신에서 실행 중입니다. 특별한 처리가 필요한 일부 패키지가 있지만(실제로 이것이 제가 처음에 스테이징 환경을 원하는 주된 이유입니다), 위의 마지막 명령을 실행하면 다음과 같은 끝없는 출력 줄이 표시됩니다.
dpkg: warning: package not in database at line NNN: package-name
기본 시스템에서 실제로 사용할 수 있어야 하는 패키지의 경우. 예를 들면 xterm
, yelp
및 가 있습니다 zip
.
이제 내 질문은 다음과 같습니다.
패키지 선택 목록을 한 데비안 시스템에서 다른 데비안 시스템으로 이동하는 구체적인 프로세스는 무엇입니까?(Wheezy에서 동일한 Debian 버전 수준을 가정)그런 다음 해당 변경 사항을 나중에 적용하시겠습니까?목표는 둘 다 동일한 설치된 패키지 목록을 갖는 것이며 이상적으로는 둘 다 diff
출력 사이나 출력 후에 dpkg --get-selections
차이가 표시되지 않습니다 .dpkg --list
이 grep -v deinstall
부분은 다음에서 빌려온 것입니다.완료 후 패키지 삭제 방지dpkg --set-selections
우분투에 대한 질문으로 마무리했습니다.
가상 머신의 소스를 기본 시스템과 동일하게 변경했으며 다음과 같이 설치했습니다 apt-transport-https
.
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
--set-selections 출력을 보면 다음과 같습니다.
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
줄 번호가 이상해 보이고 --get-selections 출력의 해당 부분은 다음과 같습니다.
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
과 acl
사이 aglfn
에는 acpi-support-base
, acpid
그리고adduser
보고된 오류 없음. 오류를 보고하는 패키지는 오류를 un
기반으로 dpkg -l
하거나 dpkg -l
단순히 오류를 인식하지 못하는 것 같습니다 ( dpkg-query: no packages found matching ...
). 로컬에 설치된 패키지가 일부 있다는 것을 알고 있지만 많지는 않습니다. i386
~까지gcc-4.7-base:i386 install
많은목록 아래로 더 내려가세요(--get-selections 출력의 342번째 줄).
답변1
데비안 설치를 복제하려면 다음을 사용하세요.apt-clone
유용. wheezy부터 Debian(기본 설치의 일부가 아닌 별도 패키지)에서 사용할 수 있으며, 12.04부터는 Ubuntu에서 사용할 수 있습니다. 기존 머신에서 다음을 실행하세요.
apt-clone clone foo
그러면 파일이 생성됩니다 foo.apt-clone.tar.gz
. 대상 머신에 복사하고 실행하십시오.
apt-get install apt-clone
apt-clone restore foo.apt-clone.tar.gz
이 기능을 사용할 수 없는 이전 시스템을 사용 중이 apt-clone
거나 구성 파일이 아닌 설치된 패키지 목록만 복사하려는 경우 아래 수동 단계를 따르세요.
소스 머신에서:
cat /etc/apt/sources.list /etc/apt/sources.list.d >sources.list dpkg --get-selections >selections.list apt-mark showauto >auto.list
대상 머신에서:
cp sources.list /etc/apt/ apt-get update /usr/lib/dpkg/methods/apt/update /var/lib/dpkg/ dpkg --set-selections <selections.list apt-get dselect-upgrade xargs apt-mark auto <auto.list
나는 당신이 dpkg의 호환되지 않는 변경으로 인해 처음에 숨이 막힐 정도로 영향을 받았다고 생각합니다. 바라보다버그 #703092배경.
즉 , dpkg --set-selections
파일 /var/lib/dpkg/status
이나 /var/lib/dpkg/available
./var/lib/dpkg/available
실행 후와 apt-get update
실행 전에 다음 명령을 실행합니다.dpkg --set-selections
apt-get -u dselect-upgrade
apt-cache dumpavail >/tmp/apt.avail
dpkg --merge-avail /tmp/apt.avail
jessie부터 시작하면 다음과 같이 단순화할 수 있습니다.
apt-cache dumpavail | dpkg --merge-avail
또는 다음을 실행하십시오.
/usr/lib/dpkg/methods/apt/update /var/lib/dpkg/
훨씬 더 간단하다
apt-get install dctrl-tools
sync-available
추가 패키지를 설치할 필요 없이 패키지 목록을 다시 다운로드하는 또 다른 간단한 방법은 다음과 같습니다.
dselect update
보다dpkg FAQ더 많은 정보를 알고 싶습니다. (이것은 dpkg 매뉴얼 페이지에 언급되어 있지만 문제를 해결하는 방법을 설명하는 방식보다는 이미 문제를 알고 있는 경우 이를 경고하는 방식에 더 가깝습니다!)
복제 패키지를 설치해도 dpkg --set-selections
APT의 자동/수동 태그 지정이 복원되지 않습니다. 바라보다dpkg --set-selections '*'에서 모든 데이터 및 종속성을 복원합니다.자세한 내용은. 다음을 사용하여 소스 시스템에 태그를 저장할 수 있습니다.
apt-mark showauto >auto.list
대상 시스템으로 복원
xargs apt-mark auto <auto.list
답변2
내가 어떻게 했어?
존재하다원천주인:
apt-get update && apt-get dist-upgrade dpkg --get-selections >/tmp/source.sel cat /etc/apt/sources.list
사용에 대한 고민
/etc/apt/sources.list.d
...그런 다음 복사
source.sel
파일을 대상 호스트로 보냅니다.존재하다목적지주인:
vi /etc/apt/sources.list
적응하다소스.목록거울은 달라도 똑같아요소목록.
apt-get update
dselect update
dselect upgrade
dpkg --set-selections </tmp/source.sel
dselect install
그리고 지금, 내대상 호스트현재 설치 중인 것들이 많아서 포스팅하는 데 시간이 좀 걸릴 것 같습니다.