Linux에서 프로그램 제거


30

지난 5 년간 Windows와 Mac OS를 사용해 왔으며 이제는 매일 Linux를 사용하는 것을 고려하고 있습니다. 가상 머신에 Ubuntu를 설치하고 일상 업무에 Linux를 사용하는 방법 (js 프로그래머 / 웹 디자이너)을 이해하려고 노력했습니다.

죄송합니다 초보자의 질문에 대한하지만 통해 가끔 프로그램을 설치할 때 나에게 발생 make configmake install쉽게 버터 블없는 방법으로 내 시스템을 변경합니다. 창에서는 프로그램을 설치할 때, 당신은 그것을 제거 할 수없고 희망 당신은 단순히 파일과 같은 앱을 삭제 등에서 맥 OS 파일 시스템이나 경우 레지스트리에 남아있는 프로그램의 흔적을이 책에 의해 재생하는 경우가있을 것입니다.

그러나 리눅스에 존재 apt-get하고있다 make. Linux 설치를 깨끗하고 깔끔하게 유지하는 방법을 이해하지 못했습니다. 새로운 앱을 설치하면 시스템이 손상 될 수 있습니다. 그러나 Linux는 매우 강력하다는 평판을 가지고 있으므로 앱 설치 및 제거가 시스템에 미치는 영향에 대해 이해하지 못하는 것이 있어야합니다. 누구든지 이것에 약간의 빛을 비출 수 있습니까?


업데이트 : 앱을 설치할 때 파일이 실제로 어디에나 퍼질 수 있지만 (패키지 관리자가 문제의 일부를 처리) 멋진 해킹이 있습니다 : Docker사용 하여 앱을 설치하고 샌드 박스에 보관하십시오. 너무 자주 사용하십시오. Firefox와 같은 GUI 응용 프로그램을 Docker "sandbox"에서 완전히 실행할 수도 있습니다 .


11
간단한 사용자는 소프트웨어를 설치 하는 apt-get대신 사용해야 make합니다. make install는 아직 패키지로 제공되지 않는 소스에서 최신 버전의 소프트웨어를 빌드해야 할 때 사용됩니다.
Dmitry Grigoryev가

@DmitryGrigoryev Using apt는 사용하는 것보다 간단하고 더 나은 tui를 제공합니다 apt-get.
Bakuriu

3
OS X를 사용할 때 *.app응용 프로그램 설치로 인해 다른 위치 (예 : 라이브러리 디렉토리)가 메모리에서 흩어지기 때문에 파일 삭제가 불충분 한 경우가 종종있었습니다. 또한를 make install사용 하여 Ubuntu의 소스에서 수동으로 빌드하는 경우 checkinstall대신 쉽게 제거 할 수 있습니다.
Sparhawk

1
./configure ; make ; make install길을 사용하지 마십시오 . 멋진 fpm 도구를 배우기 만하면 됩니다.
사슴 사냥꾼

fpm 도구 란 무엇입니까?
AlexStack

답변:


28

새로운 설치 는 소스와 바이너리를 혼합하는 것과 같은 이상한 일을하지 않는 한 시스템을 거의 파괴하지 않습니다.

우분투에서 미리 컴파일 된 바이너리를 사용하는 경우, 당신이 그들을 제거 할 수 있습니다 이진가 있기 때문에하지, 시스템을 파괴에 대해 걱정할 필요가 있어야 그것을 실행하는 데 필요한 및 패키지 관리자가 프로그램 검토에 당신을 위해 프로그램에 의존하는 것을 나열됩니다 무엇을 나열합니다.

소스를 사용할 때는 glib와 같이 중요한 것을 제거하지 않도록 더 조심해야합니다. 소스에서 제거 할 때 경고 나 다른 사항이 없습니다. 즉, 기계를 완전히 깰 수 있습니다.

를 사용하여 제거 apt-get하려면 apt-get remove package이전에 언급 한대로 사용하십시오. 해당 패키지를 사용하는 모든 프로그램도 제거되며 해당 프로그램을 검토 할 수 있습니다.

제거하려는 경우 일반적으로 프로세스는 make uninstall입니다. 경고가 없습니다 (위에서 말했듯이).

make config시스템을 변경하지는 않지만 make install하겠습니다.

초보자 apt-get는 바이너리 패키지에 사용 하거나 배포판을 사용하는 것이 좋습니다 . 그것은 멋지고 체계적으로 유지되며 실제로 원치 않는 한 시스템을 손상시키지 않습니다.

바라건대, 그것은 모든 것을 정리합니다.


3
들어 Traceless를 당신은 물론 사용 제거 --purge와 옵션apt-get
하겐 폰 Eitzen

16

이론적으로 추가 된 make uninstall것을 제거하고 make install시스템에 균열이 축적되지 않아야합니다. 물론 문제는 모든 makefile이 동일하게 생성되는 것은 아니라는 것입니다.

어떤 사람들은 uninstall규칙을 생략하여 규칙이 무엇을했는지 알아낼 수 있습니다 install. 설상가상으로, 설치 규칙이 연결된 라이브러리를 덮어 쓰면 바보 같은 uninstall루틴이 다른 프로그램에 대한 종속성을 손상시킬 수 있습니다.

소스 설치를위한 최상의 솔루션은 시스템의 패키징 관리자가 설치 한 패키지와 다른 접두사를 사용하는 것입니다. Apt는 소스 설치에 계층을 /usr/사용하도록 파일을 /usr/local/설치합니다. 따라서 어떤 패키지에 속하는 파일을 쉽게 추적하고 제거해도 시스템이 손상되지 않습니다.

./configure --prefix=/usr/local많은 구성 스크립트에서 작동합니다. 그렇지 않은 경우 Makefile을 수동으로 편집 할 수 있습니다. 또는 파일을 수동으로 복사하십시오.

Apt 및 기타 패키징 관리자는 설치 한 파일과 역방향 종속성을 추적하여 제거 기능을 안전하게 사용할 수 있습니다.


15

난 당신이 사용을 추천 할 것입니다 apt-get install리눅스와의 모든 패키지 설치 apt-get remove(패키지 이름) 또는 apt-get purge메인 제거 할 것을 패키지를 제외한 모든 설치하는 동안 설치된 관련 패키지 나 의존성뿐만 아니라 제거합니다 (패키지 이름).

이제 시스템을 깨끗하게 유지하려면 apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( 이 게시물은 흥미 롭습니다.) 설치 중에 다운로드되었지만 더 이상 필요하지 않은 모든 파일을 제거합니다.

시스템에 설치되어 있지만 제거 할 때 제거되지 않은 모든 종속성을 제거하려는 경우에 유용한 다른 명령은 apt-get autoremove입니다.

make and make install을 통해 패키지를 설치하는 경우 직접 패키지를 제거하고 (다운로드하는 패키지에 포함 된 README 파일이 포함되어 있음) 파일과 관련된 모든 종속성을 제거해야합니다. . 따라서 배포판의 패키지 관리자가 제공하는 Linux에 패키지를 설치하는 것이 항상 권장되는 이유입니다.이 방법으로 패키지를 사용하면 사용중인 배포판 (Linux의 풍미)과 함께 작동하기에 충분히 패키지가 테스트되었는지 확인할 수 있습니다 시스템을 손상시킬 가능성이 거의 없습니다. 또한 필요할 때 패키지를 업데이트 할 수 있지만, 직접 설치하는 경우이 모든 작업을 수행해야합니다.

이게 도움이 되길 바란다 :)


11

Linux에서 설치된 응용 프로그램을 관리하는 일반적인 방법은 패키지 관리자를 사용하는 것입니다. 패키지 관리자의 선택은 배포판을 차별화하는 주요 요소 중 하나입니다. 데비안과 마찬가지로 우분투는 dpkgAPT를 사용합니다 . 대부분의 경우 apt-get(명령 줄), 적성 (명령 줄 또는 텍스트 모드) 또는 시냅틱 (GUI) 과 같은 APT 인터페이스 중 하나와 만 상호 작용하면됩니다 .

패키지 관리자는 어떤 파일이 설치된 프로그램에 속하는지 추적합니다. Windows와 마찬가지로 프로그램은 설치 또는 제거 절차의 일부로 임의 코드를 실행할 수 있지만 일반적으로 잘 작동하며 다른 프로그램을 중단하지 않습니다. 또한 (설치되지 않은) 설치 코드는 업스트림 작성자가 아닌 패키지 관리자가 작성합니다 (주 배포 패키지). Windows와 달리 설치, 업그레이드 및 제거를위한 통합 인터페이스 인 패키지 관리자가 있습니다. 제거 프로그램 (있는 경우)을 검색하지 않아도됩니다. 그래픽 패키지 관리자에서 "제거"아이콘을 클릭하거나을 실행하면 apt-get remove PACKAGENAME됩니다.

"이국적인"소프트웨어가 필요한 경우, 아카이브의 압축을 풀거나 소스에서 컴파일하여 수동으로 설치해야합니다. 실행 가능한 프로그램 형태로 제공되는 설치 프로그램은 Linux 세계에서는 거의 없습니다. 실행은 make install여러 디렉토리 (이상 각 프로그램을 확산하는 경향이 /usr/local/bin, /usr/local/man, /usr/local/lib, 등). 물건을 정렬하려면 stow 와 같은“가난한 사람의 패키지 관리자”를 사용하는 것이 좋습니다 . stow를 사용하면 각 패키지가 자체 디렉토리에 설치되고 stow유틸리티는 기호 링크 작성 을 처리하여 패키지가 설치 한 명령이 명령 검색 경로 등이되도록합니다. 자세한 내용 은 프로그램 추적 유지 를 참조하십시오.


이 "이국적인 소프트웨어"는 누구나 쓸 수 있습니까? 이 "이국적인 소프트웨어"가 어떻게 배포판에서 공식적으로 제공됩니까? 누구나 한 줄씩 소스 코드를 검토합니까? 예를 들어 Ubuntu는 APT-GET 명령에 소프트웨어를 포함시키고 다른 소프트웨어를 무시하기로 어떻게 결정합니까?
AlexStack

1
@AlexStack 대부분의 배포는 자원 봉사자들에 의해 이루어집니다. 우분투는 Canonical의 후원을 받아 몇 사람에게 돈을 지불하지만 여전히 패키지 유지 보수의 대부분은 자원 봉사자가 수행합니다. 따라서 가장 정확한 답변은 Ubuntu에 자원 봉사자가 포함하기로 결정한 모든 소프트웨어가 포함되어 있다는 것입니다. 더 정확하게 말하면, 우분투에있는 대부분의 소프트웨어는 데비안에서 제공되므로 데비안 개발자 는 패키지를 처리 ​​할 가치가 있다고 결정해야하며 소프트웨어는 정책 을 준수해야합니다 (허용 가능한 라이센스, 버그가 없음).
Gilles 'SO- 악마 그만해'

@AlexStack은 해당 소프트웨어가 Ubuntu 리포지토리에서 (예 : 기본 설치 등을 통해) 사용 가능하더라도 특정 소프트웨어를 한 줄씩 검토했음을 보증하지 않습니다 apt-get. 그러나 그들은 리포지토리에 합리적으로 인기있는 프로그램을 넣었습니다. 사용자는 기본적으로해야 할 일을 확신 할만큼 충분한 사용자가 있습니다.
David Z


8

가능하면 패키지 관리자 (apt-get, aptitude, synaptic 또는 aptdcon, 소프트웨어 센터, mintinstall 등)를 사용해야합니다. 설치를 위해 make 작업을 사용하는 것은 매우 원시적이며 uninstall상대방을 보장하지 않으며 나머지 시스템과 잘 작동한다고 보장하지 않습니다 (make 's 빌드 시스템에 묶인 스크립트 일뿐입니다. 검토 된 패키지와 달리 작업에 포함될 수 있습니다 모든 실행 코드, 잠재적으로 악성 코드).

필요한 소프트웨어 패키지 버전을 찾지 못하면 checkinstall( checkinstall make install)가 도움 이 될 수 있습니다.


3

나는 전문가가 아니며 소스에서 소프트웨어를 설치하는 것에 대해 잘 모르지만을 사용 apt-get하면 설치된 소프트웨어를로 제거 ​​할 수 있습니다 apt-get remove package-name. 모든 구성 파일도 제거하려면을 사용하십시오 apt-get purge package-name. Linux 설치를 깔끔하게 유지하는 가장 안전한 방법은 공식 리포지토리의 패키지 만 사용하는 것입니다. 공식 저장소에없는 패키지가 필요한 경우 PPA 에서 패키지를 찾을 수 있습니다 (우분투를 사용하기 때문에) .


apt-get사용 된 영업 이익 아무 소용 없습니다 configuremake install
roaima

3

다른 답변에서 알 수 있듯이 요즘은 배포판의 패키지 관리자를 사용하여 대부분의 소프트웨어를 설치하는 것이 일반적입니다. 이것은 Windows로 돌아갈 때 놓칠 수 있도록 매우 편리합니다! 어떤 의미에서, 다양한 "시장"과 "상점"은 상업용 운영 체제에서도 그 방향으로 가고 있습니다.

나는 리눅스에 대해 처음 배우기 시작했을 때 소프트웨어가 일반적으로 설치되는 방식에 당황했다는 것을 기억합니다. Windows에서 모든 파일은 아래의 단일 디렉토리에 c:\Programs있지만, 전통적인 "유닉스 방식"은 "표준 위치"에 파일을 흩 뿌려 놓는 것입니다 (세부 사항은 표준화되지 않았습니다. ) (예 : /usr/local/bin실행 파일, /usr/local/doc문서 등)

어떤 의미에서 Windows는 실행 파일의 위치를 ​​"알지 못합니다". 그것들은 그들이 "어딘가"에 있다는 것을 알고 c:\Program Files있지만, 그 이상은 아닙니다. 디렉토리를 찾기 위해 모든 디렉토리를 스캔하는 것은 엄청나게 비싸거나 비쌌습니다. 따라서 실행 파일에 대한 링크는 알려진 위치 (시작 메뉴)에 명시 적으로 배치되며이를 시작하는 데 사용됩니다.

유닉스 / 리눅스에서 쉘과 그 문제에 대한 대부분의 다른 프로그램은 알려진 위치에서 실행 파일이나 기타 리소스를 자동으로 찾습니다. 따라서 파일을 적절한 디렉토리에 복사하기 만하면 사용자가 파일을 알 수있는 위치에 "등록"할 필요없이 자동으로 파일을 "표시"하게됩니다.

두 메커니즘 모두 장단점이 있지만 유닉스 접근 방식이 일반적으로 더 유연하다는 것을 알 수 있습니다.

그림과 같이 그림을 명확하게 잘라 내지 못하는 예외와 세부 사항이 많이 있다는 것을 명심하십시오. 그러나 이런 종류의 소개는 초보자가 최소한 기본 논리를 이해하는 데 유용 할 수 있다고 생각합니다.


감사합니다 @unclezeif. "사방에 흩어져있는 파일"과 관련된 문제는 이해하지 못하기 때문에 실제로 버그가 있습니다. 당신은 유닉스 접근 방식이 일반적으로 더 유연하다고 말했다. 좀 더 자세히 설명해 주시겠습니까?
AlexStack

예를 들어, 문서는 모두 한곳에 있고 아이콘은 모두 한곳에 있습니다. 어떤 경우에는 정말 좋습니다! 더 유연하다는 것은 모든 경로를 기반으로 다음과 같은 작업을 수행 할 수 있음을 의미합니다. 환경 변수가 변경된 새 쉘을 생성하여 특정 디렉토리의 실행 파일 만 볼 수 있으므로 선택을 제한 (또는 확장)합니다. 파일 및 환경 변수 만 사용하여 사용자 지정 수준을 높이기 때문에 매우 간단합니다.
UncleZeiv

또 다른 예는 다음과 같습니다. 원칙적으로 홈 디렉토리 (예 : / home / foo / bin)에 프로그램을 설치하고 공유 시스템을 건드리지 않고 경로 환경에 / home / foo / bin을 추가 할 수 있습니다.
UncleZeiv

3

가장 좋은 조언은 이 포럼 게시물 에 있다고 생각합니다 . 옵션은 다음과 같습니다 (2와 3은 효과 측면에서 거의 동일합니다).

  1. 패키지 관리자 및 저장소를 사용하십시오. 즉, 업데이트, 공식 릴리스, 서명 된 릴리스 등을 얻는다는 의미입니다.
  2. 저장소에서 패키지를 사용할 수 없거나 사용하지 않는 경우 소프트웨어 용 패키지를 빌드하고 패키지 관리자를 사용하여 설치하십시오. 데비안 기반 시스템에서이 작업을 수행하는 자세한 지침은 위의 링크에 게시되어 있습니다. 처음에는 두려운 것처럼 보이지만 실제로는 매우 간단합니다. 특히 데비안의 경우 많은 노력을 기울일 수있는 많은 스크립트가 있습니다.
  3. 해당 방법을 사용할 수 없으면 checkinstall다른 사람이 권장 한대로 사용하십시오 . 설치를 간단하게 대체 할 수 있습니다.

    $ ./configure
    $ make
    $ sudo checkinstall
    

    이것은 소프트웨어를 정상적으로 빌드 한 다음, 소프트웨어가 수행 make install하는 작업을 추적하고 정확하게 그런 일을하는 패키지를 구축하는 제한된 환경에서 실행 해야합니다. 그런 다음 패키지 관리자와 함께 해당 패키지를 설치합니다. 그런 다음 제거는 (2)에서와 같이 다른 패키지를 제거하는 것과 같습니다.

  4. 패키지 관리자를 사용할 수 없거나 사용하지 않는다면을 사용하십시오 make install. 소프트웨어 관리자가 제거 루틴을 유지하기를 바랍니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.