패키지 설치 전에 dselect 선택 재설정

패키지 설치 전에 dselect 선택 재설정

로 패키지 목록을 살펴보던 중 실수로 두 번 dselect눌러 옵션 Return을 확인하고 종료하게 되었습니다 [S]elect.

옵션 으로 이동하면 [I]nstall이제 내가 원하지 않는 여러 새 패키지를 설치하라는 메시지가 표시됩니다(처음에 내가 찾던 것과는 아무 관련이 없습니다).

설치 자체를 진행하지 않았으므로 목록을 하나씩 살펴보고 -각 패키지를 누르지 않고 새 패키지를 선택하기 전의 선택 사항으로 선택을 재설정할 수 있는 방법이 있습니까? ( dselect다른 관련 명령을 통해 수행되었는지 여부는 중요하지 않습니다 .)

편집: (예제 추가)

dselect설치된 다른 컴퓨터에서 시도해 보았습니다 . 패키지가 설치되지 않았다고 가정해 보겠습니다 gnugo(단순한 예일 뿐입니다).

  • 목록을 가져오려면 실행 delect하고 선택하세요 .[S]elect
  • gnugo이 목록에서 을 검색하십시오 ( /에 익숙하지 않은 경우 를 사용 dselect).
  • 로 선택하세요 +.
  • Return제안 사항을 확인하려면 버튼을 누르고 Return다시 확인하려면 기본 메뉴로 돌아갑니다(제가 저지른 실수입니다).
  • 이동 [I]nstall. 이제 다음과 같이 표시됩니다.

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following NEW packages will be installed
      gnugo:i386 libgpm2:i386 libncurses5:i386 libreadline6:i386 libtinfo5:i386
    0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1,926 kB of archives.
    After this operation, 9,634 kB of additional disk space will be used.
    Do you want to continue [Y/n]? 
    
  • 여기서는 계속하지 않음( n)을 선택하세요.

  • 그만두다 dselect.
  • dpkg --get-selections | grep gnugo전혀 아무것도 산출하지 않습니다.
  • 다시 시작 dselect하고 바로 다시 진행하면 [I]nstall설치를 위해 패키지가 계속 선택됩니다.

물론 [S]elect목록으로 돌아가서 를 검색하고 gnugo눌러서 _선택을 취소할 수 있지만 더 복잡한 경우에는 새 패키지 목록을 하나씩 살펴보아야 할 수도 있습니다.

[I]nstallin은 dselect시각적으로 의 프런트 엔드이지만 apt-get install선택 항목이 어디서 나오는지 잘 모르겠습니다. dpkg --get-selection그렇지 않은 것 같습니다 . 관련해서는 , 로 만든 모든 것이 그대로 유지되는 dselect상태로 재설정하고 싶지만 지금 은 제안된 목록을 수동으로 거치지 않고도 only로 표시된 (아직 설치되지 않음) 것으로 돌아가는 상태로 돌아가고 싶습니다 . 메뉴 에서 .*****__[I]nstall

편집 2:

/var/lib/dpkg/status이는 다음 항목이 포함된 의 내용과 분명히 관련되어 있습니다 .

Package: gnugo
Status: install ok not-installed
Priority: optional
Section: games

이것을 수동으로 로 변경하면 의 Status: deinstall ok not-installed선택 항목에서 사라집니다 dselect.

내가 원하는 것은 무엇이든 말하는 것을 바꾸는 일반적인 방법입니다 Status: install ok not-installed( Status: deinstall ok not-installed패키지는 영향을 받지 않은 상태로 둡니다 Status: install ok installed).

답변1

--set-selections* 인수를 사용하여 다음을 수행합니다 dpkg.

echo "<package-name> purge" | dpkg --set-selections

apt-get dselect-upgrade그런 다음 을 사용하여 선택한 패키지를 적용 할 수 있습니다 .


설치하도록 선택했지만 아직 설치되지 않은 패키지를 찾아야 하는 경우(선택 사항을 되돌릴 수 있음) 다음을 사용하십시오.

dpkg --get-selections | awk '{ if ($2=="install") print $1}' | grep -vF "$(dpkg -l | awk '/^ii/ {print $2}')"

약간 더 멋져지고 다시 로 파이프 --set-selections하면 아직 설치되지 않은 항목을 자동으로 선택 취소할 수 있습니다.

dpkg --get-selections | awk '{ if ($2=="install") print $1,"deinstall"}' | grep -vF "$(dpkg -l | awk '/^ii/ {print $2}')" | dpkg --set-selections

*또한 를 사용하여 dpkg --get-selections모든 명시적 선택 항목을 나열할 수도 있습니다. 필요한 형식도 표시됩니다 --set-selections.

답변2

dpkg --get-selections설치용으로 표시된 항목과 아직 설치되지 않은 항목은 나열되지 않지만, 이 dpkg -l '*'줄은 in.

결과적으로 다음 줄은 이러한 선택을 재설정합니다.

dpkg -l '*' | grep '^in ' | awk '{ print $2 " deinstall" }' | dpkg --set-selections

답변3

사용적성'에스검색 기능목록을 얻으려면.

aptitude -F '%p' search '~ainstall !~i'

dpkg --set-selections제거할 항목으로 표시하려면 목록을 전달하세요 .

aptitude -F '%p deinstall' search '~ainstall !~i' | dpkg --set-selections

여담: 21세기에 오신 것을 환영합니다. Dselect 대신 Aptitude로 전환하는 것이 좋습니다.

관련 정보