본문 바로가기
I T/Linux

레드햇계열 리눅스 RPM 사용법

by 루솨 2015. 8. 30.
RPM 사용법 정리

RPM(Red Hat Package Management)은 레드햇 사와 수세 리눅스 사의 리눅스 배포본 제품에서 사용하는 패키지의 설치 및 제작 관리 소프트웨어다. RPM을 사용하면 패키지 관리를 쉽고 효율적으로 할 수 있다. 물론 레드햇 리눅스인 경우, '응용 프로그램 추가/삭제'(시작->시스템 설정->응용 프로그램 추가/삭제)에서 윈도우즈 식으로 쉽게 프로그램을 추가하고 삭제할 수 있지만 보다 구체적으로 작업을 하려면 역시 RPM이 필요하다. 여기서는 RPM 사용법을 간단히 정리해보겠다.

RPM 버전 확인

[root@localhost root]# rpm --version
RPM 버전 - 4.2

RPM 도움말 출력

[root@localhost root]# rpm --help

도움말이 길게 출력되므로 페이지 단위로 끊어보려면 다음과 같이 한다.

[root@localhost root]# rpm --help | less

또는,

[root@localhost root]# rpm --help | more


RPM 패키지 이름 구조

mysql-3.23.58-4.i386.rpm

mysql : 패키지 이름
3.23.58: 버전
4: 릴리즈 번호
i386: 아키텍처

RPM의 다섯 가지 옵션

설치 모드: -i 또는 -U (install, upgrade)
제거 모드: -e (erase)
질의 모드: -q (query)
검증 모드: -V 또는 -y (verify)
패키지 제작 모드: -b (build)

설치/제거

[root@localhost Download]# rpm -i 어떤.rpm
[root@localhost Download]# rpm -U 어떤.rpm
[root@localhost Download]# rpm -ivh 어떤.rpm
[root@localhost Download]# rpm -Uvh 어떤.rpm


'-i' 옵션이나 '-U' 옵션은 간단히 설치하거나 업그레이드할 때 사용하고, 일반적으로 '-ivh''-Uvh'를 사용하는데 '-Uvh'를 더 많이 사용한다. 'v'는 설치 과정에서 여러가지 정보를 출력하고 'h''#'으로 진행되는 과정을 출력한다.

기타 옵션

--force : 강제로 설치한다. --replacepkgs, --replacefiles, --oldpackage를 함께 사용하는 격이다.
--nodeps: 의존 관계를 완전히 무시하고 진행하라는 옵션. 의존성에 문제가 있으면 설치가 중단되는데 이를 무시하는 것이므로 설치 후에 문제가 생길 가능성이 많다. 따라서 어지간해서는 사용하지 않는 것이 좋다.
--test: 설치/업그레이드/제거를 실제로 하기 이전에 테스트만 한다.


[root@localhost Download]# rpm -Uvh 어떤.rpm --force --nodeps

패키지 질의

'-q' 옵션은 여러 모로 많이 사용된다. 시스템에 어떤 파일이 있는데 그 파일이 어떤 패키지에서 풀려나왔는지를 알려면 다음과 같이 사용한다.

[root@localhost Download]# rpm -qf /usr/bin/as
binutils-2.13.90.0.18-9

어딘가에서 내려받은 rpm 파일이 있는데 이 패키지가 어떤 것인지를 알아보려면 '-qpi' 옵션을 사용한다.

[root@localhost Download]# rpm -qpi mysql-3.23.58-4.i386.rpm

경고: mysql-3.23.58-4.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2
Name : mysql Relocations: (not relocateable)
Version : 3.23.58 Vendor: Red Hat, Inc.
Release : 4 Build Date: 20031028() 오전 050454
Install Date: (not installed) Build Host: bugs.devel.redhat.com
Group : 응용 프로그램들/데이터베이스 Source RPM: mysql-3.23.58-4.src.rpm
Size : 16511485 License: GPL/LGPL
Signature : DSA/SHA1, 20031029() 오전 085312, Key ID b44269d04f2a6fd2
Packager : Red Hat, Inc.
Summary : MySQL 클라이언트 프로그램과 공유 라이브러리.
Description :
MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
client/server implementation consisting of a server daemon (mysqld)
and many different client programs and libraries. This package
contains the MySQL client programs, the client shared library, and
generic MySQL files.

출력 내용은 위와 같이 나온다.

'-qpl' 옵션을 사용하면 rpm 패키지가 설치할 파일 목록을 볼 수 있다.

[root@localhost Download]# rpm -qpl mysql-server-3.23.58-4.i386.rpm
경고: mysql-server-3.23.58-4.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2
/etc/logrotate.d/mysqld
/etc/rc.d/init.d/mysqld
/usr/bin/mysqladmin
/usr/bin/safe_mysqld
/usr/libexec/mysqld
/usr/share/doc/mysql-server-3.23.58
/usr/share/doc/mysql-server-3.23.58/my-huge.cnf
/usr/share/doc/mysql-server-3.23.58/my-large.cnf
/usr/share/doc/mysql-server-3.23.58/my-medium.cnf
/usr/share/doc/mysql-server-3.23.58/my-small.cnf
/var/lib/mysql
/var/run/mysqld

시스템에 설치된 패키지의 버전이 어떻게 되는지 확인해야할 경우가 있다. 이럴 경우에는 '-q' 또는 '-qi'를 사용한다.

[root@localhost Download]# rpm -qi php
Name : php Relocations: (not relocateable)
Version : 4.2.2 Vendor: Red Hat, Inc.
Release : 17 Build Date: 20030225() 오후 114855
Install Date: 20040222() 오전 010252Build Host: sylvester.devel.redhat.com
Group : 개발/언어 Source RPM: php-4.2.2-17.src.rpm
Size : 3821986 License: The PHP License
Signature : DSA/SHA1, 20030226() 오전 121956, Key ID 219180cddb42a60e
Packager : Red Hat, Inc.
Summary : PHP HTML-내장된 스크립트 언어. (PHP: Hypertext Preprocessor)
Description :
PHP is an HTML-embedded scripting language. PHP attempts to make it
easy for developers to write dynamically generated webpages. PHP also
offers built-in database integration for several commercial and
non-commercial database management systems, so writing a
database-enabled webpage with PHP is fairly simple. The most common
use of PHP coding is probably as a replacement for CGI scripts. The
mod_php module enables the Apache Web server to understand and process
the embedded PHP language in Web pages.

시스템에 설치된 어떤 패키지가 어떠한 파일들을 풀어놓았는지를 보려면 '-ql'을 사용한다.

[root@localhost Download]# rpm -ql php

'-qa'를 사용하면 시스템에 설치된 모든 패키지 목록을 보여준다.

[root@localhost Download]# rpm -qa

mysql이라는 문자열이 들어간 mysql 관련 패키지만 보려면 grep을 파이프로 사용할 수 있다.

[root@localhost Download]# rpm -qa | grep mysql
mysql-3.23.54a-11
mysql-server-3.23.54a-11
php-mysql-4.2.2-17

특정한 패키지 그룹을 한꺼번에 다 지우려면 ``을 사용해 한 명령의 출력 결과를 다른 명령의 인자로 사용할 수 있다. 예를 들면 다음과 같다.

[root@localhost Download]# rpm -e `rpm -qa | grep mysql`

편리하긴 하지만 한꺼번에 많은 패키지를 지우는 것은 위험하므로 가급적 이렇게 사용하는 것은 피하는 게 좋다.

---------------------------------------------------------------------------
우선 RPM은 미국의 레드햇이라는 리눅스 회사에서 공개한 패키징 시스템을 말 합니다.

1. 설치 하기

rpm -ivh 설치할 패키지명.rpm

의존성 에러가 있을 경우 설치

rpm -ivh --force 설치할 패키지명 (단 설치한 패키지가 제대로 동작할지는 장담할 수 없습니다. 의존성 에러는 다 해결해 주시는것이 좋습니다. ^^;)

2. 업그레이드

rmp -Uvh 업그레이드할 패키지명.rpm

3. 제거

rpm -e 제거할 패키지명

의존성 에러가 날 경우 제거

rpm -e --nodeps 제거할 패키지명

4. SRPM 컴파일

rpm --rebuild 펄파일 할 패키지명.src.rpm

이때 컴파일 된 패키지는 

/usr/src/redhat/BUILD (여기 없으면 /usr/src/redhat/RPMS/* 디렉토리를 살펴 보십시오.)