3일차_리눅스 패키지 관리(~p.160)

최지웅·2024년 7월 24일
0

인프라

목록 보기
5/19

rpm 패키지 관리자

  • tar로 묶고 gzip으로 압축한 tar.gz나 .tgz는 컴파일이 번거롭다. 또 컴파일된 파일을 다운받아 사용하면 sw간 의존성을 알 수 없다. 이를 해결한 것이 Red Hat Package Manager RPM인데 의존성 관리로 쉬우며 위변조 여부 검증이 가능하다.
  • rpm의 옵션으로 -q(패키지 정보 조회) -i(설치) -U(업그레이드) -e(삭제) -V(검증) -K(서명검증) -v(자세히) 등이 있다.
  • 아래는 아파치 웹 서버가 HTTPS 보안 프로토콜을 지원하게하는 모듈 mod_ssl이다.
# rpm -ivh mod_ssl-2.2.15-29.el6.centos.x86_64.rpm
# rpm -ivh http://centos.mirror.cdnetworks.com/6.5/os/x86_64/Packages/mod_ssl-2.2.15-29.el6.centos.x86_64.rpm
  • mode_ssl에 필요한 패키지가 없다면 필요한 의존성 패키지 목록을 출력하며, 이들을 먼저 설치해야한다. mode_ssl이 2.2.16으로 업데이트 되었다면 아래처럼 반영할 수 있다.
# rpm -Uvh mode_ssl-2.2.16-29.el6.centos.x86_64.rpm
  • 삭제시 패키지명만 기술해도 된다. 마찬가지로 삭제하려는 패키지에 의존 패키지가 있을 경우 먼저 해당 패키지를 지워야한다.
# rpm -e httpd  # mod_ssl 떄문에 실패.

질의 모드

  • rpm에 다양한 질의를 사용할 수 있다.
# rpm -qa | less # 전체 패키지 목록 확인
# rpm -qi libssh2 # 특정 패키지 자세한 정보 보기
# rpm -ql hwdata # 패키지가 어떤 경로에 파일을 설치했는지 경로를 확인
# rpm -qpl 경로 # 설치 전 확인
# rpm -qf /etc/httpd/conf/magic # 특정 파일이 어떤 패키지로 부터 설치되었는지 확인
# rpm -qR mod_ssl # 패키지 의존성 목록 확인
# rpm -q --changelog openssl # 패키지 변경 이력 보기(업데이트 시 개선된 점, 취약점 해결 등)

서명모드

  • 실제로 설치하려하는 패키지를 누가 만든 것인지 확실히 확인하고 설치하고 싶을 때 사용하는 방법으로, -K 옵션을 사용한다.
  • rpm 패키지가 위변조됐거나 서명자의 KEY를 모를 경우 에러가 발생한다.
# rpm -K http://centos.mirror.cdnerworks.com/6.5/os/x86_64/os/x86_64/Packages/mod_ssl-2.2.15-29.el6.centos.x86_64.rpm
  • MySQL처럼 전자서명키가 기본적으로 설치되어있지 않은 경우 제조사의 키를 구해서 --import 옵션으로 추가하면 된다.

검증모드

  • rpm은 설치정보 DB가 있기에 패키지 설치 이후에도 로컬 패키지의 변경내역을 -V 옵션으로 확인할 수 있다. 중요한 항목으로 S(크기다름), M(모드다름_권한 및 형식), 5(MD5해시가 다름-파일변경), U(소유권변경), T(변경시간 다름)
# rpm -V httpd

-RPM 사용 시 주의할 점은 패키지의 업데이트 사항을 알려면 수동으로 확인해야 하기에 심각한 보안 문제나 버그가 발생했을 때 관심이 없다면 이전 버전을 사용할 수 있다는 것이다. rpm의 단점을 보완하기 위해 YUM이 등장했다.

YUM 패키지 관리자

  • Yellowdog Updater, Modified YUM은 rpm개선을 위해 중앙 패키지 저장소를 통해 패키지 검색, 설치, 의존성관리, 플러그인 확장 등을 지원한다.
  • yum의 동작 방식은 하나의 [main] 섹션을 가지고 있는 /etc/yum.conf에서 설정되며 name=value 형식으로 동작을 지정한다.
  • 대표적인 값은 다음과 같다. assumeyes(사용자 선택이 필요한 경우 그냥 할지말지), cachedir(패키지 저장경로), keepcache(설치완료시캐시유지할까말까), debuglevel(정보출력정도), logfile(로그파일절대경로), exactarach(설치패키지와 아키텍쳐가 같을때만 업데이트), obsoletes(쓸모없는거 업데이트 안함), gpgcheck(CNU PG서명값 검사), plugins(플러그인사용유무), installonly_limit(덮어쓰기말고 새로깔기만해), bugtracker_url(버그발생시 보고할 url), distroverpkg(배포판버전확인 패키지설정), group_package_types(groupinstall, groupremove 관련 설정)

yum 저장소 설정

  • /etc/yum.repos.d/저장소명.repo로 저장되어있다. 대표적으로 [base] (저장소 식별 id), name(저장소이름), baseurl(패키지 기본 저장소 url), mirrorlist(centos 국가별 미러사이트를 찾아 빠르게 저장소 접속), enabled(저장소 사용유무)
    , gpgcheck(yum 패키지 설치 시 GPG서명검증 여부), gpgkey(서버 공개키 경로)

주요 명령어와 옵션

  • --enablerepo=[repo], --disablerepo=[repo], --nogpgcheck, -d, -y(--assumeyes)

패키지 관리

  • update 명령 뒤에 패키지명을 생략하면 전체 시스템을 업데이트 하기 때문에 운영체제의 마이너 버전까지도 변경될 수 있다.
# yum install httpd*
# yum remove httpd
# yum update openssl

# yum check-update # 업데이트 할 패키지 목록 확인
# yum clean packages metadata # 패키지 정보돠 메타 데이터의 캐시데이터 정리
# yum repolist # 저장소 목록 확인
# yum search mysql # 해당 패키지가 존재하는지 검색
# yum list httpd* # 패키지의 개략적인 정보 출력
# yum list installed # 현재 시스템에 설치된 모든 패키지 목록을 표시

# 
profile
이제 3학년..

0개의 댓글