본문 바로가기
프로그래밍 놀이터/Script(Python)

[책 정리] 09.소프트웨어 설치하기 - 리눅스 커맨드라인 쉘 스크립트 바이블

by 돼지왕왕돼지 2020. 4. 29.
반응형

패키지 관리 기초


-

리눅스 배포판은 각 소프트웨어 앱 및 라이브러리 설치를 제어할 수 있는 몇 가지 유형의 패키지 관리 시스템(PMS)을 사용한다.

PMS 는 이러한 항목들을 추적하기 위해 DB 를 사용한다.

    리눅스 시스템에 어떤 소프트웨어 패키지가 설치되어 있는가?

    각 패키지마다 어떤 파일이 설치되어 있는가?

    설치된 소프트웨어 패키지 버전은 각각 얼마인가?


소프트웨어 패키지는 저장소(레포지토리)라는 서버에 저장되고 인터넷으로 내 리눅스 시스템에서 구동되는 PMS 유틸을 통해 저장소에 접근할 수 있다.

새로운 소프트웨어 패키지 또는 이미 시스템에 설치된 소프트웨어 업데이트를 검색하기 위해 PMS 유틸을 사용할 수 있다.


PMS 는 의존성을 감지하고 원하는 패키지를 설치하기 전에 추가로 필요한 소프트웨어 패키지도 설치한다.



-

PMS 의 단점은 한 가지 표준 유틸로 통합되어 있지 않다는 것이다.

PMS 유틸 및 관련 명령은 여러 리눅스 배포판 사이에 크게 다르다.

일반적으로 사용되는 두 가지 기본 PMS 기본 유틸은 dpkg 와 RPM 이다.


데비안 기반 배포판은 자체 PMS 인 dpkg 명령을 기반으로 한다.

레드헷 기반의 배포판은 자체 PMS 인 rpm 명령을 기반으로 한다.




데비안 기반 시스템


-

dpkg 명령은 데비안 기반 제품군의 PMS 도구 가운데 핵심이며 다른 도구들도 이에 포함되어 있다.

    apt-get

    apt-cache

    aptitude


가장 널리 쓰이는 도구는 aptitude 이다.

이는 기본적으로 apt 도구와 dpkg 명령 모두에 대한 프론트엔드다.

dpkg 는 PMS 도구인 반면 aptitude 는 완전한 패키지 관리 시스템이다.



* aptitude 로 패키지 관리하기


-

패키지가 시스템에 이미 설치되어 있는지 여부를 판단해야 한다.

aptitude 는 편리한 대화형 인터페이스를 가지고 있다.



-

특정 패키지에 대해 빠르게 확인하고 싶다면 다음 명령을 수행한다.

$ aptitude show <package_name>



-

aptitude 로 특정 소프트웨어 패키지와 관련된 모든 파일들의 목록을 얻을 수 없는데, 이 목록을 얻으려면 dpkg 도구 자체를 써야 한다.

$ dpkg -L <package_name> # 설치되는 모든 파일 목록을 출력한다.



-

다음 명령으로 역으로 소속된 패키지를 찾을 수도 있다.

$ dpkg --search <absolute_file_name>



* aptitude 로 소프트웨어 패키지 설치하기


-

$ aptitude search <package_name>

package_name 은 와일드카드를 넣지 않아도 자동으로 와일드카드처럼 작동한다.

각 패키지 이름 앞에 p 또는 i 글자가 붙어 있는데, i 나 u 가 있다면 패키지는 이미 설치되어 있다는 의미이다.

p 나 v 가 붙어 있다면 사용할 수 있지만 설치되지 않았음을 이야기한다.



-

설치는 install 로 한다.

$ aptitude install <package_name>



* aptitude 로 소프트웨어 업데이트하기


-

모든 소프트웨어 패키지를 저장소에 있는 새로운 버전으로 안전하게 업데이트하려면 safe-upgrade 옵션을 사용한다.

$ aptitude safe-upgrade


소프트웨어 업그레이드를 위한 덜 보수적인 옵션을 사용할 수도 있다.

아래 명령어들은 다른 패키지 사이의 의존성을 확인하지 않아, 전체 패키지 의존성 문제는 뒤죽박죽일 수 있다.

그래서 안전하게 safe-upgrade 옵션을 사용하는 것이 추천된다.

$ aptitude full-upgrade

$ aptitude dist-upgrade



* aptitude 로 소프트웨어 제거하기


-

소프트웨어 패키지를 제거할 수 있지만 데이터 및 구성 파일은 그대로 두려면 remove 옵션을 사용한다.

모든 것을 제거하려면 purge 옵션을 사용한다.

$ sudo aptitude purge <package_name>



* aptitude 저장소


-

리눅스 배포판을 설치할 때 aptitude 의 기본 소프트웨어 저장소 위치가 설정된다.

저장소 위치는 /etc/apt/sources.list 에 저장된다.

일반적으로는 추가/제거할 필요가 없지만 필요한 경우 이 파일을 손보면 된다.


자세한 내용은 생략한다.




레드햇 기반 시스템


-

yum : 레드햇과 페도라에서 사용

urpm : 맨드리바에서 사용

zypper : 오픈수세에서 사용


이 프론트엔드는 rpm 커맨드라인 도구를 기반으로 한다.



* 설치된 패키지 목록 보기


-

$ yum list installed


urpm 과 zypper 에 대한 내용은 생략한다.



-

특정 파일이 어떤 소프트웨어 패키지가 제공했는지를 찾아보려면 provides 를 사용하면 된다.

$ yum provides <file_name>



* yum 으로 소프트웨어 설치하기


-

$ yum install <package_name>



-

rpm 설치 파일을 수동으로 다운로드한 다음 yum 으로 설치할 수도 있다.

이를 로컬 설치라고 한다.

$ yum localinstall <package_name>.rpm



* yum 으로 소프트웨어 업데이트하기


-

$ yum list updates #  업데이트 목록 보여준다.

$ yum update <package_name>

$ yum update # 가능한 모든 패키지 업데이트



* yum 으로 소프트웨어 제거하기


-

$ yum remove <package_name> # 구성 및 데이터 파일은 보존한다.

$ yum erase <package_name> # 모든 파일 제거



* 깨진 의존성 다루기


-

여러 소프트웨어 패키지가 로드되다 보면 때로는 패키지가 설치되는 과정에서 다른 패키지에 대한 소프트웨어 의존성을 덮어쓸 수 있다.

이를 깨진 의존성이라고 한다.

이런 일이 일어난 경우 다음 명령을 실행한다.

$ yum clean all


그 다음 update 옵션을 사용해 본다.

$ yum update


그래도 해결되지 않으면 다음 명령을 실행한다.

$ yum deplist <package_name>

이 명령은 모든 패키지 라이브러리의 의존성과 어떤 소프트웨어 패키지가 이를 제공하는지를 보여준다.


그래도 해결되지 않으면 마지막으로 사용할 수 있는 도구가 있다.

$ yum update --skip-broken

이를 사용하면 의존성이 깨진 패키지를 무시하고 다른 소프트웨어 패키지를 업데이트한다.

깨진 패키지에는 도움이 되지 않을 수도 있지만 적어도 시스템의 나머지 패키지를 업데이트할 수 있다.



* yum 저장소


-

다음 명령을 통해 저장소를 볼 수 있다.

$ yum repolist


저장소를 추가/제거하려면 /etc/yum.repos.d 를 수정하면 된다.


자세한 내용은 생략한다.




소스코드에서 설치하기


-

tar.gz 파일 기반으로 설치하는 방법을 안내해본다.

$ tar -zxvf <package_name>.tar.gz


설치 요령은 보통 AAAREADME, README 파일 등에 들어 있다.

또한 이 형태의 설치는 소스코드 컴파일이 필요하기 때문에 컴파일러가 있는지도 확인해야 한다.



반응형

댓글0