모든 데비안 패키지 재설치

백그라운드에서 실행중인 dpkg 프로세스를 실수로 죽였으며 모든 것이 정상인지 확인하기 위해 모든 패키지를 다시 설치하고 싶습니다.

먼저 모든 패키지 목록을 가져 와서 다시 설치하려고했습니다.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log apt-get install --reinstall $(cat list.log) 

하지만 다음과 같은 메시지가 있습니다.

E: Couldn"t configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. 

apt-get -f install를 시도했지만 성공하지 못했습니다.

마지막 수단으로 실패한 모든 프로그램을 다시 설치했습니다. 체크섬 :

dpkg -l | grep ^ii | awk "{ print $2 }" | xargs debsums -s -a 

모든 것을 다시 설치하려면 어떻게해야합니까?

편집 : 문제가 해결되었습니다. 문제는 다른 것입니다 (댓글 참조). 하지만 데비안에서는 피해야 할 일임을 이해합니다.

댓글

  • 최근에 패키지를 설치하는 동안 충돌이 발생했습니다. 재부팅 할 때 패키지를 다시 설치하려고했을 때 " E : dpkg가 중단되었습니다. 수동으로 ' dpkg –configure를 실행해야한다는 메시지를 받았습니다. -a ' 문제를 해결합니다. ". 해당 명령을 실행하면 해당 패키지와 구성 파일이 제거되었습니다. 그런 다음 패키지를 처음부터 시작합니다. 명령을 실행 해보세요.
  • 아무것도하지 않았으므로 ' 아무것도 작동하지 않는 것 같습니다. 나중에 확인해 보겠습니다. 내 드라이버 문제가 해결되었습니다.
  • 모든 패키지 재설치 == 정말 나쁜 생각입니다. (a) ' 거의 항상 불필요합니다. (b) 실패 할 것입니다 ( c) 시스템이 너무 심하게 엉망인 경우 다시 설치하고 실제로 보이는 문제를 수정하십시오.

답변

내가 하지 테스트 :

dpkg --get-selections > selections sudo dpkg --clear-selections sudo dpkg --set-selections < selections sudo apt-get --reinstall dselect-upgrade 

출처 :

댓글

  • 내 문제 완전히 달랐습니다. 올바른 커널 (!)을 부팅하지 않았습니다. 내가 원하는대로 수행하는 것 같지만 (테스트되지 않은 경우도 있음) 답변을 수락하겠습니다.
  • 이 방법은 작동하지 않고 ' 시스템을 완전히 망가 뜨립니다. 3 행은 apt를 제거하므로 ' 나중에 모든 것을 다시 설치할 수 없습니다.
  • @rkjnsn : 답변을 업데이트했습니다. 작동하는지 확인했습니다.
  • 선택 파일이 채워져 있지만이 작업을 수행하려고하면 아무것도 다시 설치되지 않습니다. pi @ prodpi ~ $ sudo apt-get –reinstall dselect-upgrade 패키지 목록 읽기 … 완료 종속성 트리 읽기 상태 정보 … 완료 0 업그레이드, 0 새로 설치, 0 제거 및 0 업그레이드되지 않음. 어떤 생각이 있으신가요?
  • 코드가 ' 작동하지 않는다고 생각하는 한 가지 이유는 dpkg --get-selections 명령 목록도 제거하기 때문입니다. 패키지.

답변

Aptitude를 사용하면 쉽고 빠른 방법이 있습니다.

sudo aptitude reinstall "~i"

현재 설치된 모든 패키지를 다시 설치합니다.

댓글

  • 멋지고 간결합니다!

답변

경우에 따라 각각 다시 설치해보십시오. 패키지 :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done 

모든 질문 옵션에 예라고 대답 할 수도 있습니다.

답변

Lucas Malor가 인용 한 자원 중 하나 에서 Populator라는 스크립트를 발견했습니다. 솔루션 근처. 패키지 선택 변수를 모든 패키지 목록으로 설정하면

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

스크립트를 실행하고 모든 패키지를 다시 설치할 수 있습니다. 그러나 시스템에 몇 가지 문제가있을 수 있습니다. 먼저 가상 머신에서 테스트하는 것이 좋습니다.

다음은 위 링크의 스크립트 변형입니다.

#!/bin/bash # # Script to pre-populate apt-get proxy for faster later downloads. # It uses apt-get and wget to pull all the specified packages. # # Make sure only root can run our script if [[ $EUID -ne 0 ]]; then echo "You"re not root, are you?" 1>&2 exit 1 fi # Specify wanted packages PKGLIST="exaile" # Clears out the local repository of retrieved package files apt-get clean # Resynchronize the package index files from their sources apt-get update # Re-install specified packages at the newest version. apt-get install --reinstall $PKGLIST 

특정 패키지를 다시 설치할 수 없다는 오류가 표시되면 다음 명령을 실행하여 다시 시도하십시오.

sudo apt-get -y autoremove 

답변

대신이 방법을 사용하면 출력을 가져 와서 파일 이름을 구분하는 공백으로 하나의 큰 줄을 만들 수 있습니다.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log awk "$1=$1" ORS=" " list.log > newlist.log apt-get install --reinstall $(cat newlist.log)

원래 게시물에 대한 유일한 변경 사항은 두 번째 awk 문에 추가하는 것입니다. 이는 아마도 첫 번째 파일을 만드는 데 인라인으로 수행 할 수 있습니다.

이 변경 사항은 강제로 적용됩니다. 처음에 설치되지 않은 패키지 및 누락 된 종속성을 올바르게 다시 다운로드하고 순서대로 다시 설치하십시오.

인라인으로 만들면 다음과 같이 보일 것이라고 생각합니다.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" | awk "$1=$1" ORS=" " > list.log

그런 다음 시스템에 올바른 패키지 (또는 최신 패키지)가 있는지 확인하고, 적절한 캐시를 정리하고, 업데이트 한 다음 모든 파일을 다시 다운로드합니다 (캐시에있는 것만 원하는 경우 처음 두 단계를 건너 뛸 수 있음). 재설치 됨) :

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

업그레이드 한 시스템에 2k 개가 넘는 패키지가 설치되어있어 중단되었습니다. dpkg –configure -a를 사용하여 설치를 완료했습니다 (마지막 단계에 있음). 그런 다음이 작업을 실행하여 모든 것이 올바르게 재설치되었습니다.

또는 https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data 에 명시된대로 :

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w "install$" | cut -f1)

X 또는 X의 일부 구성 요소가 있으므로 다시 설치하기 전에 먼저 “init 2″를 실행해야합니다. 자주 사용하는 창 관리자가 다시 설치하는 것을 좋아하지 않을 수 있습니다.

댓글

  • ' IFS를 수정하지 않은 경우 , 인용되지 않은 $(cat file)는 모든 공백을 토큰 화하고 파일이 줄 바꿈으로 구분 되든 공백으로 구분 되든 정확히 동일한 결과를 제공합니다. --reinstall가 도움이 될 수 있지만 이전에 이미 두 번 제공되었습니다.

답변

apt를 통해이 작업을 수행하는 것은 매우 간단합니다.

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

apt list --installed 부분은 추측 한대로 수행합니다. | 문자는 apt 명령의 표준 출력을 cut 명령. cut --delimiter=/ 부분은 cut 명령에 /를 구분자로 사용하고 --fields=1cut에 첫 번째 필드, 즉 첫 번째 / 앞의 텍스트를 사용하도록 지시합니다. apt list --installed 명령의 출력에 나타납니다. 이 경우 cut 명령의 결과는 apt list --installed 명령.

다음 |는 설치된 모든 목록 인 cut 명령의 표준 출력을 파이프합니다. 패키지를 xargs 명령의 표준 입력에 추가하면 현재 설치된 각 패키지에 대해 apt reinstall -y가 차례로 호출됩니다. .

참고 : 적절한 구성에 따라 apt reinstall -y 부분은 현재 설치 한 정확한 버전 대신 기존 패키지에 대한 업데이트를 설치할 수 있습니다.

답변

사용시 RPM, 패키지 데이터베이스에 손상이 발생한 경우이 데이터베이스를 재 구축 할 수있는 옵션이 있으므로 b를 거치지 않아도됩니다. asically 재설치. 한 사용자가 지적했듯이 이것은 데비안에서 dpkg --configure -a에 의해 수행됩니다.

댓글

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다