실수로 'dpkg-선택 취소'되돌리기


1

"제거 된"모든 패키지 만 "제거"하고 싶었습니다. 의 맨 페이지를 훑어 본 후 매개 변수가 트릭을 수행 할 것이라고 dpkg생각했습니다 --clear-selections. 그래서 바보로 입력하여 sudo나중에 선택 상태를 다시 확인하고 충격을 받았습니다.

dpkg 제거하기 위해 모든 (비 핵심) 설치 패키지를 선택했습니다!

이것은 물론 내 잘못이지만 분명히 의도 된 것은 아닙니다. 그렇다면 어떻게 되돌릴 수 있습니까?

우연히 명령 (85 패키지)과 이후 (2614 패키지)를 dpkg --get-selections | grep deinstall모두 실행 한 터미널 창이 열려 있습니다.

내가 지금 필요한 것은 두 번째 (현재) 하나에서 첫 번째 (이전) 제거 목록을 빼고 모든 패키지를 다시 원하는대로 표시하는 것입니다. manual응용 프로그램없이 설치하면 의미가없는 수백 개의 라이브러리에 영향을 미치므로 이를 설정하는 것은 좋지 않습니다. 따라서로 설정해야 auto하고로 선택 될 최상위 패키지를 수동으로 찾아야 할 것 manual입니다. 아니면 무언가가 나를 도울 수 있습니까?

정보 : 두 개의 별도 텍스트 파일이 있는데 하나는 첫 번째 --get-selections출력을 포함하고 다른 하나는 두 번째 출력을 포함합니다 . 여기에는 구문이있는 줄만 포함됩니다.

package-name         deinstall

여기서 package-name실제 패키지 이름과 그 사이의 공백은 정의되지 않은 수의 탭입니다.

업데이트 : 방금 필터링 dpkg --get-selections하지 않고 사고 전에 출력을 찾았습니다 grep! 그 후에 두 개의 패키지 만 설치되었으므로 나중에 수동으로 수정할 수 있습니다.

이전 패키지 선택을 복원하도록 도와주세요!


/var/lib/apt/extended_states그대로 아직? 그렇다면 백업하십시오!
Nephente

@Nephente 나는 여전히의 오래된 출력을 가지고 있음을 기억 한 후에 dpkg --get-selections문제를 해결할 수있었습니다.
바이트 사령관

답변:


1

현재 선택된 모든 패키지를 deinstall다시로 설정하려면 install다음 두 명령을 실행하십시오.

sudo dpkg --get-selections | awk '/deinstall/ {printf "%s\t%s\n",$1,"install"}' > packages
sudo dpkg --set-selections < packages

첫 번째 명령은 표시된 모든 패키지를 찾고 deinstall다음과 같은 패키지 목록을 작성합니다.

package-name         install

두 번째 명령은 패키지를 수정합니다.


의 최대 출력 경우 dpkg --get-selections에서 이전에 사고가 주어, 당신은 단순히 명령을 사용하여 모든 선택을 복원 할 수 있습니다

sudo dpkg --set-selections < packages

여기서 packages이전 출력을 보유한 파일의 이름입니다.


먼저 85 패키지가 올바르게 설치 제거되도록 설정된 이전 상태를 복원해야합니다. 따라서 나쁜 명령 전후에 두 출력을 모두 저장하고 다시 설정하는 두 파일의 차이점이 필요합니다. 둘째, 그것들을 무엇으로 설정할 것인가? 그것과 동일 apt-mark auto하거나 apt-mark manual또는 완전히 다른 뭔가?
바이트 사령관
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.