CentOS는 소프트웨어를 rpm 패키지 형태로 제공한다.
rpm 패키지는 yum 및 그놈 소프트웨어 관리 프로그램 등을 쉽게 설치 및 삭제할 수 있다.
리눅스는 대부분의 패키지를 기본적으로 제공하며, 제 3자가 제공하는 패키지 또한 rpm 형태로 배포되고 있다.
rpm 패키지를 설치할 경우 소프트웨어 업데이트를 쉽고 편리하게 진행할 수 있으며, 소프트웨어 삭제 시 깔끔하게 삭제된다.
1. 그놈 소프트웨어 관리(GUI)
프로그램 -> 시스템 도구 -> 소프트웨어
또는
명령어 gpk-application 확인 할 수 있다.
2. 소프트웨어 업데이트(GUI)
프로그램 -> 시스템 도구 -> 소프트웨어 업데이트
또는
명령어 gpk-update-viewer 확인 할 수 있다.
3. yum (Yellowdog Updater Modified)
yum은 /etc/yum.conf에 설정된 내역과 /etc/yum.repos.d/ 디렉토리에 저장된 저장소 파일에 지정된 서버로부터 업데이트된 패키지들을 검사하고 다운로드하여 설치할 수 있는 패키지 관리 프로그램이다.yum을 기반으로 GUI 애플리케이션 포함하여 동작되고 있다. yum을 사용하면 설치, 업데이트, 삭제 시 의존성을 검사하여 관련된 패키지를 설치, 업데이트, 삭제를 함께 진행할 수 있게 한다. 그리고 환경그룹, 패키지 그룹 별로 설치 및 삭제가 가능하다.
[yum 기본 사용법]
yum [옵션] [명령] [패키지명...]
yum에도 여러 옵션이 있지만, 특별한 경우가 아니면 사용되지 않는다.
만약 필요하면 man 페이지를 참고하도록 한다.
명령에는 install, update, check-update, remove, list, info 등이 있다.
[install]
yum에 install이 사용되면 패키지의 설치 작업이 진행된다.
다수의 패키지명을 공란으로 구분해서 나열하면 다수의 패키지를 설치하는 것이 가능하다.
패키지명의 어느 곳이나 *를 사용하여 패키지명을 지정할 수 있다.
예) *kernel, kernel*, kernel*devel, *ftp*devel 등이 모두 가능하다.
만약 vsftpd 패키지를 설치하고자 한다면 아래와 같이 입력한다.
yum install vsftpd
[update]
yum에 update 명령을 사용하면 패키지 업데이트 작업이 진행된다.
update 다음에 패키지명을 지정하지 않아도 된다.
패키지명을 지정하지 않으면 시스템의 모든 패키지에 대해 업데이트 작업이 진행된다.
패키지명을 지정하면 특정 패키지만 업데이트 할 수 있다.
다수의 패키지명들을 공란으로 구분하여 나열하면 다수의 패키지를 업데이트 하는 것이 가능하다.
시스템의 모든 패키지를 업데이트 하기위해 아래와 같이 입력한다.
yum update [package_name]
만약 kernel 패키지만 업데이트 하려면 아래와 같이 입력한다.
yum yodate kernel
[check-update]
yum에 check-update 명령을 사용하면 패키지를 업데이트하기 전에 업데이트된 패키지가 있는지 확인한다.
yum check-update
4. remove
yum에 remove 명령을 사용하면 특정된 패키지들의 삭제 작업이 진행된다.
물론, 의존성이 있는 관련 패키지들도 삭제된다.
만약 vsftpd 패키지를 삭제하려면 아래와 같이 입력한다.
yum remove vsftpd
5. list
yum에 list 명령을 사용하면 저장소 서버에 있는 모든 패키지 목록을 확인할 수 있다.
yum list
설치된 패키지 중 업데이트된 패키지 목록을 보려면 다음과 같이 입력한다.
yum list updates
설치 가능한 패키지의 리스트를 보려면 available 옵션을 사용한다.
yum list available
설치된 패키지의 리스트를 보려면 installed 옵션을 사용한다.
yum list installed
6. info
서버에 사용가능한 패키지들의 상세 정보를 출력 한다.
예) vsftpd 패키지에 대한 정보를 확인한다.
yum info vsftpd
7. group list
yum에 group list 명령을 사용하여 설치 가능한 환경그룹 및 패키지 그룹리스트를 확인할 수 있다.
yum group list
위 결과를 보면 환경그룹과 / 패키지그룹을 확인할 수 있다.
yum 명령어를 사용하여 설치 시 선택한 환경그룹을 변경할 수 있다.
환경그룹 | |
(1) 최소 설치 | 설 명 |
기본적인 기능 | |
기본 패키지 그룹 | |
core | |
선택 가능한 패키지 그룹 (options) | |
없음 | |
(2) 계산 노드 (CentOS 7.1에 추가 됨) |
설 명 |
계산 및 처리를 위해 설치 | |
기본 패키지 그룹 | |
base, core, scientific | |
선택 가능한 패키지 그룹 (options) | |
debugging, directory-client, guest-agents, hardare-monitoring, infiniband, network-file-system-client, performance, remote-system-management |
|
(3) 인프라 서버 | 설 명 |
네트워크 인프라 서비스를 운영하는 서버 | |
기본 패키지 그룹 | |
base, core | |
선택 가능한 패키지 그룹 (options) | |
backup-server, directory-client, directory-server, dns-server, file-server, ftp-server, guest-agents, ha, hardware-monitoring, identity-management-server, infiniband, java-platform, large-systems, load-balancer, mail-server, mariadb, network-file-system-client, performance, postresql, print-server, remote-system-manement, resilient-storage, virtualization-hypervisor |
|
(4) 파일 및 프린트 서버 | 설 명 |
기업용 파일, 프린트, 스토리지 서버 | |
기본 패키지 그룹 | |
base, core, file-server, print-server | |
선택 가능한 패키지 그룹 (options) | |
backup-client, backup-server, directory-client, guest-agents, ha, hardware-monitoring, java-platform, large-systems, network-file-system-client, performance, remote-system-management, resilient-storage |
|
(5) 기본 웹 서버 | 설 명 |
정적 및 동적 인터넷 컨텐츠를 제공하는 서버 | |
기본 패키지 그룹 | |
base, core, web-server | |
선택 가능한 패키지 그룹 (options) | |
backup-client, directory-client, guest-agents, hardware-monitoring, java-platform, large-systems, load-balancer, mariadb-client, network-file-system-client, performance, perl-web, php, postgresql-client,. python-web, remote-system-management, web-servlet |
|
(6) 가상화 호스트 | 설 명 |
최소 가상화 호스트 | |
기본 패키지 그룹 | |
base, core, virtualization-hypervisor, virtualization-toors | |
선택 가능한 패키지 그룹 (options) | |
network-file-system-client, remote-system-management, virtualization-platform | |
(7) 서버 -GUI 사용 | 설 명 |
GUI를 사용하여 네트워크 인프라 서비스를 운영하는 서버 | |
기본 패키지 그룹 | |
base, core, desktop-debugging, dial-up, fonts, gnome-desktop, guest-agents, guest-desktip-agents, input-methods, internet-browser, multimedia, print-client, x11 |
|
선택 가능한 패키지 그룹 (options) | |
backup-server, directory-server, dns-server, file-server, ftp-server, ha, hardware-monitoring, identity-management-server, infinibancd, java-platform, kde-desktop, large-systems, load-balancer, mail-server, mainframe-access, mariadb, network-file-system-client, performance, postgresql, print-server, remote-desktop-clients, remote-system-management, resilient-storage, virtualization-client, virtualization-hypervisor, virtualization-tools |
|
(8) GNOME 데스크탑 | 설 명 |
GNOME은 사용하기 쉽고 사용자 친화적인 데스크탑 환경 | |
기본 패키지 그룹 | |
base, base, core, desktop-debugging, dial-up, directory-client, fonts, gnome-desktop, guest-agents, guest-desktop-agents, input-methods, internet-browser, java-platform, multimedia, network-file-system-client, print-client, x11 |
|
선택 가능한 패키지 그룹 (options) | |
backup-client, backup-client, gnome-apps, internet-applications, legacy-x, office-suite, remote-desktop-clients, smart-card |
|
(9) KDE plasma Workspaces | 설 명 |
KDE Plasma Workspaces는 고급 설정이 가능한 그래픽 사용자 인터페이스로 패널, 데스크탑, 시스템 아이콘 및 데스크탑 위젯 등 여러 강력한 KDE 애플리케이션이 들어 있다. |
|
기본 패키지 그룹 | |
base, base, core, desktop-debugging, dial-up, directory-client, fonts, guest-agents, guest-desktop-agents, input-methods, internet-browser, java-platform, kde-desktop, multimedia, network-file-system-client, print-client, x11 |
|
선택 가능한 패키지 그룹 (options) | |
backup-client, backup-client, internet-applications, kde-apps, kde-media, legacy-x, office-suite, remote-desktop-clients, smart-card | |
(10) 개발 및 창조를 위한 워크스테이션 | 설 명 |
소프트웨어, 하드웨어, 그래픽, 또는 컨텐츠 개발을 위한 워크스테이션 | |
기본 패키지 그룹 | |
base, core, debugging, desktop-debugging, dial-up, directory-client, fonts, gnome-apps, gnome-desktop, guest-desktop-agents, input-methods, internet-applications, internet-browser, java-platform, multimedia, network-file-system-client, performance, perl-runtime, print-client, ruby-runtime, virtualization-client, virtualization-hypervisor, virtualization-tools, web-server, x11 |
|
선택 가능한 패키지 그룹 (options) | |
additional-devel, backup-client, compat-libraries, development, dns-server,emacs, file-server, ftp-server, graphics, hardware-monitoring, identity-management-server, infiniband, large-systems, legacy-x, load-balancer, mail-server, mainframe-access, mariadb, network-file-system-client, office-suite, perl-web, php, platform-devel, postgresql, python-web, remote-desktop-clients, technical-writing, |
패키지그룹은 아래와 같다.
패키지그룹(ID) | 설 명 |
anaconda-tools | Anaconda 도구, 인스톨러(anaconda)와 인스톨러 개발 도구 |
backup-client | 백업 클라이언트, 백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구 |
base | 기본, CentOS Linux 기본 설치 |
Compat-libraries | 호환성 라이브러리, 예전 버전의 CenOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리 |
confilicats-client | 충돌(클라이언트), 이 그룹에는 클라이언트 유형의 @everything 설치와 충돌하는 패키지가 포함되어 있다. |
console-internet | 콘솔 인터넷 도구, 관리자가 자주 사용하는 , 콘솔 인터넷 액세스 도구들. |
core | 핵심, 가능한 최소 설치 |
debugging | 디버깅 도구, 잘 못 동작하는 어플리케이션의 디버깅과 성능 문제 진단을 위한 도구. |
desktop-debugging | 데스크탑 디버깅과 성능 도구, 프로그램 디버깅과 성능 향상을 위한 GUI 도구 |
dial-up | 전화연결 네트워킹 지원, WWAN, PPP나 ISDN을 통한 연결을 위한 도구. |
directory-client | 디렉터리 클라이언트, 디렉터리 서비스에 의해 관리되는 네트워크에 통합하기 위한 클라이언트 |
emacs | 이맥스, GNU 이맥스 - 확장가능하고 사용자 변경 가능한 텍스트 에디터 |
fonts | 폰트, 여러 언어와 문자에서 텍스트를 표시하기 위한 폰트 |
gnome-apps | GNOME 응용 프로그램, 자주 사용하는 GNOME 애플리케이션 모음 |
gnome-desktop | GNOME, GNOME은 사용하기 쉽고 사용자 친화적인 데스크톱 환경 |
graphical-admin-tools | 그래픽기반 관리 도구, 시스템의 여러 측면을 관리하기 위한 그래픽 시스템 관리 도구 |
graphics | 그래픽스 생성 도구, 정지 화상을 만들고 다루기 위한 소프트웨어 |
guest-desktop-agents | 게스트 데스크톱 에이전트. 가상화 데스크톱으로 실행할 때 사용되는 에이전트 |
input-methods | 입력 방식, 다국어 텍스트 입력을 위한 소프트웨어 |
internet-applications | 인터넷 프로그램, 이메일, 채팅, 화상회의 소프트웨어 |
internet-browser | 인터넷 브라우저, Firefox 웹브라우저 |
java-platform | 자바 플랫폼, CentOS Linux 서버와 데스크톱 플랫폼을 위한 자바 지원 |
kde-apps | KDE 애플리케이션, 자주 사용하는 KDE 애플리케이션 모음 |
kde-desktop | KDE, KDE Plasma Workspaces는 고릅 설정이 가능한 그래픽 사용자 인터페이스로 패널, 데스크톱, 시스템 아이콘 및 데스크톱 위젯 등 여러 강력한 KDE 애플리케이션이 들어 있다. |
kde-media | KDE 멀티미디어 지원, KDE 용 멀티미디어 지원 |
legacy-unix | 레거시 UNIX 호환성, 레거시 유닉스 환경으로부터 마이그레이션이나, 동작 호환성을 위한 호환 프로그램 |
legacy-x | 레거시 X Windows 시스템 호환성, 레거시 X Windows 환경의 마이그레이션이나 상호 동작을 위한 호환 프로그램 |
meinframe-access | 메인프레임 액세스, 메인프레임 컴퓨팅 자원을 액세스하기 위한 도구 |
multimedia | 멀티미디어, 데스크톱에 일반적인 오디오/비디오 프레임워크 |
network-file-system-client | 네트워크 파일 시스템 클라이언트, 네트워크 저장소에 시스템을 붙이도록 함 |
network-tools | 네트워킹 도구, 컴퓨터 네트워크를 설정하고 분석하기 위한 도구 |
office-suite | 오피스 스위트/생산성, 완전한 오피스 스위트와 다른 생산성 도구들 |
performance | 성능 도구, 시스템과 어플리케이션 수준의 성능 문제를 진단하기 위한 도구 |
perl-runtime | Perl 지원, 공통 라이브러리와 기능에 대한 Perl 인터페이스 |
print-client | 인쇄 클라이언트, 로컬 프린터와 원격 프린트 서버에 인쇄를 지원하는 도구 |
remote-desktop-clients | 원격 데스크톱 클라이언트 |
remote-system-management | Linux용 원격 관리, OpenLMI 및 SNMP를 포함하여 CentOS Linux용 원격 관리 인터페이스 |
ruby-runtime | ruby 지원, ruby 지원을 위한 라이브러리 및 함수 |
security-tools | 보안 도구, 통합과 신뢰 검증을 위한 보안 도구 |
smart-card | 스마트카드 지원, 스마트카드 인증 사용 지원 |
technical-writing | 기술 저작, 기술 문서를 작성하기 위한 도구 |
virtualization-client | 가상화 클라이언트, 가상화 인스턴스를 관리하고 설치하기 위한 클라이언트 |
virtualization-hypervisor | 가상화 하이퍼바이저, 가능한 최소한의 가상화 호스트 패키지 |
virtualization-platform | 가상화 플랫폼, 가상화된 게스트와 컨테이너를 액세스하고 컨트롤하기 위한 인터 페이스 제공 |
virtualization-tools | 가상화 도구, 오프라인 가상 이미지 관리를 위한 도구 |
x11 | X 윈도우 시스템, X 윈도우 지원 |
ha | 고 가용성, 고가용성 서비스 또는 공유 저장소를 위한 인프라스트럭쳐 |
resilient-storage | 내결함성 스토리지, GFS2 파일시스템이 들어 있는 클러스터 스토리지 |
additional-devel | 추가 개발, 오픈 소스 애플리케이션 구축을 위한 기타 개발 헤더 및 라이브러리 |
backup-server | 백업 서버, 인프라스트럭쳐 백업을 중앙 집중화를 하기 위한 소프트웨어 |
conflicts-server | 충돌(서버), 이 그룹에는 서버 유형의 @everything 설치와 충돌하는 패키지가 포함되어 있다. |
development | 개발용 도구, 기본 개발 환경 |
directory-server | 디렉터리 서버, 기계와 사용자 식별 서버 |
dns-server | DNS 네임 서버, 이 패키지 그룹을 사용하여 시스템 상에서 DNS 네임 서버 (BIND)를 운영할 수 있다. |
file-server | 파일 및 스토리지 서버, CIFS, SMB, NFS, iSCSI, iSER, iSNS 네트워크 스토리지 서버, |
ftp-server | FTP 서버, 시스템이 FTP 서버로 동작하도록 허용 |
guest-agents | 게스트 에이전트, 하이퍼바이저에서 실행 시 사용되는 에이전트 |
hardware-monitoring | 하드웨어 모니터링 유틸리티, 서버 하드웨어를 모니터링 하기 위한 도구 모음 |
identity-management-server | ID 관리 서버, 사용자, 서버, 인증 정책을 중앙 관리 |
infiniband | Infiniband 지원, RDMA기반 InfiniBand와 iWARP 패브릭을 사용하여 클러스터링과 그리드 연결을 지원하기 위해 설계된 소프트웨어 |
large-systems | 거대 시스템 성능, 대형 시스템 용 성능 지원 도구 |
load-balancer | 로드 밸런싱, 네트워크 사용량에 대해 로드 밸렁싱을 지원 |
mail-server | 이메일 서버, SMTP 와 IMAP 전자우편 서버로 시스템이 동작하도록 허용 |
mariadb | MariaDB 데이터베이스 서버, MariaDB SQL 데이터베이스 서버와 관련 패키지 |
mariadb-client | MariaDB 데이터베이스 클라이언트, MariaDB SQL 데이터베이스 클라이언트와 관련 패키지 |
network-server | 네트워크 인프라스트럭쳐 서버, DHCP나 DNS와 같은 핵심 네트워크 프로토콜과 서비스를 위한 서버 |
perl-web | Perl - Web 용, 기본 Perl 웹 애플리케이션 지원 |
php | PHP 지원, PHP 웹 어플리케이션 프레임워크 |
platform-devel | 플랫폼 개발, CentOS Linux에서 실행되는 애플리케이션 개발 용으로 권장하는 개발 헤더 및 라이브러리 |
postgresql | PostgreSQL 데이터베이스 서버, PostgreSQL SQL 데이터베이스 서버와 관련 패키지 |
postgresql-client | PostgreSQL 데이터베이스 클라이언트, PostgreSQL SQL 데이터베이스 클라이언트와 관련 패키지. |
print-server | 인쇄 서버, 프린터 서버로 시스템이 동작하도록 허용 |
phthon-web | Python, 기본 Python 웹 애플리케이션 지원 |
scientific | 과학기술 지원, 수학/과학 계산과 병렬 계산을 위한 도구 |
system-admin-tools | 시스템 관리 도구, 시스템 관리에 유용한 유틸리티 |
system-management | 시스템 관리, 여러 저수준 하드웨어 관리 프레임워크 |
web-server | 웹 서버, 시스템이 웹서버로 동작하며 Perl과 Pyhon 웹 프로그램을 실행하도록 허용 |
web-servlet | 웹 서블렛 엔진, 시스템이 자바 서블릿을 호스트하도록 허용 |
conflicts-workstation | 충돌(워크스테이션), 이 그룹에는 워크스테이션 유형의 @everything 설치와 충돌하는 패키지가 포함되어 있다. |
[특정 패키지 업데이트 제외]
RAID 구성된 하드웨어에 CentOS를 설치하는 경우, 설치하는 과정에서 하드웨어 벤더에서 제공하는 RAID 드라이버를 올린다. 이러한 경우 Kernel이 업데이트되면 업데이트된 커널로 부팅하는 경우 드라이브가 없어 부팅에 실패하는 경우가 있다. 이러한 경우 Kernel 패키지만 제외하고 업데이트 하는 방법이 있다.
아래와 같이 설정한다.
/etc/yum.conf에 아래 내용을 추가한다.
exclude=kernel
위와 같이 추가하면 yum 업데이트 시 kernel 패키지는 제외하고 업데이트 한다.
여러 패키지를 명시할 경우 공백으로 구분하며, 와일드카드(" * " " ? ")를 사용할 수 있다.
8. group install
yum에 group install 명령을 사용하여 환경 그룹 및 패키지 그룹을 설치할 수 있다.
이 방법은 최소 설치한 서버에 GUI 환경을 구성하기 위해 사용할 수 있다.
"GNOME 데스크탑" 환경 그룹은 아래와 같이 설치할 수 있다.
yum group install "GNOME 데스크탑"
9. group remove
yum에 group remove 명령을 사용하여 환경 그룹 및 패키지 그룹을 제거할 수 있다.
이 방법은 GUI환경을 제거하고자 하는 경우에도 사용되며 아래와 같이 "GNOME 데스크탑" 환경그룹을 제거할 수 있다.
yum group remove "GNOME 데스크탑"
10. RPM 패키지 관리 및 사용
RPM은 원래 RedHat Packge Manager의 약자였지만, 현재는 RPM Package Manager의 재귀적 약자이다.
RPM은 RedHat 리눅스를 위해 개발되었으나 Novell Netware 및 Suse 리눅스, IBM AIX에 포팅되어 사용되고 있다.
RPM은 RedHat 사에서 리눅스를 조금 더 편리하게 사용할 수 있도록 하기 위해 만든 패키지 프로그램이다.
초기의 리눅스에서는 모든 패키지를 tar(Tar와 gzip으로 묶인 소스 파일)을 가져다가 일일이 컴파일하여 설치해야 했기 때문에 리눅스를 사용하는데 많은 어려움이 있었다.
그래서 프로그램의 설치와 관리를 용이하게 하기 위해 RPM이 개발된 것이다.
위의 소개한 yum은 rpm 보다 더 쉽게 사용하기 위해 개발되었다.
[원리]
RPM 패키지는 비슷한 환경에서 컴파일되어 설치한 프로그램 전부(실행파일, 설정파일, 라이브러리등)를 묶어 같은 종류의 다른 시스템에 그대로 풀어서 설치한다. 물론 설치 전 후에 스크립트를 사용하여 전, 후행작업이 포함된다.
삭제 또한 패키지로 묶인 파일 리스트를 보관하여 관련 파일을 삭제한다.
설치와 마찬가지로 삭제 전후에 스크립트가 들어간다.
설정파일의 경우 설치하고자 하는 설정파일이 이미 있다면, 설정파일명. rpmnew 파일을 생성하고, 패키지를 삭제하는 경우 설정파일은 .rpmsave 확장자로 설정파일이 백업된다.
[설치와 업그레이드]
RPM은 설치와 업그레이드 설치를 할 수 있다.
RPM 설치 시 읜존 관계에 있는 패키지가 존재하는 경우 해당 패키지도 함께 설치해야 한다.
기존 파일을 강제로 재설치하는 것도 가능하다.
업그레이드는 기존 패키지를 삭제하지 않고 설치 과정과 마찬가지로 간단한 명령으로 가능하다.
[질의(Query) 및 검증(Verify) 기능]
질의(Query) 기능은 RPM 패키지가 어떠한 정보를 가지고 있는지에 대하여 사용자들의 질의를 할 수 있는 기능이다.
주로 패키지가 어떠한 역할을 하는 패키지인지에 대한 정보와 패키지가 포함하고 있는 파일에 대한 정보를 확인해 보는 것이 주된 역할이다.
검증(Verify 기능은 RPM 패키지가 설치된 이후 RPM 데이터베이스에 저장된 내용과 원본의 내용을 비교하여 초기 설치 시와 다른 점이 있는지를 검사하는 기능이다.
[SRPM과 RPM의 구분]
SRPMS은 RPM패키지 제작과정에서 GNU정신에 따라 소스파일(forbar-1.1tar.gz)을 유지하면서 원 소스에 패치를 적용하여 수정이력을 관리한다. RPM제작을 위해 사용되는 소스, 패치파일, 제작과정에 대한 명세(*.spec)파일을 묶어 .src.rpm 형태로 배포된다. 그리고 RPM은 바이너리 파일이라 하는데 프로그램의 실행 파일들이 묶여있기 때문이다.
[RPM 패키지 이름 규칙]
일정한 규칙을 가지고 있다.
예) 리눅스 커널 패키지 파일 : kernel-3.10.0-123.el7.x86_64.rpm
패키지 이름 | - | 소스 버전 | - | 릴리즈 버전 | . | 배포판 버전 | . | 아키텍쳐 | . | rpm |
kernel | - | 3.10.0 | - | 123 | . | el7 | . | x86_64 | . | rpm |
[패키지 이름]
패키지 이름은 제작자에 의해 붙여진 이름으로 프로그램 이름 또는 프로그램이름-하위이름으로 붙인다.
커널 패키지의 경우 kernel, kernel-tools, kernel-devel, kernel-tools-libs,kernel-doc등 다양한 패키지가 존재한다.
이렇게 kernel을 여러 패키지로 나눠둔 것은 용도에 따라 불필요한 파일을 설치하지 않아 디스크 공간을 줄이려는 것이다.
kernel-devel 패키지는 커널 소스가 들어가 있기 때문에 커널을 재 컴파일하지 않는 한 디스크 공간만 차지하여 분리한 것이다. kernel-doc은 커널 문서가 들어가 있어 커널 문서는 일반적으로 참조할일 없고, 필요하면 설치하여 확인한다.
[소스 버전]
패키지를 만들기 위해 가져온 원 소스에 패치를 적용하거나 rpm 제작과정에 여러 요소를 수정하여 배포하는 경우 배포버전을 올려 rpm패키지를 제작한다. 위 예는 kernel-3.10.0을 123번 수정하여 릴리즈 한 패키지이다.
수정내역을 확인하고자 한다면 rpm -q --changelog kernel을 입력하면 확인할 수 있다.
CentOS의 kernel은 Major 버전별로 커널 버전은 바뀌지 않고 릴리즈 버전만 바뀌게 된다. 이는 여러 프로그램과의 호환성을 유지하면서 결함을 수정하고 기능을 추가하기 위함이다.
[배포판 버전]
RedHat Enterprise Linux의 경우 배포판 버전을 rpm패키지파일 이름에 사용하였다.
el7은 RHEL 7을 의미한다. CentOS의 경우 el7.centos를 넣어 CentOS에서 수정하였다고 표시하고 있다.
제 3자가 제공하는 rpm 패키지를 CentOS7 에 걸치할 경우 el7이 이름에 들어간 패키지를 찾아 설치하면 된다.
[아키텍처]
rpm 패키지가 컴파일 된 아키텍쳐를 기술하고 있다. 위 예는 x86_64가 기재되어 있는데 이것은 인텔 계열 또는 AMD 계역 64비트 CPU에 최적화되어 컴파일 된 패키지이다. 32bit 환경에서는 i686, i586, i386으로 기재된다.
알파시스템 아키텍쳐를 의미하는 ppc64 등이 있다. noarch는 아키텍처와 관련 없는 패키지이다.
즉 아키텍쳐와 상관없이 설치된다.
src가 기술되어 있는 것은 SRPM(소스 rpm) 파일임을 뜻한다.
[rpm]
파일의 마지막에는 .rpm 확장자를 표기하여 RPM 파일임을 나타낸다.
[rpm 명령어의 형식 및 실행 옵션]
RPM 명령어는 기본적으로 다음과 같은 명령어의 형식을 사용한다.
예)
rpm [options] .. [rpm_file_name 또는 rpm_package_name]
어떤 패키지를 옵션에 따라서 어떻게 동작을 시키겠다는 실행 모드를 정해준다.
이때 RPM의 실행모드로 설치(설치 및 업그레이드), 질의, 검증, 서명 확인, 제거, 데이터베이스 재제작 등 총 6가지의 양식이 있다. 다음은 rpm 명령어의 사용 용도별 옵션, 사용형식이다.
용 도 | 사용옵션 | 사용형식 | |
설치 | 설치 | -i | rpm -i [옵션] 패키지명 |
업그레이드 | -U | rpm-U [옵션] 패키지명 | |
-F | rpm-F [옵션] 패키지명 | ||
질의 | -q | rpm -q [옵션] 패키지명 | |
검증 | -v | rpm -v [옵션] 패키지명 | |
서명 확인 | --checksig | rpm --checksig 패키지명 | |
제거(삭제) | -e | rpm -e [옵션] 패키지명 | |
데이터베이스 재제작 | --rebuilddb | rpm --rebuilddb |
주로 많이 사용되는 옵션은 설치와 업그레이드를 위해 -U, 질의를 위해 -q, 삭제를 위해 -e이다.
아래는 앞에서 설명한 실행 모드에서 일반적으로 사용되는 옵션들에 대한 설명이다.
각각의 실행 모드에 고유 옵션들이 있으며 다음의 옵션들은 이들 옵션들과 함께 사용할 수 있다.
옵 션 | 옵션 설명 |
-v | 상세 정보를 출력한다. |
-vv | 아주 자세하게 디버깅 정보를 출력한다. |
--quiet | 최대한 출력을 자제하며 오로지 에러 메시지만 출력한다. |
--help | 좀 더 긴 사용법 설명서를 출력한다. |
--version | 사용 중인 rpm 의 버전을 한 줄로 표시한다. |
--root <dir> | 모든 동작에 대하여 최상위 디렉토리를 주어진 디렉토리로 설정하고 작업한다. 예를 들어 설치 시 주어진 디렉토리를 / 라고 생각하고 이것을 기준으로 설치해 나간다. |
[RPM 패키지 설치 및 관리]
중요한 RPM의 기능은 프로그램의 설치이다.
RPM패키지를 설치하는 옵션은 i, U 옵션이 있다.
모두 RPM 패키지를 설치하는데 필요한 옵션이지만 약간의 차이점이 있다.
설치 방법은 처음 설치와 업그레이드 설치의 2가지로 나눌 수 있다.
만약 -i 옵션을 이용하여 설치를 시도하였을 때 기존에 같은 패키지가 설치되어 있다면 원칙적으로는 프로그램 패키지의
설치를 할 수 없다.
-v 옵션은 상세 정보를 출력하도록 하고, -h 옵션은 해시(#)를 마크를 사용하여 설치 진행 상황을 보여준다.
처음 설치 시 | 업그레이드 설치 시 | |
-i | O | X |
-U | O | O |
예)
rpm -ivh multipath-tools-0.11.0~1+118+suse.4a51b1a-1.2.i586
그리고 -U 옵션을 통한 프로그램 패키지 설치의 경우 기존에 동일한 이름의 하위 버전의 패키지가 있고
업그레이드 패키지가 없다면 초기 설치를 진행하게 된다.
예)
rpm -Uvh multipath-tools-0.11.0~1+118+suse.4a51b1a-1.2.i586
[옵션]
RPM 설치 명령어와 같이 쓰는 옵션을 살펴보자.
--nodeps와 --force의 경우는 반드시 기억해야 한다.
--nodeps는 패키지 설치 시 의존성을 검사하지 않도록 하는 것이고,
--force는 설치 도중 발생하는 에러를 무시하고 강제로 설치하도록 하는 것이다.
의존성은 패키지가 호환성은 있지만 단순히 버전이 맞지 않는 경우도 있을 수 있다.
이런 경우에 옵션들로 설치 작업을 유연하게 할 수 있다.
패키지가 이미 설치되어 있는 경우에는 무시하고 새로 설치를 진행할 수 있다.
--replacepkgs 옵션을 사용한다.
옵션 | 옵션 설명 |
--nodeps | 패키지 설치 시 의존성 검사를 하지 않는다. |
--force | 설치 도중 발생하는 에러를 무시하고 강제로 설치하는 옵션이다. --replacepkgs --replacefiles --oldpackage를 동시에 사용한 것과 같은 효과를 보여준다. |
--oldpackage | 새로운 패키지를 지우고 구 버전을 설치할 때 사용한다. |
--replacepkgs | 이미 같은 패키지가 설치되어있어도 다시 설치할 때 사용한다. |
--root <directory> | RPM 패키지를 설치할 때 설정한 디렉토리의 위치를 기준으로 설치가 된다. |
--test | 패키지를 실제로 설치하지 않고 가상으로 설치해 본 뒤 충돌사항이 있는지 점검하고 보고 한다. |
--noscripts | preinstall, postinstall 스크립트를 실행하지 않는다. |
--excludedocs | 문서 파일(man page, info page)을 설치하지 않는다. |
-h --hash | 해시(#) 마크를 사용하여 패키지 설치 진행 상황을 알려준다. -v를 함께 사용하면 조금 더 상세한 정보를 출력 한다. |
--percent | 패키지 설치 시 %로 완료를 표시한다. 이는 FTP 설치 시 유용하다. |
[질의(Query) 기능]
RPM 패키지가 어떤 정보를 가지고 있는지에 대해 사용자들이 질의를 할 수 있는 기능이다.
주로 모든 패키지의 역할과 패키지에 포함된 파일에 대한 정보를 확인해 보는 것이 주된 역할이다.
모든 RPM의 질의 기능은 -q 옵션을 통하여 질의하게 된다. 아래의 예는 strace라는 패키지가 가지고 있는 정보에 관한 것이다. RPM 파일의 정보 중에서 패키지 정보를 출력하도록 하는 추가 옵션으로 i를 붙인다.
출력되는 화면에 프로그램의 명칭, 제작자, 설치된 시간, 프로그램의 사용 목적에 대한 내용이 일목요연하게 잘 표현되어 있다.
예)
rpm -qi strace
[질의 옵션 구성 방법]
기능 | 형식 |
이미 설치되어진 패키지에 대한 질의를 할 때 사용 | rpm -q.. package_name |
아직 설치되지 않은 rpm 파일에 대하여 질의할 때 사용 | rpm -qp.. package_file_name |
[테스트1]
strace RPM 파일에 어떠한 파일이 들어 있는지 알아보기.
예)
rpm -qpl multipath-tools-0.11.0~1+118+suse.4a51b1a-1.2.i586
[테스트2]
특정 파일이 어떤 패키지에서 설치되었는지 알아보자.
옵션 f 사용
예)
rpm -qf /usr/bin/ipcalc
[테스트3]
전체 rpm 패키지 목록을 전체 출력할 때는 -q 옵션을 사용한다.
리눅스에는 많은 패키지가 존재한다.
이런 경우에는 페이지별로 끊어서 출력, 특정 결과만 출력, 파일로 저장 등의 방법을 취하는 것이 좋다.
이를 위해 질의 기능과 함께 파이프 | 와 more, grep 등...
다른 명령어를 조합하여 사용할 수 있다.
또한 RPM 패키지의 모든 패키지에 대하여 정보를 파악하고 싶을 때는 질의 옵션으로 모든 파일에 질의/검증하도록 하는 a를 붙여 준다. 이에 더해 RPM 패키지로 이루어진 모든 패키지의 정보를 출력하도록 하는 옵션 i를 붙인다.
사용법 예)
rpm -qa | grep [패키지명]
예)
rpm -qai > rpm_all_info.txt
cat rpm_all_info.txt
[옵션]
옵 션 | 기 능 |
무엇에 대하여 질의 할 것인가? (패키지 선택 옵션) | |
-a | 모든 패키지에 대하여 질의 기능 수행 |
-f <file name> | 패키지 파일에 대하여 질의 수행 |
-F | -f 와 비슷. 그러나 파일 이름 입력을 표준 입력에서 받음 |
-p <패키지 파일> | 설치된 또는 설치되지 않은 <패키지 파일>에 대하여 질의 수행 |
-P | -p 와 내용은 같지만 패키지 이름 입력을 표준 입력에서 받음 |
어떤 정보에 대하여 질의를 할 것인가? (정보 선택 작업) | |
-i | 패키지에 관한 각종 정보를 보여준다. |
-R | 패키지가 의존하고 있는 패키지 목록을 보여준다. |
--provides | 패키지가 제공하는 기능을 보여준다. |
-l | 패키지 안의 파일을 보여준다. |
-s | 패키지 안의 파일의 상태를 보여준다. |
-d | 문서 파일만 보여준다. (-l 과 같이 쓰인다) |
-c | 설정 파일만 보여준다. |
--scripts | 패키지 설치, 제거 과정에서 시행되는 쉘 스크립트를 확인한다. |
--dump | 경로 크기 수정일, MD5 체크섬, 모드, 소유자, 그룹, 설정 파일 여부, 문서파일 여부, rdev, 심볼릭 링크 여부 같은 파일 정보를 덤프한다. |
[검증(verify) 기능]
RPM 패키지가 설치된 이후 RPM 데이터베이스에 저장된 내용과 원본의 내용을 비교하여 초기 설치 시와 다른 점이 있는지를 검사하는 기능이다. 검사 항목으로는 MD5 체크섬, 퍼미션, 타입, 소유자, 그룹 등 8개의 항목이 있으며 만약 검사를 하였을 경우 오류가 발생한다면 해당하는 항목에 대한 문자가 화면에 나타난다.
항 목 | 내 용 |
. | 아무런 이상 없음 |
5 | MD5 체크섬 불일치 |
S | 파일 크기 불일치 |
L | 심볼릭 링크 경로 불일치 |
D | 갱신일 불일치 |
U | 장치의 Major/minor 번호 불일치 |
G | 사용자 불일치 |
M | 퍼미션과 파일 타입 불일치 |
P | 기능 불일치 |
[기본 사용법]
rpm -V [example-package]
rpm -V 명령어는 패키지가 손상되었는지, 변경되었는지 확인하는 방법이다.
출력이 없으면 패키지가 정상적으로 설치된 것이다.
[검증 테스트1]
모든 패키지 검증
rpm -Va
아래 내용을 보면, /var/run/pulse 파일이 없다는 것과,
설정파일 /etc/cups/cups-browsed.conf의 크기와,MD5 체크섬, 갱신일이 일치하지 않는 것을 확인할 수 있다.
아래 결과와 같이 설정파일들은 변경될 수 있으나, 주요 명령어는 변경되면 변조를 의심해 보기도 한다.
만약 해킹 등으로 인해 시스템 명령어가 이상하다면 아래와 같은 방법으로 설치된 명령어들을 검증해보면 쉽게 변조여부를 확인할 수 있다.
[RPM 제거(Erase,Uninstall)]
RPM 패키지를 제거한다.
[기본 사용법]
rpm -e [package_name]
[삭제 테스트1]
설치한 strace 패키지를 삭제 옵션(-e)을 줘서 삭제하고 다시 삭제된 패키지의 정보를 -qi 옵션으로 확인한 것이다.
삭제된 strace 패키지가 설치되지 않았다는 메시지가 나온다.
만약 삭제하고자 하는 패키지가 다른 패키지와 의존성 문제로 삭제되지 않는 경우
의존성을 무시하는 옵션 --nodeps 을 사용하면 강제로 삭제할 수 있지만 여러 문제가 발생할 수 있어, 삭제하지 않는 것이 좋다.
[서명 (Query)]
다운로드 받은 RPM 파일이 원본이 아닌 경우가 있을 수 있다.
만약 악의적인 목적으로 심어둔 RPM 패키지인 경우(크래커, 트로이목마 해킹툴)도 존재할 수 있는 여지가 있다.
그럴 때 RPM 파일이 정상적인 원본 파일인지를 확인해 볼 수 있어야 한다.
이때 사용하는 것이 RPM의 서명 기능이다.
RPM 서명을 확인하는 방법은 아래와 같다.
[기본 사용법]
rpm --checksig [package_filename]
[테스트1]
rpm 패키지의 서명을 확인한다.
rpm --checksig /tmp/multipath-tools-0.11.0~1+118+suse.4a51b1a-1.2.i586.rpm
pgp 키 및 md5가 확인된다.
[데이터베이스 재제작]
어떠한 이유로 설치된 패키지에 대한 정보가 저장된 RPM DB파일에 문제가 되어 rpm명령어가 작동하지 않을 때도 있다.
이러한 경우 아래와 같이 RPM DB를 재제작하여 정상화 시킬 수 있다.
11. 소스코드 컴파일 및 설치
[설치]
리눅스에서 소프트웨어를 설치하는 가장 원초적인 방법은 소스코드 파일 tar을 가져다가 직접 컴파일하고 설치하는 방법이다. RPM 파일을 제공하는 경우에도 대부분의 경우 소스코드 파일을 제공하고 RPM 파일 없이 소스코드 파일만 제공하는 경우도 많다. 더더욱 RPM 파일과 같은 패키지를 제공한다고 하더라도 소스코드 파일로 직접 설치해야 조금 더 세밀한 설정이 가능하다.
[압축 해제]
각 파일의 압축 형식에 맞는 압축해제 명령어로 압축을 해제한다.
리눅스 압축 방식은 gzip, bzip2 , xz 등 방식이 사용되고 종종 zip 방식으로도 배포된다.
tar은 압축이라 보다는 파일 및 디렉토리를 하나의 파일로 묶는 역할을 한다.
[압축 해제 기본 사용법]
tar -xvf [압축파일명].tar.gz
(1) tar.gz
tar-xvzf [압축파일명].tar.gz
(2) tar.bz2
tar -xvjf [압축파일명].tar.bz2
(3)tar.xz
tar-xcJf [압축파일명].tar.xz
(4) zip
unzip [압축파일명].zip
[컴파일]
압축이 해제된 디렉토리로 이동해서 ./configure 명령으로 소스코드를 컴파일하기 위한 설정을 하도록 한다.
이 설정에는 여러 가지 옵션들이 붙을 수 있다.
cd /[압축이 풀린 디렉토리] (압축이 풀리면서 생긴 디렉토리로 이동)
./configure (설치를 위해 기본적인 설정)
(1) 옵션 -j
동시에 수행할 작업 수를 정의 한다.
CPU Core 수 * 2 으로 보통 설정한한다.
컴파일 과정에서 CPU 자원을 많이 사용하며, Core가 많을수록 작업수를 늘려 빠르게 컴파일 할 수 있다.
사용예)
make -j 8
(2) 설치
앞서 컴파일 한 파일들을 설치하는 과정이다. 이 설치 과정은 대부분 root 권한으로 실행되어야 한다.
사용 예)
make install
(3) 제거
더 좋은 패키지로 대체되거나, 더 이상 사용되지 않을 경우 제거해야 하는데 리눅스의 제거도 설치처럼 단일 사용자 운영체제의 경우보다 복잡하다. 때때로 응용프로그램의 파일을 제거하고 그 디렉토리를 제거하는 것만으로는 부족하다.
향후 문제를 피하기 위해 드라이버와 다른 소프트웨어 연결도 단절되어야 한다.
가장 좋은 방법으로는 설치과정(make install)에서 보여주는 메시지를 저장해 두었다가 참고하여 설치된 파일을 제거하고, 설정된 내역을 제거하고, 추가된 모듈을 제거하는 것이다.
사용 예)
패키지를 확인한다.
rpm -qa | grep [package_filename]
패키지를 삭제한다.
rpm -e [package_filename]
패키지를 다시 확인한다.
rpm -qa | grep [package_filename]
'Linux > CentOS7' 카테고리의 다른 글
디스크 관리 (0) | 2024.12.19 |
---|---|
프로세스 (0) | 2024.12.02 |
split 파일 자르기 (0) | 2024.11.29 |
sort 파일 내용 정렬 (0) | 2024.11.29 |
grep 패턴 매칭 라인 출력 (0) | 2024.11.28 |