난 달린다라즈베리 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 ...
[...]
분할 및 정복을 사용하면 다음과 같이 얻을 수 있다고 생각합니다.
- 설치된 모든 패키지 목록 가져오기(
dpkg -l | grep ??? | cut ??? | ???
) - 구성을 망칠 필요 없이 apt-get에 패키지를 다시 설치하도록 지시하는 방법을 찾으십시오(일종의
remove + install
청구서에는 적합하지만 종속성과 잘 작동하지 않는 것 같습니다).
편집:이것은 트릭을 수행해야합니다:
sudo apt-get install --reinstall packagename
- 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번 이상 뒤에 옵니다)sed
x+
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-run
apt-get에 매개변수도 추가했습니다.
답변2
상당히 간단한 방법인 것 같습니다. 패키지 목록과 상태를 가져오는 명령은 dpkg --get-selections
다음과 같습니다.
dpkg --get-selections | grep '\<install$' | cut -f1 | xargs apt-get install --reinstall