다양한 APT 패키지 제거 명령은 어떻게 다릅니 까?


17

이 명령들 사이의 차이점은 무엇입니까?

  1. sudo apt-get autoremove --purge packagenames
  2. sudo apt-get remove --purge packagenames
  3. sudo apt-get purge purge packagenmaes
  4. sudo apt-get remove packagenames
  5. sudo apt-get autoremove

답변:


24

빠른 답변

  • remove 이름을 딴 패키지를 제거합니다.
  • autoremove더 이상 필요없는 자동으로 설치된 모든 패키지를 제거합니다. autoremove; 뒤에 패키지 이름을 나열하는 것은 올바르지 않습니다 . 그것들은 무시되고 ( 적격 한 모든 패키지가 제거 될 것입니다) 아마도 당신이 의도 한 것이 아닙니다.
  • --purge제거중인 패키지와 연관된 시스템 전체 구성 파일도 제거됩니다. 그것은 같은 명령 동반해야합니다 removeautoremove. --purge플래그는 명령의 조치를 수정; 그것은 스스로 행동하지 않습니다.
  • purge동일한 것을 의미한다 --purge remove(동일하다 remove --purge). purge두 번 말하는 것은 잘못입니다 . 두 번째 purgepurged 가 될 패키지의 이름으로 해석되며, 의도하지 않은 것일 수 있습니다.

전체 답변

이러한 명령의 기능과 차이점을 이해하려면 두 가지 개념을 이해하는 것이 도움이되며 필수적 일 수도 있습니다.

  1. 수동 으로 설치된 패키지 와 자동으로 설치된 패키지 의 차이점
  2. 패키지의 패키지 파일구성 파일 의 구별

수동 설치 대 자동 설치

설치된 패키지는 수동 또는 자동으로 설치됩니다.

설치할 패키지를 지정하고 설치하면 수동으로 설치됩니다.

그러나 다른 패키지도 설치 될 수 있습니다. 대부분의 패키지에는 종속성이 있습니다. 패키지는 의도 한대로 작동하려면 설치해야합니다. 패키지를 설치하면 이전에 설치된 패키지를 제외하고 해당 종속성 (예 : 패키지가 의존하는 다른 패키지)이 설치됩니다.

설치할 패키지를 지정하지 않고 설치하도록 지정한 패키지의 종속성 으로 설치 하면 자동으로 설치됩니다.

두 개의 패키지가 설치되어 있고 그 중 하나가 다른 패키지의 종속성 인 경우 종속성이 자동으로 설치되는 것은 아닙니다. 종속성이 수동으로 설치되었을 수도 있습니다 (예를 들어, 사용자가 지정한 패키지와 함께 또는 패키지에 종속 된 패키지와 동시에 설치).

드디어:

  • 이미 설치된 패키지를 수동으로 설치하려고하면 설치된 상태로 유지됩니다. 그러나 자동으로 설치된 경우 변경이 이루어집니다. 수동으로 설치하려고하면 수동으로 설치된 것으로 표시됩니다.
  • apt-mark실제로 설치된 환경이나 방법에 관계없이 패키지를 수동 또는 자동 설치 ( 명령 사용) 로 표시 할 수 있습니다 .
  • Ubuntu 시스템과 함께 사전 설치된 패키지는 모두 자동으로 설치되는 것은 아닙니다. 그중 일부는 자동 설치로 표시되고 다른 일부는 수동 설치로 표시됩니다. 이는 수동으로 설치된 패키지와 자동으로 설치된 패키지를 구별하는 배후의 논리를 만족시키기위한 것입니다. 일부 패키지는 다른 패키지를 위해서만 필요하다는 생각입니다.

일반적으로 자동으로 설치된 모든 패키지에 대해 하나 이상의 수동으로 설치된 패키지가 있으며 그로 인해 자동으로 설치됩니다. 그러나 자동으로 설치된 패키지에 따라 수동으로 설치된 모든 패키지를 제거하면 자동으로 설치된 패키지는 더 이상 필요하지 않지만 여전히 설치됩니다.

apt-get autoremove 더 이상 수동으로 설치된 패키지가없는 자동으로 설치된 패키지를 제거합니다.

패키지 파일 및 구성 파일

패키지는 해당 버전의 패키지가 설치된 모든 시스템에서 동일하게 유지되도록 의도 된 파일을 제공합니다. 이러한 파일은 설치된 프로그램에 대한 실행 파일, 리소스, 설명서 및 기타 "자산"을 제공합니다. 우리는 보통 이것을 패키지가 제공하는 "파일"이라고 불렀습니다.

그러나 패키지는 다른 파일도 제공하며 변경 될 수 있습니다. 이를 전역 (또는 시스템 전체) 구성 파일이라고합니다. 거의 항상 /etc디렉토리에 설치되며 설치된 프로그램의 동작을 변경하기 위해 자동 및 수동으로 수정할 수 있습니다. 예를 들어, sudo구성 파일 /etc/sudoers과 추가 구성 파일을위한 디렉토리가 있습니다 /etc/sudoers.d. 해당 파일과 해당 디렉토리에 추가 된 파일은 누가 sudo어떤 방식 으로 사용할 수 있는지 지정합니다.

일반적으로 패키지를 제거한 다음 다시 설치하면 동작 방식이 변경되지 않아야합니다 ( 패키지 파일 이 손상되어 다시 설치 한 이유가 아닌 한 ). 따라서 일반적으로 패키지를 제거하면 패키지 파일은 삭제되지만 시스템 전체 구성 파일은 그대로 유지됩니다.

시스템 전체 구성 파일도 삭제하도록 지정하지 않고 패키지를 제거하면 패키지를 "제거"라고합니다.

패키지를 제거 할 때 패키지의 시스템 전체 구성 파일도 삭제하려는 경우이를 "퍼지"라고합니다.

apt-get remove패키지를 제거합니다. 즉, 패키지를 제거하지만 시스템 전체 구성 파일은 그대로 둡니다.

apt-get purge패키지를 제거합니다. 즉, 패키지를 설치 제거하고 시스템 전체 구성 파일을 삭제해야합니다.

패키지를 제거하는 또 다른 방법은 --purge플래그 를 사용하는 것 입니다. 그것은 apt-get무엇을해야하는지 알려주지 않습니다 . 대신, remove지시하는 것과 같은 용어 (또는 "명령")를 수정합니다 . 이 --purge플래그는 패키지를 제거 할 때 제거 할 패키지에 대한 시스템 전체 구성 파일이 삭제되도록합니다. 즉, --purge플래그는 제거를 제거로 바꿉니다.

명령 --purge이있을 때 왜 플래그가 purge있습니까? 결국에 sudo apt-get --purge remove packagename해당 하지 않습니다 sudo apt-get purge packagename. 그것들은 동등합니다. 어디 --purge당신이 명령의 동작을 수정할 때 편리 온다 다른 이상을 remove.

예를 들어, 더 이상 필요하지 않은 자동으로 설치된 패키지를 제거하려고하는데 (패키지에 따라 수동으로 설치된 패키지가 더 이상 없기 때문에) 자동으로 설치된 패키지를 제거하지 않고 삭제하려는 경우 시스템 전체 구성 파일 그런 다음 실행할 수 있습니다.

sudo apt-get --purge autoremove

의 사용을 한 번 더 고려해 봅시다 --purge. --reinstall설치 라는 이름의 플래그 가 설치를 다시 설치합니다. 즉, 일반적으로 이미 설치된 패키지를 설치하려고하면 아무 일도 일어나지 않거나 패키지가 자동으로 설치된 것으로 표시되면 패키지가 수동으로 설치된 것으로 표시됩니다. 그러나와 --reinstall플래그, 이미되도록 설치되는 패키지 설치 제거를 한 후 다시 설치 :

sudo apt-get --reinstall install packagename

그러나 재설치하려는 패키지의 시스템 전체 구성 파일을 삭제한다고 가정하십시오. 이것은 다소 일반적입니다. 패키지가 작동하지 않고 이유를 모르는 경우 다시 설치하고 구성 파일을 삭제하여 구성이 기본값으로 재설정 될 수 있습니다. 이를 달성하기 위해 다음을 실행할 수 있습니다.

sudo apt-get --purge --reinstall install packagename

--reinstall재설치 변신 설치 (즉, 제거 설치 하였다) 및이 --purge퍼지에 재설치의 제거 부분집니다.

당신의 모범의 행동

이제 각 예제 apt-get명령이 정확히 무엇을해야하는지 분명히해야합니다 .

  • sudo apt-get autoremove --purge packagenames

    그러면 더 이상 수동으로 설치된 패키지가없는 자동으로 설치된 패키지가 제거됩니다. 즉, 패키지 파일을 삭제하는 패키지를 설치 제거하고 시스템 전체 구성 파일도 삭제합니다.

    여기서는 packagenames아무것도하지 않습니다. 특히, 이름이 나열된 패키지 만 제거하려는 경우 의도 한대로 작동하지 않습니다.

  • sudo apt-get remove --purge packagenames

    이것으로 퍼지 packagenames; packagenames공백으로 구분 된 패키지 이름 목록 이라고 가정하면 모든 패키지 이름이 제거됩니다. 즉, 패키지 파일을 삭제하여 제거하고 시스템 전체 구성 파일도 삭제합니다.

    나열된 패키지 중 하나라도 packagenames설치되어 있지 않으면 목록에 존재 하는 패키지 는 적용되지 않습니다 (설치되지 않았다는 알림을 제외하고). 실제 패키지 이름이 아닌 패키지 이름을 나열하면 명령이 오류와 함께 실패 합니다.unable to locate packagename

  • sudo apt-get purge purge packagenmaes

    purge해당 명령에서 발생 항목 중 하나를 제거 하면 이전 명령과 동일합니다. 그대로,이라는 패키지 purge를 제거하고에 나열된 패키지를 제거하려고 시도합니다 packagenames. 때문에 purge어떤 패키지의 이름이 아닙니다, 그것은 오류 메시지와 함께 실패합니다.

  • sudo apt-get remove packagenames

    packagenames패키지 파일이 삭제되는에 나열된 패키지가 제거됩니다 . 시스템 전체 구성 파일은 삭제되지 않습니다 (삭제가 아니라 단순히 제거하기 때문).

  • sudo apt-get autoremove

    그러면 더 이상 수동으로 설치된 패키지가없는 자동으로 설치된 패키지가 제거됩니다. 이것은 그들의 패키지 파일을 삭제 수반하지만, 하지 (즉, 그것은 제거하지만 퍼지이다) 자신의 시스템 전체 구성 파일을.

사용 방법에 대한 자세한 내용은 매뉴얼 페이지를apt-get 권장 합니다 . 보다 일반적인 정보는 이 안내서를 참조하십시오 .

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