우분투 이미지를 설정했고 이를 하드 드라이브를 통해 오프라인 시스템으로 전송할 준비가 되었습니다. 이미지에 필요한 모든 패키지가 있는지 확인하고 누락된 패키지를 이미지에 추가하고 싶습니다. 이미지의 /var/spool/apt-mirror
크기는 120GB이며 수백 개의 .deb 파일이 포함되어 있습니다. 이 두 가지 작업을 어떻게 수행합니까?
(1) 패키지가 존재하는지 확인하려면 어떻게든 패키지를 사용하여 dpkg
내 미러를 가리키고 내 패키지가 미러 어딘가에 있는지 물어봐야 한다고 가정합니다. 어떻게 해야 하나요? 내가 시도했지만 실패한 것은 다음과 같습니다.
dpkg --info /var/spool/apt-mirror/ astyle
dpkg-deb: error: error reading archive magic version number from file /var/spool/apt-mirror/: Is a directory
어쩌면 그 명령을 어떻게든 사용해야 할까요 apt-cache
?
(2) 패키지가 분실되었다고 가정하면 거울에 어떻게 넣나요? deb 파일을 찾아서 이미지 "풀"의 아무 곳에나 복사하면 되나요? 예를 들어, 다음 패키지를 원한다고 가정해 보겠습니다.
apt-cache showpkg astyle
Package: astyle
Versions:
2.01-1 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages)
패키지는 분명히 내 로컬 캐시에서 사용할 수 있습니다(그러나 내 준비 컴퓨터에는 설치되어 있지 않습니다). 거울로 어떻게 옮기나요?
답변1
패키지가 디렉토리 트리 어딘가에 있는지 확인하려면 를 사용할 필요가 없습니다 dpkg
. find
파일이 있는지 확인하는 것뿐입니다. .deb
파일이라는 사실은 거의 관련이 없습니다.
예를 들어
find /var/spool/apt-mirror/ -name 'astyle*.deb'
많은 파일에 대해 이 작업을 반복적으로 수행하려는 경우 출력을 find /var/spool/apt-mirror/ -type f
파일로 리디렉션한 다음 해당 파일에 대한 검색을 사용하는 것이 좋습니다. 이는 grep
매번 검색을 한 번 실행하는 것보다 훨씬 빠릅니다.find
이미지에서 패키지가 누락된 경우(그리고 미러링 중인 저장소에 있는 경우) apt-mirror
구성을 확인하고 다시 실행하십시오 apt-mirror
.
패키지가 이미지에 있어야 하는지 확인하려면 grep
관련 Packages
파일을 살펴보세요. 예를 들어, jessie의 zfsonlinux 아카이브 미러가 있으므로 spl
패키지가 해당 저장소에 있어야 하는지 알고 싶다면 다음을 수행합니다.
# grep 'Package: spl$' /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages
Package: spl
또는
# find /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/ -name 'Packages' -exec grep 'Package:\ spl$' {} +
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie-daily/main/binary-amd64/Packages:Package: spl
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages:Package: spl