응용 프로그램을 완전히 제거하는 올바른 방법은 무엇입니까?


546

인터넷에서 그러한 정보를 검색했으며 다음과 같은 다른 명령 줄을 발견했습니다.

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

그렇다면 올바른 방법은 무엇입니까? 그 "*"를 사용해야합니까?

그 후에도 다음 명령을 찾았습니다.

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

1
질문 중 일부는이 게시물에 답변을 얻을 수 있습니다 askubuntu.com/questions/1143/how-can-i-uninstall-software
Glutanimate을

8
application*예를 들어, 현재 디렉토리에 파일이있는 경우 application_information쉘은 파일 을 apt-get에 전달하기 전에 확장합니다. 이런 일이 당신이 문자 그대로의 별표를 원하는 경우에, 당신은 사용할 수 있습니다 application\*또는'application*'
Izkata

6
application*현재 디렉토리에 파일이없는 경우 더욱 위험 apt-get합니다. 정규 표현식을 사용하고 glob 패턴을 사용하지 않습니다. 사람들은 거의 모든 시스템을 제거하려고 노력했다 wine*.
Andrea Corbellini

3
답을 받아 들일 수 있습니까? 당신에게 응답 한 사람들에게 감사합니다.
m-ric

안전 application*application\*안전 하지도 않습니다 ! 인용 *과 함께 \또는 ' '증가 보장, 위험 *에 그대로 전달된다 apt-get(이것은 보통 어쨌든 불구하고!), 원인 apt-get정규식으로 인수를 해석 할 수 있습니다. 정규식에서 *"이전 문자 중 0 개 이상"을 의미합니다. 실수의 일반적인 형태는 제거하는 것입니다 wine*모든 패키지를 제거 win(하지 wine, win) 어디서든 자신의 이름과 그 중 하나에 따라 모든 패키지에. 이 설명가능한 수정 사항을 참조하십시오 . @Izkata
Eliah Kagan

답변:


705
  • apt-get remove packagename

    바이너리를 제거하지만 패키지의 구성 또는 데이터 파일은 제거하지 않습니다 packagename. 또한 설치 시간에 설치된 종속성을 그대로 유지합니다.

  • apt-get purge packagename 또는 apt-get remove --purge packagename

    패키지 와 관련된 모든 것을 제거 packagename하지만 설치시 패키지 와 함께 설치된 종속성 은 제거 하지 않습니다. 두 명령 모두 동일합니다.

    구성을 엉망으로 만들었으므로 응용 프로그램으로 '다시 시작'하려는 경우에 특히 유용합니다. 그러나 사용자 홈 디렉토리 (보통 숨겨진 폴더)에있는 구성 또는 데이터 파일은 제거하지 않습니다. 그것들을 제거하는 쉬운 방법은 없습니다.

  • apt-get autoremove

    고아 패키지, 즉 종속성으로 설치되었지만 더 이상 설치되지 않은 설치된 패키지를 제거합니다. 더 이상 관심이없는 종속성을 설치 한 패키지를 제거한 후 사용하십시오.

  • aptitude remove packagename또는 aptitude purge packagename(처럼)

    또한 packagenameon에 필요 했지만 나머지 패키지에 필요하지 않은 다른 패키지를 제거하려고 시도 합니다. 참고 aptitude만 설치 한 패키지에 대한 의존성 정보를 기억합니다.

그리고 더 많은 것이 존재합니다. 하위 수준의 dpkg명령을 사용 (고급)하거나 Muon, Synaptic, Software Center 등과 같은 GUI 도구를 사용할 수 있습니다. 응용 프로그램을 제거하거나 패키지 관리와 상호 작용하는 다른 작업을 수행하는 '올바른 방법'은 없습니다.

찾은 목록은 단지 예일뿐입니다. 동작을 수락하기 전에 의미를 이해하고 원하는 작업을 시도해보십시오 ( Y제안 된 동작을 실제로 수행하기 전에 를 눌러야 합니다).

문제의 별표 버전이 잘못되었을 수 있습니다 . apt-get글로브 패턴이 아닌 정규식을 쉘로 받아들입니다. 그래서 어떻게됩니까

sudo apt-get remove application*

다음과 같습니다.

  1. application*은 현재 디렉토리의 파일 을 확장하려고 시도합니다 . (보통의 경우와 같이) 아무것도 찾지 못하면 글로브 패턴을 변경하지 않고 반환합니다 ( bash기본 동작으로 가정 하면 --- zsh오류가 발생합니다).

  2. apt-get이름이 패키지를 제거 하는 문자열이 포함 정규식 만족 application*이며, applicatio임의의 수에 따라 n: applicatio, application, applicationn, libapplicatio, 등을

  3. 이 (이중 안전을 위해 루트없이), 위험 할 시도 할 수있는 방법을 보려면 apt-get -s remove "wine*"( -s자신의 이름과 종속의 "승리"한 모든 패키지를 제거하는 것입니다 그것을 말할 것이다 --- 대신 그 일의 일을 시뮬레이션합니다) 거의 전체 시스템 ...

아마도 의미했던 명령은 실제로

 sudo apt-get remove "^application.*"

(따옴표와 점을 참고하십시오)는 이름이로 시작하는 모든 패키지를 제거합니다 application.

이 명령들은

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

패키지 관리 범위를 완전히 벗어났습니다. 패키지 관리자를 사용하지 않고 패키지에 속하는 파일을 제거하지 마십시오! 혼란스럽고 일을 잘못하는 방법입니다.

파일이 어떤 패키지에 속하는지 모르는 경우 다음을 시도하십시오.

dpkg -S /path/to/file

9
--purge 옵션은 구성 파일을 포함하여 나머지 종속성을 완전히 제거하려고 할 때도 유용합니다. apt-get-autoremove --purge 홈 디렉토리의 구성 파일은 --purge 옵션의 영향을받지 않습니다. 이들은 수동으로 제거해야합니다.
Glutanimate

1
여기에 오류가있었습니다 : apt-get은 glob가 아닌 RE를 받아들입니다. 따라서 apt-get remove pack *은 pac로 시작하고 그 뒤에 0 개 이상의 k가 오는 모든 패키지를 제거합니다. 나는 anser를 편집했다. 참조 askubuntu.com/questions/210976/...
Rmano

이 답변이 더 이상 정확하지 않다고 생각합니다. 하나 apt remove -s texlive*또는 그 apt-get같은 대응 리턴 라인 Note, selecting 'texlive-font-utils' for glob 'texlive*'보통 다음 (그들은 실제로 globs의를 수용 할 것을 의미) Package 'texlive-common' is not installed, so not removed, 그리고 마지막으로 Remv같은 라인 Remv texlive-font-utils [2015.20160320-1] [...].
Jonathan Y.

@JonathanY. 설치되지 않은 패키지를 선택할 수도 있습니다. 어쨌든, 당신은 새로운 질문을하고 당신의 상황이 무엇인지 좀 더 자세하게 설명해 주시겠습니까? 나는 그것을 볼 수 행복합니다 :)
gertvdijk

나는 새로운 질문을하지 않습니다. 이 답변이 세부 사항 중 일부를 부정확하게 만든 이후 가능한 변경 사항을 지적하고 있습니다. 재치에게, 그 보인다 apt-get remove packa*실제로 글로브을 않는 packa*대신 정규식으로 보는 : 그것은 일치 package하지만 pack.
Jonathan Y.

110

Ubuntu 12.04 이상의 경우 올바른 방법은 다음과 같습니다.

sudo apt-get --purge autoremove packagename

여기에 자세히 설명되어 있습니다 .

packagename*의도하지 않은 패키지를 삭제하고 해결하는 것보다 더 많은 문제를 일으킬 수 있으므로 사용하지 마십시오 . 당신은 적어도 그것을 실행해야하는 경우 또는 -s, --simulate, --dry-run플래그는 먼저 그것을하지 않고 무엇을 할 것인지 정확히 볼 수 있습니다.


13
정답은 짧고 간결합니다.
Anwar

20

이 명령을 사용할 수 있습니다 :

sudo apt-get purge --auto-remove packagename

필요한 패키지와 해당 패키지와 함께 설치된 종속성을 제거합니다. --auto-remove옵션 (의 별칭 인은 autoremove)와 유사한 작동합니다 sudo apt-get autoremove. 이 명령을 사용하여 단일 명령을 실행할 수 있습니다.

sudo apt-get purge --auto-remove packagename

대신에:

sudo apt-get purge packagename
sudo apt-get autoremove

2
당신은 정확하지만 하나를 사용할 수도 있습니다 sudo apt-get --purge autoremove packagename. 여기에 동일한 1 명령
Anwar

전체 명령을 apt-get autoremove --purge대신 사용할 수 있습니까 apt-get purge --auto-remove?
felwithe

3
누군가 제발 날 쏴 줄래?
Martin Andersson

7

안전하게 사용할 수 sudo apt-get remove --purge application또는 sudo apt-get remove applications시간의 99 %. purge플래그 를 사용 하면 모든 구성 파일도 제거됩니다. 해당 응용 프로그램을 다시 설치할지 여부에 따라 원하는 것이거나 아닐 수도 있습니다. 로 application*시작하는 모든 응용 프로그램과 일치합니다. application일반적으로 제거하려는 기본 응용 프로그램의 플러그인, 추가 기능 등입니다. 즉

sudo apt-get remove gedit*

제거하는 것 gedit, gedit-plugins하고 gedit-common. 대부분의 플러그인 / 관련 프로그램은 기본 응용 프로그램에 종속되며 기본 응용 프로그램을 제거 할 때 자동으로 제거 (또는 제거 표시)되기 때문에 일반적으로이 작업을 수행 할 필요는 없습니다.

마지막 명령은 지저분한 제거 프로그램이있는 것으로 알려진 응용 프로그램에서 남은 음식을 제거하고 응용 프로그램의 나머지를 제거하는 것입니다.


5

패키지를 제거하는 동안 오류 메시지가 나타 났는데, 내가 찾은 유일한 방법은 다음과 같습니다.

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

나는 단지 사용하지만

dpkg --remove --force-remove-reinstreq package

패키지를 제거하지 않으면 이동할 파일의 올바른 경로가 표시됩니다.

mv /var/lib/dpkg/info/package.* /tmp/

응용 프로그램 이름으로 패키지를 대체하십시오. 우분투에서 sudo를 사용하고 데비안에서 루트가 되십시오.



1

제거하려는 응용 프로그램에 따라 다릅니다. yes 명령을 실행하기 전에 항상 종속성을 확인하십시오. 명령 행으로 무언가를 제거하면 때때로 더 이상 필요하지 않은 소수의 라이브러리가 표시됩니다. 이들은 apt-get autoremove로 제거 할 수 있습니다.

sudo apt-get remove --purge applicationname과 같은 명령을 사용하면 다른 응용 프로그램에 필요한 일부 종속성이 제거되어 시스템이 손상 될 수 있습니다.

보다 안전한 방식으로 수행하려면 항상 소프트웨어 센터 또는 apt-get remove applicationname을 사용하여 제거하십시오. 종속성이 더 이상 필요하지 않으면 나중에 apt-get autoremove를 발행하십시오.


데비안 패키지 시스템 전체 가 다른 패키지가 있다면 패키지를 제거 하지 않도록 특별히 고안된 것 같습니다. 당신이 너무 모든 종속 패키지를 제거 할 것인지 묻는 메시지 (유용하게) 할 수 있으며, 실제로해야하는 위치 즉 읽기 입니다 제거하려 할 패키지의 목록, 내가 생각하는 당신이 말하려고하는지합니다.
Xen2050

1

나는 단지 여기에 혼란의 원천으로 보이는 것을 분명히하고 싶었습니다. 이 dpkg유틸리티는 서로 관련하여 패키지 종속성을 알지 못하거나 추적하지 못합니다 apt. 이것이 제가 개발 한 큰 이유 였습니다. 이 페이지 섹션 8.6에서 데비안 GNU / 리눅스 FAQ-데비안 패키지 관리 도구를 읽어보십시오.

  • apt 사용 : 패키지 A를 제거하고 패키지 B라는 종속성이 있고 패키지 B에 다른 종속 패키지가 없으면 패키지 A와 B가 제거됩니다. 패키지 B DID에 다른 종속 패키지가 있으면 패키지 A 만 제거됩니다.

  • dpkg 사용 : 어떤 종속성? 방금 저
    패키지 를 청소하라고 했어요 . 당신이 잘못 계획 한 것은
    나의 비상 상황 이 아닙니다 .

그렇게 말하면, 여기에는 각 퍼지 방법에 사용할 수있는 두 개의 단일 라이너가 있습니다.

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

--dry-run수행 한 조치를보고하는 대신 실제 제거 작업을 수행하려면를 제거하십시오 .

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