'apt-get'을 사용하여 패키지를 다시 설치하는 방법은 무엇입니까?


186

내 방식 aptitude이 어떻게 든 망가진 것 같습니다 .

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

aptitude를 사용하여 다시 설치 하고 싶습니다 apt-get.

불행히도 apt-get재설치 옵션이없는 것 같습니다 .

어떻게 aptitude다시 일할 수 있습니까?

적성의 segfault의 근본 원인을 찾은 것 같습니다. 그것을 재현하는 방법은 다음과 같습니다.

  1. Cygwin의 rxvt 터미널 (Windows 7 64 비트 독일어 버전)을 통해 데비안 컴퓨터에 'ssh'원격 로그인합니다.
  2. 두 모니터에 걸쳐 있도록 rxvt 창을 확대하십시오 (예, 두 모니터가 있습니다)
  3. 를 실행하십시오 aptitude update. 참고 : rxvt 터미널의 크기를 정상으로 조정하면 이러한 세그먼테이션 오류가 없습니다!

답변:


319
$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

따라서 다시 aptitude사용하려면 다음을 사용하십시오.

sudo apt-get install --reinstall aptitude

14
-A5당신은 무엇을 잡고 있습니까?
Vokuhila-Oliba

86
남자 grep | grep- "-A"
grawity

34
--당신은 무엇을 잡고 있습니까?
Desty

13
man getopt아래를보십시오PARSING
Tino

28
-A5일치하는 줄과 다음 5 줄을 보여줍니다. --옵션 구문 분석을 중지하여 위치 인수로 발생하는 모든 것을 해석하여 표현식에서 대시를 이스케이프 처리하지 않고 -Agrep 옵션으로 해석합니다.
jjmontes

114

로 패키지를 다시 설치할 수 있습니다 sudo apt-get install --reinstall packagename. 패키지가 완전히 제거 된 후 패키지가 제거 된 후 다시 설치됩니다.

패키지에 많은 역 종속성이있는 경우 편리합니다.


10
정확하고 완전하며 비속 달성 답변을 해주셔서 감사합니다.
Cerin

6
@ Cerin : 나는 다른 답변을 지나치게 비명을 지르지 않을 것입니다 : 심지어 "맨 페이지 읽기"조차도 실제로 그것을 찾는 방법뿐만 아니라 대답을주었습니다.
David Spillett

45
@DavidSpillett, 나는 매우 동의하지 않습니다. 매뉴얼 페이지는 일반적으로 매우 열악하고 초보자에게는 매우 친숙하지 않습니다. 예를 들어 "--reinstall"옵션의 단락에는 "install"인수와 함께 사용해야한다는 언급이 없습니다. 초보자는 "왜 설치하고 다시 설치하라고 지시해야합니까?" RTFM에게 누군가에게 말하는 답변은 최악의 답변이며, 특히 완전하고 실질적으로 도움이되는 답변이 바닥에 가까울 때 가장 많은 표를 얻도록 고통스럽게 생각합니다.
Cerin

20

때로는 구성 파일도 복원해야합니다! 재설치 만하는 것이 아닙니다.

sudo apt-get install --reinstall xxxx

응용 프로그램을 다시 설치하고 구성 파일을 유지합니다.

이것은 도움이 될 수 있지만 때로는 새로 시작해야하므로 사용하는 것은 다음과 같습니다.

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

그때

sudo apt-get install xxxx

6
구성 파일 만 복원해야하는 경우 (ucf에서 관리하는 경우)을 사용해야합니다 UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname].
Skippy le Grand Gourou

2
이 답변에는 BIG 공감 비가 필요합니다. 이것은 패키지를 "완전히 다시 설치"하려는 경우에 필요한 것입니다. 예를 들어 파일이 더 이상 존재하지 않더라도 vsftpd를 간단하게 다시 설치해도 구성 파일이 다시 만들어지지 않습니다. "Remove + Purge + (Re) install"이 대신 작업을 수행합니다.
Kar.ma

13

다른 apt 유틸리티에는 영향을 미치지 않으므로 적성을 제거하고 다시 설치하는 것이 안전해야합니다. 그래서 : apt-get remove aptitude다음에 apt-get install aptitude, 또는 계속 실패한다면, 시도 apt-get purge aptitude다음에 apt-get install aptitude.

위의 방법 중 하나를 수행하기 전에 문제를 일으킨 문제가있는 경우 전체 파일 시스템 및 불량 블록 검사를 권장합니다 (문제에 따라 문제가있을 경우 추가 활동으로 인해 상황이 악화 될 수 있음). 또한 제거하기 전에 제거 / 제거 단계에서 제거 할 내용을 검토해야합니다 (패키지 하나를 제거하여 추가 사항이 변경되면 허가를 요청하기 위해 일시 ​​중지해야 함). 는 안전하다.


고마워요! apt-get remove그 뒤 apt-get install트릭을했다!
Vokuhila-Oliba

오래 전에 내가 좋아 a full filesystem check하거나 비슷한 일을 했었습니다 . 방법을 알려주는 간단한 힌트를 주시겠습니까?
Vokuhila-Oliba

1
fsck -f <block_device>와 같은 fsck /dev/sda1. 파일 시스템은 루트 파일 시스템 일 가능성이 있기 때문에 해당 시점에 마운트 해제 또는 읽기 전용 마운트가 필요합니다. 단일 사용자 모드로 재부팅하거나 라이브 CD와 같은 다른 시스템에서 부팅해야합니다.
David Spillett

2
당신이 사용할 수있는 tune2fs체크 다음 부팅을 강제적으로 그 설정 제한보다 더 많은 시간이 장착 된 같은 파일 시스템을 표시 할 수 있습니다. 파일 시스템이 ext2 / 3 / 4 :라고 가정 tune2fs -C 99 <device>하거나 마운트 수 기반 검사를 해제 한 경우 다음과 같은 방법으로 동시에 켜십시오 tune2fs -c 17 -C 99 <device>.
David Spillett

2
touch / forcefsck; 재부팅
user23307

1
sudo apt remove --purge package
sudo apt install package

이전에 패키지를 설치 한 적이없는 것과 같습니다. 나는 운동과 그와 같은 일을 자주하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.