우연히 많은 패키지를 제거한 후 우분투 시스템이 손상되었습니다.


20

실수로 이름 jpeg으로 시작하는 모든 패키지를 다음과 같이 제거 했습니다.

sudo apt-get remove jpeg*

이것은 많은 것들을 망 쳤고 Unity, Firefox, Flash player 등을 제거했습니다.

나는 어떻게 든 데스크탑과 화합을 복구했지만 많은 것들이 여전히 버그가 있습니다. 예를 들어 .rpm파일 .tag.gz은 전혀 열리지 않습니다.

내가 원하는 것은 불완전한 모든 것을 고치는 방법입니다. Windows 디스크를 사용한 '수리 설치'와 같은 것입니다.

팁이 있습니까?


1
새로 설치하는 것이 좋습니다. / home / (보이지 않는 파일 포함)을 백업하고 새 설치에 삽입하십시오.
Paul Woitaschek

답변:


35

ubuntu-desktop작업을 설치할 수 있습니다 .

sudo apt-get install ubuntu-desktop^

제거한 표준 Ubuntu Desktop의 모든 패키지가 설치됩니다. 표준 데스크탑의 일부가 아닌 설치 한 패키지는 복원하지 않습니다 (즉, Unity 및 Firefox는 다시 설치하지만 Flash Player는 다시 설치하지 않음).

해당 패키지를 설치하기 위해 /var/log/apt/history.log제거 된 내용을 정확하게 보고 확인할 수 있습니다 .

참고 : 설치중인 ubuntu-desktop^ 작업하는 설치중인 동일하지 않습니다 ubuntu-desktop 패키지를 . 첫 번째는 가상 패키지와 관련된 종속성을 해결하기위한 힌트를 APT에 제공하고 후자는 APT에 패키지를 선택할 수있는 자유를 제공합니다 (그리고 쓸모없는 것들을 설치하게됩니다 ubiquity).

왜 문제가 발생 했습니까? apt-get remove jpeg*로 시작하는 모든 패키지를 제거 하지는 않습니다jpeg . 대신 jpe이름에 포함 된 모든 패키지를 제거합니다 . 정규 표현식으로 작품을 apt-get을하기 때문에 그래서이다 JPEG *이 모든 것을 포함 : 수단 JPE는 0 개 이상의 다음 g .


1
좋은 생각입니다. 여기에서 작동하는지 확인하고 싶습니다!
Eliah Kagan

@EliahKagan : 나는 chroot에서 테스트했습니다. jpeg * 패키지는 일부 그래픽 응용 프로그램에만 영향을 미치므로 필요한 '성분'(예 : 인터넷 연결을위한 NetworkManager, APT, 터미널 에뮬레이터 등)은 여전히 ​​OP 시스템에 있습니다.
Andrea Corbellini

@EliahKagan : 물론 OP가 다른 것을 제거하지 않았다는 (명백하지 않은) 가정을했습니다.
Andrea Corbellini

2
작업을 제거하는 데 절대로 사용 하지 않도록 경고를 포함 tasksel하십시오- 불쾌한 tasksel을
guntbert

1
@Attilio : 나는 대답의 차이점을 설명했습니다. 참조 : "우분투 데스크탑을 설치하는 작업이 ... 우분투 데스크탑 패키지를 설치하는 것과 동일하지 않습니다 ^ 참고"
안드레아 Corbellini

8

이 문제를 해결하는 가장 좋은 방법은 Ubuntu를 다시 설치하는 것입니다. 다시 포맷하지 않고 다시 설치하려는 경우에도 문서를 먼저 백업해야합니다.

시스템을 제자리에 고정하려는 경우 패키지 관리자의 로그 파일을보고 제거 된 패키지를 확인한 후 다시 설치하십시오.

  • /var/log/dpkg.log (전체 정보이지만 읽기 어려운)
  • /var/log/apt/history.log (로 약칭하면 제거되거나 수정 된 모든 패키지를 알려줍니다-아마도 가장 좋은 방법 일 것입니다)
  • /var/log/apt/term.log( apt-get터미널에서 패키지를 제거한 경우, 제거 할 패키지 목록을 포함하여 확인한 내용이 표시되므로 이것이 가장 좋은 방법 일 수 있습니다)

jpeg제거 된 패키지의 대부분이 패키지에 의존하여 제거 되었기 때문에 이름이 시작하는 패키지 만 재설치 하면 작동하지 않습니다 .

앞으로는 패키지 제거 결과를 신중하게 확인하는 것이 좋습니다. 명령 줄에서 작업하는 경우 항상 알림을받습니다. ( -y이 경우 옵션 을 사용하지 않으면 일반적으로 사용하지 않습니다. 특히 제거 작업에 대해 수행중인 작업을 모르는 경우 해당 옵션을 사용하지 않는 것이 좋습니다.)

패키지 관리 작업을 수행 할 apt-get때 발생하는 위험을 감수하지 않고 결과를 확인하는 한 가지 방법 은 apt-get -s대신 실행하는 것입니다 sudo apt-get. 이것은 단지 지정된 동작을 시뮬레이션하고 결과로 어떤 패키지가 영향을 받는지보고합니다.


1

sudo apt-get purge wine*우분투 15.10에서 실행 하므로 부팅시 터미널 로그인 옵션에 그래픽 인터페이스가 없습니다.

Eliah Kagan은 /var/log/apt/history.log history.log에서 nano를 실행하여 정보를 사용 sudo apt-get install하고 줄에서 찾은 모든 제거 된 패키지에 포함 된 간단한 스크립트를 만들 것을 제안 했습니다.

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

그러나 먼저 :를 포함하여 모든 :와 사이의 텍스트를 수동으로 제거해야했습니다.

이 단계에서는 패키지가 수백 개이기 때문에 새로운 스크립트가 도움이 될 것입니다. 그 후 스크립트를 실행하고 Unable to locate packages수동으로 설치 한 일부를 제거했습니다 . 스크립트를 다시 실행하면됩니다. 운 좋게 모든 것이 잘 작동합니다 ...


0

ubuntu-desktop우분투 데스크탑 설치 패키지 설치

sudo apt-get update && sudo apt-get install ubuntu-desktop

시스템에 필요한 패키지를 설치합니다.


ubuntu-desktop의 종속성이 설치되어 있지 않기 때문에 이것은 실패합니다.
kevinkayaks

0

실수로 libssl1.0.0기계를 제거 하고 기계가 손상되었습니다. 복원하기 위해 다음을 수행했습니다.

  1. 제거 된 항목의 로그 백업 cp /var/log/apt/term.log ~/libssl.term.log
  2. libssl 조치와 관련이없는 행을 삭제하십시오. vi ~/libssl.term.log
  3. 네트워킹이 누락 된 경우 (불가능 ping google.com) 복구 모드에서 재부팅하고 네트워킹을 활성화하십시오.
  4. 제거 된 패키지 재설치 cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

0

다음은 대량 제거에서 (사용할 수없는) 패키지 문자열을 작성할 수있는 작은 파이썬 스크립트입니다 /var/log/apt/history.log. 제거 된 모든 패키지를 쉽게 설치할 수 있도록 붙여 넣기를 apt-get install 명령에 복사 할 수있는 문자열을 출력합니다.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

쉼표? 따옴표를 의미합니까?
wjandrea

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