적절하게 명확하게솜씨가 좋고 아직 자격이 있습니다.설치된 것으로 표시하고 다시 설치하세요.

적절하게 명확하게솜씨가 좋고 아직 자격이 있습니다.설치된 것으로 표시하고 다시 설치하세요.

나는루비수년에 걸쳐 축적되어 디스크 공간을 차지하는 오래된 커널을 제거하는 데 도움을 줍니다. (내 노트북에는 19개의 코어가 있고 작은 SSD가 있습니다...)

일부 사람들은 aptitude를 설치하지 않고 gem 사용자가 아무것도 설치하지 않기를 원하기 때문에 apt-get 또는 dpkg를 제거 프로그램으로 사용하고 싶습니다.

문제는 이럴 때 온다.일부aptitude사용자는 이를 다른 목적 으로 사용합니다 . 상상하다:

  1. 사용자가 apt-get purge내 gem을 사용하여 커널 패키지를 성공적으로 얻었습니다.
  2. aptitude어떤 이유로든 사용자가 대화형 모드에서 시작합니다.
  3. 사용자는 변경 사항을 표시하지 않고 즉시 "g" 키(Pkg 다운로드/설치/제거)를 누릅니다. -->
  4. aptitude제거된 패키지를 다시 다운로드하고 다시 설치합니다 apt-get.

현재 gem은 apt-get purge <packages>커널 패키지를 지우는 데 사용됩니다. (여기서 본.) 나도 시도해 보았지만 dpkg --purge <packages>결과는 동일하며 적성은 여전히 ​​다시 설치하고 싶어합니다.

나는 전체 aptitude매뉴얼을 읽고 많은 것을 검색했지만 주사위는 없었습니다.

아마도그것이 어디에 있는지 찾을 수 있다면 태그가 있거나 태그가 지정되지 않은 패키지 목록을 프로그래밍 방식으로 관리할 수 있습니다 aptitude(비록 저는 더 깔끔한 솔루션을 선호하지만). 그렇지 않다고 가정합니다. /var/lib/dpkg/status그렇지 않으면 차이가 없을까요?

dpkg-query는 패키지를 status로 표시 Not하고 desired상태를 Unknown.

deKernel$ dpkg-query -l linux-image-3.2.0-39-generic
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                       Version                                    Description
+++-==========================================-==========================================-====================================================================================================
un  linux-image-3.2.0-39-generic               <none>                                     (no description available)
deKernel$

aptitude로 가서 이러한 커널 패키지의 표시를 수동으로 해제하면 문제가 사라질 수 있지만 이는 분명히 비실용적입니다.

답변1

aptitude/var/lib/aptitude/pkgstates불행하게도 문서화되지 않은 것 같은 자체 패키지 상태 데이터베이스가 있습니다 . 다음과 같이 각 패키지에 대한 청크를 저장합니다.

Package: bash
Architecture: amd64
Unseen: no
State: 1
Dselect-State: 1
Remove-Reason: 0

installed나는 상태 1이 를 의미하고 , 흰색 상태 3이 를 의미한다고 믿습니다 not installed. 내 시스템에는 아직 상태 4인 패키지가 몇 개 있지만 그게 무슨 뜻인지 이해가 안 돼요.

dpkg나는 귀하의 문제가 데이터베이스에서 데이터베이스 /var/lib/dpkg/statusaptitude의 결과가 일관되지 않다고 생각합니다 /var/lib/aptitude/pkgstates. ~에 따르면이 게시물 pkgstates"사용자의 '예상' 패키지 상태"를 반영해야 하므로 apt-get이 방금 패키지를 제거한 경우에도 사용자가 이러한 패키지를 설치하기를 원한다고 aptitude가 생각할 수 있습니다.

문제에 대한 가장 좋은 해결책은 Tripleee가 제안한 대로 수행하는 것입니다. aptitude설치된 경우 사용하고, 그렇지 않은 경우 apt-get.

관련 정보