데비안 - 누락된 매뉴얼 페이지를 설치하시나요?

데비안 - 누락된 매뉴얼 페이지를 설치하시나요?

난 달린다라즈베리 BMC- 다음을 기반으로 한 분포라즈베리 파이, 이는 사용자 정의된 최소 데비안입니다.라즈베리 파이.

내 기억이 맞다면 man이 유틸리티는 기본적으로 RaspBMC와 함께 설치되지 않습니다(틀렸을 수도 있음).

문제는 man실제 유틸리티가 설치되기 전에 설치된 패키지에는 매뉴얼 페이지가 설치되어 있지 않다는 것입니다. 여기에는 시스템에 사전 설치된 패키지가 포함됩니다.

예: udisks-glue(사전 설치됨)를 사용해 보았습니다.

$ man udisks-glue
No manual entry for udisks-glue

패키지를 다시 설치하면 맨페이지가 나타납니다.

$ apt-get remove udisks-glue
$ apt-get install udisks-glue
$ man udisks-glue
[Man page gets displayed]

문제는 어떻게든 설치할 수 있느냐는 것입니다.모두매뉴얼 페이지를 잃어버리는 것이 쉬운가요?

내가 아는 한, 매뉴얼 페이지를 설치하는 것은 apt-get install각 명령 실행을 위한 단계입니다.

Unpacking udisks-glue (from .../udisks-glue_1.3.4-1_armhf.deb) ...
Processing triggers for man-db ...
[...]

분할 및 정복을 사용하면 다음과 같이 얻을 수 있다고 생각합니다.

  1. 설치된 모든 패키지 목록 가져오기( dpkg -l | grep ??? | cut ??? | ???)
  2. 구성을 망칠 필요 없이 apt-get에 패키지를 다시 설치하도록 지시하는 방법을 찾으십시오(일종의 remove + install청구서에는 적합하지만 종속성과 잘 작동하지 않는 것 같습니다).
    편집:이것은 트릭을 수행해야합니다:
    sudo apt-get install --reinstall packagename
  3. 1의 각 항목에 대해 2를 실행합니다.

이것이 (가장 쉬운) 방법입니까?

고쳐 쓰다

이 작업을 한 번 했던 기억이 나기 때문에 다시 설치할 때 패키지가 최신 버전으로 업그레이드되지 않았는지 확인하고 싶었습니다( apt-get upgrade기본적으로는 그런 것 같습니다.apt-get install --reinstall

답변1

@derobert의 답변부터 시작하여 모든 패키지의 최신 버전을 정확히 다시 설치하려고 애썼습니다.

간결한 버전:

sudo dpkg -l | grep '^ii ' | sed 's/  */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall -y --ignore-missing

설명하다:

실제로 핵심은 각 패키지에 필요한 버전을 지정하는 것입니다.

일반적인 명령은 다음과 같습니다:

apt-get install --reinstall <package>=<version>

긴 명령줄을 나누십시오.

$ dpkg -l

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                            Architecture Description
+++-===========================================================-==================================-============-========================================================================
ii  adduser                                                     3.113+nmu3                         all          add and remove users and groups
ii  apt                                                         0.9.7.8+rpi1                       armhf        commandline package manager
ii  apt-utils                                                   0.9.7.8+rpi1                       armhf        package managment related utility programs
ii  aptitude-common                                             0.6.8.2-1                          all          architecture indepedent files for the aptitude package manager
ii  atmel-firmware                                              1.3-4                              all          Firmware for Atmel at76c50x wireless networking chips.

$ dpkg -l | grep '^ii '

...헤더 행과 상태가 " hold"인 일부 패키지를 제거합니다( hi대신 으로 표시됨 ii).

$ dpkg -l | grep '^ii ' | sed 's/  */\t/g'

...여러 개의 공백을 단일 탭 문자 로 변환 합니다 cut. 시뮬레이션하려면 "x"가 0번 이상 뒤에 옵니다)
sedx+xx*

출력은 다음과 같습니다.

ii      adduser 3.113+nmu3      all     add     and     remove  users   and     groups
ii      apt     0.9.7.8+rpi1    armhf   commandline     package manager
ii      apt-utils       0.9.7.8+rpi1    armhf   package managment       related utility programs
ii      aptitude-common 0.6.8.2-1       all     architecture    indepedent      files   for     the     aptitude        package manager
ii      atmel-firmware  1.3-4   all     Firmware        for     Atmel   at76c50x        wireless        networking      chips.

다음:

$ dpkg -l | grep '^ii ' | sed 's/  */\t/g' | cut -f 2,3 | sed 's/\t/=/'

...이름을 알아내세요및 버전각 패키지의 (두 번째 및 세 번째 필드)를 구분하는 탭 문자를 "="로 바꿉니다.

adduser=3.113+nmu3
apt=0.9.7.8+rpi1
apt-utils=0.9.7.8+rpi1
aptitude-common=0.6.8.2-1
atmel-firmware=1.3-4

마지막으로 위의 각 항목을 xargs.

매개 변수에 유의하세요 --ignore-missing. 이 명령은 "최선의 노력"으로 실행됩니다. 일부 패키지를 다시 설치할 수 없기 때문에 업데이트를 중지하고 싶지 않습니다(이러한 패키지는 변경되지 않은 상태로 유지됩니다).

$ dpkg -l | grep '^ii ' | sed 's/  */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall --ignore-missing

테스트하는 동안 --dry-runapt-get에 매개변수도 추가했습니다.

답변2

상당히 간단한 방법인 것 같습니다. 패키지 목록과 상태를 가져오는 명령은 dpkg --get-selections다음과 같습니다.

dpkg --get-selections | grep '\<install$' | cut -f1 | xargs apt-get install --reinstall

관련 정보