dpkg에서 관리하는 파일로 가득 찬 삭제된 폴더를 복구하는 방법은 무엇입니까?

dpkg에서 관리하는 파일로 가득 찬 삭제된 폴더를 복구하는 방법은 무엇입니까?

/usr/share/man레이어 공간을 절약하기 위해 제거된 타사 Docker 이미지를 기반으로 대화형 Docker 컨테이너를 만들려고 합니다 . 이 폴더에 속한 모든 파일은 apt 패키지의 일부이며 그 외에는 정상적으로 작동합니다. 현재 설치된 패키지에 대해 삭제된 매뉴얼 페이지만 복원하고 싶습니다.

단일 패키지에 대한 이 문제에 대한 해결책은 다음과 같습니다.다시 설치해 보세요. 아마도 --reinstall컨테이너의 각 패키지에 다음과 같이 적을 것입니다.

apt-get --reinstall install \
    $(dpkg --get-selections | awk '$2=="install"{print $1}')

하지만 재구축될 때마다 시간과 대역폭을 많이 소모하는 프로세스에 의존하지 않고도 dpkg가 삭제된 폴더를 선택적으로 다시 생성하도록 하는 방법이 있습니까?

답변1

로컬 이미지에는 수정할 내용이 없으므로 영향을 받는 패키지를 다시 설치해야 합니다.

그러나 필요한 수리량을 최소화할 수 있습니다.

/usr/share/man루핑을 통해 어떤 패키지에 파일이 포함되어 있는지 확인할 수 있습니다 .

for pkg in $(dpkg --get-selections | awk '$2=="install" { print $1}')
do
  f=$(dpkg -L $pkg | grep /usr/share/man)
  if [ -n "$f" ]
  then
    echo $pkg has files in /usr/share/man
  fi
done

그런 다음 해당 패키지를 다시 설치할 수 있습니다.

/var/lib/dpkg/info/$pkg.infoman 파일을 보고 누락된 파일과 비교한 다음 해당 파일만 다시 설치하면 누락된 파일을 더욱 제한 할 수 있습니다 .

그러나 결국에는 다시 설치하게 될 것 같습니다.많은패키지. 내 Jessie 설치에서 703 패키지의 파일은 /usr/share/man. 이것은 설치된 2200 패키지보다 낫지만 여전히 많습니다. 네트워크 트래픽을 피하기 위해 로컬 미러링을 나타내는 것 같습니다.

관련 정보