6. Software 관리

 

 

 

 

 

RPM (Redhat Package Manager)

패키지 설치

 

 

 

 

* 시작에 앞서 패키지 설치 시 rpm CMD를 사용하는 것은

프로그램끼리의 의존성 및 호환성 문제 때문에 추천하는 방식은

아니다. 실제로는 rpm 보다 yum 명령어로 설치하는 것이

훨씬 효율적이고 편리하다. 그럼에도 알아두어야 하는 이유는

시험에 나오기 때문.

 

 

 

 

■ RPM 패키지 설치 및 업데이트

# rpm -ivhpackage-filename.rpm: 패키지 설치, 이전 버전의 패키지를 삭제하지 않고 새 버전 설치

(-i: install, -v: verbose, -h: hash)

# rpm -Fvhpackage-filename.rpm : 패키지 업데이트, 이전 버전의 패키지가 있을 경우만 패키지를 설치

(-F: Freshen)

# rpm -Uvhpackage-filename.rpm: 패키지 업데이트, 이전 버전이면 업그레이드하고 없으면 설치

(-U: Upgrade)

# rpm -ivh --nodepspackage-filename.rpm : 의존성 체크 안 함, 의존성 문제를 무시하고 설치

(-nodeps: no dependency)

# rpm -Uvh --forcepackage-filename.rpm : 패키지 충돌이 방생해도 강제적으로 설치

 

 

 

 

 

■ RPM 패키지 삭제

# rpm -epackage-filename /* 패키지 삭제 */

(-e: erase)

# rpm -e --nodeps package-filename/* 패키지 삭제, 의존성 문제를 무시하고 패키지 삭제 */

(--nodeps: no dependency)

 

 

 

 

 

■ RPM 패키지 정보 확인

# rpm -qa /* -q: query, -a: all, 전체 패키지 목록 확인 */

# rpm -qa | grep package-filename/* 전체 패키지 목록에서 지정된 패키지 설치 유무 확인 */

# rpm -q package-filename /* 지정된 패키지 설치 유무 확인 */

# rpm -qi package-filename /* -i: information, 설치된 패키지의 자세한 정보 확인 */

# rpm -ql package-filename /* -l: list, 설치된 패키지의 파일과 디렉터리 목록 확인 */

# rpm -qf /usr/bin/ls /* -f: file, 지정된 파일이 포함된 패키지 이름 확인 */

# rpm -qi -p package-filename.rpm /* -p: packages file, 설치하고자 하는 패키지의 자세한 정보 확인 */

 

 

 

 

 


 

 

 

 

*설치 시 주의사항*

패키지 의존성 관계를 확인해야 하고

호환성을 위해 버전 확인을 잘해야 함

: 다시 한번 강조하지만 rpm 보다 yum으로

설치하는 것이 여러 면에서 낫다.

 

 

 

 

실습) PHP 설치하려고 한다.

: 방법으로는 CD로 불러오거나 웹에서 다운받아 설치

 

 

 

 

 

 

1) CD 설치

 

* cd가 마운트 되어있는지 확인해보고

# df -h

 

 

 

* 해당 폴더로 이동

# cd "/run/media/root/CentOS 7 x86_64"

# cd Packages

 

 

 

* 패키지 관련 리스트 검색

# ls php* :

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# ls php*

php-5.4.16-48.el7.x86_64.rpm php-pear-1.9.4-21.el7.noarch.rpm

php-cli-5.4.16-48.el7.x86_64.rpm php-pecl-memcache-3.0.8-4.el7.x86_64.rpm

php-common-5.4.16-48.el7.x86_64.rpm php-pgsql-5.4.16-48.el7.x86_64.rpm

php-gd-5.4.16-48.el7.x86_64.rpm php-process-5.4.16-48.el7.x86_64.rpm

php-ldap-5.4.16-48.el7.x86_64.rpm php-recode-5.4.16-48.el7.x86_64.rpm

php-mysql-5.4.16-48.el7.x86_64.rpm php-soap-5.4.16-48.el7.x86_64.rpm

php-odbc-5.4.16-48.el7.x86_64.rpm php-xml-5.4.16-48.el7.x86_64.rpm

php-pdo-5.4.16-48.el7.x86_64.rpm php-xmlrpc-5.4.16-48.el7.x86_64.rpm

 

 

 

* 의존성 오류 뜸

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh php-5.4.16-48.el7.x86_64.rpm

오류: Failed dependencies:

php-common(x86-64) = 5.4.16-48.el7 is needed by php-5.4.16-48.el7.x86_64 =>이게 필요

php-cli(x86-64) = 5.4.16-48.el7 is needed by php-5.4.16-48.el7.x86_64 =>이게 필요

 

 

 

* 패키지 설치를 하려면 libzip 이란 것도 필요

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages] # ls libzip*

libzip-0.10.1-8.el7.x86_64.rpm

 

 

 

 

* 필요한 선수 패키지 설치

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh libzip-0.10.1-8.el7.x86_64.rpm

준비 중... ################################# [100%]

libzip-0.10.1-8.el7.x86_64 패키지는 이미 설치되어 있습니다

 

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh php-common-5.4.16-48.el7.x86_64.rpm

준비 중... ################################# [100%]

Updating / installing...

1:php-common-5.4.16-48.el7 ################################# [100%]

 

 

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh php-cli-5.4.16-48.el7.x86_64.rpm

준비 중... ################################# [100%]

Updating / installing...

1:php-cli-5.4.16-48.el7 ################################# [100%]

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh php-5.4.16-48.el7.x86_64.rpm

준비 중... ################################# [100%]

Updating / installing...

1:php-5.4.16-48.el7 ################################# [100%]

 

 

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh lipzip*.rpm

오류: glob으로 파일을 찾을 수 없음: lipzip*.rpm

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh #

rpm: 설치할 패키지가 지정되지 않았습니다

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# [root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# ls libzip*

bash: [root@linux211: 명령을 찾을 수 없습니다...

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# libzip-0.10.1-8.el7.x86_64.rpm

bash: libzip-0.10.1-8.el7.x86_64.rpm: 명령을 찾을 수 없습니다...

[root@linux211 /run/media/root/CentOS 7 x86_64/Packages]# rpm -Uvh libzip-0.10.1-8.el7.x86_64.rpm

준비 중... ################################# [100%]

libzip-0.10.1-8.el7.x86_64 패키지는 이미 설치되어 있습니다

 

 

 

# yum -y install httpd mod_ssl

 

 

 

 

 

2. 인터넷에서 받아 설치

http://rpm.pbone.net/

들어가서 패키지 검색하고 패키지 링크 복사한 뒤

# wget 링크주소

하면 됨.

 

검색 시 주의 사항으로

Advance RPM Search를 누르고 들어가서

본인 운영체제 체크,

Other 칸의 other 체크 해제 후

필요한 버전 확인 후 검색.

php-5.4.16

 

* 검색 시 위처럼 정확하게 적지 않으면 검색 안됨

예) php 5.4처럼 '대시'를 적지 않으면 검색 안됨

 

 

 

 

 

 

자잘 팁

 

 

1. CD 폴더가 너무 길다. 다른 이름으로 바꿔주자.

/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/CentOS 7 x86_64

 

 

먼저 umount 시켜주고

[root@linux211 ~]# umount "/run/media/root/CentOS 7 x86_64"

 

확인

[root@linux211 ~]# df -h -T

 

마운트 포인트 만들어 주고

[root@linux211 ~]# mkdir -p /mnt/cdrom

 

마운트 시키기

[root@linux211 ~]# mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

[root@linux211 ~]#

[root@linux211 ~]# df -h -T

Filesystem Type Size Used Avail Use% Mounted on

/dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt/cdrom

[root@linux211 ~]#

 

 

 

 

2. createrepo로 repodata생성해 주는 것을 잊지 말자

 

 

 

 

 


 

 

 

 

yum

 

 

 

 

*패키지 설치는 yum으로 한다.

 

 

 

 

(CentOS 7.x) Xen, Eclipse 그룹 패키지가 목록에 없어서

설치할 수 없는 경우의 추가적인 실습

 

 

 

 

■ 명령어 사용법

# yum [TAB][TAB]

# yum group [TAB][TAB]

# yum group info [TAB][TAB]

# yum group info ‘web server’

 

 

 

 

■ 그룹 패키지 확인

# yum group list

# yum group list hidden

# yum group info‘Security Tools’

# yum group info ‘Development Tools’

 

# yum group install ‘Development Tools’

# which g++

 

# yum group list hidden | grep -i python

# yum group install ‘Python’

# which python

# python V

# python

>>> print(‘hello world’)

>>> exit()

 

 

 

 

 

■ 그룹 패키지 설치 및 삭제

# yum group list hidden | grep -i mariacb

# yum group install ‘MariaDB Database Server’ ‘MariaDB Database Client’

 

# yum group info MariaDB Database Server

 

# yum group remove MariaDB Database Server

# yum group info

 

 

 

 

  

■ (CentOS 7.x) yum history

# yum histoty

# yum history list

# yum history list all

# yum history list 10..15

# yum history info 15

 

* undo

# yum history undo 15

 

* redo

# yum history redo 15

 

* rollback (특정 지점을 선택해서 작업)

 

위와같은 재작업이 가능한 이유는

# cat /var/log/yum.log 에 로그 파일이 저장되기 때문.

 

 

(CentOS 7.x)

# yum provides ‘/etc/passwd’

# yum provides ‘/etc/http*/httpd.conf’

 

 

 

 

 

 

■ (CentOS 7.x) Package 및 Source Download

: 설치는 하지 않고 다운로드만 하는 기능

# yum install yum-downloadonly

# yum install python --downloadonly

 

)

# cd /test

# yumdownloader python

# yumdownloader python  source

 

 

 

 

■ yum 업데이트전 로그 파인 확인 및 기록

# cat /var/log/yum.log

# yum check-update 2>&1 | tee a yum.log (기록)

# yum check-update | grep kernel (커널 체크)

# reboot

 

 

 

 

 

 yum repository 만들기

# vi iso.repo

 

[MyISO]

name=CentOS-$releasever - MyISO

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

 

 

 

 


 

 

 

 

 

Software 관리 종합 정리

 

 

 

* rpm CMD

# rpm -ivh|Fvh|Uvh [--nodeps] [--force] PKG.rpm

# rpm -qa | grep bash

# rpm -qi bash

# rpm -ql bash

# rpm -qf /bin/bash

# rpm -qi -p PKG.rpm

# rpm -e [--nodeps] PKG

 

 

 

 

[참고] rpm 구할 수 있는 곳

1) Linux CD

2) 인터넷(fedoraproject)

# yum install epel-release

# yum install ntfs-3g

3) 인터넷(rpmfind.net, pbone.net)

4) 개발자

 

 

 

 


 

 

 

 

* yum CMD

# yum install PKG

# yum update PKG

# yum list "php*" (# yum list | grep php)

# yum info PKG

# yum search 단어

# yum remove|erase PKG

# yum group install GPKG

# yum group list

# yum group list hidden

# yum group info GPKG

# yum group remove GPKG

 

 

 

 

 

[참고] 리눅스 설치 시 기본 설치를 한 경우=> 'Minimal Install'로 설치됨

GUI 방식의 CentOS를 사용하려면 아래 세 가지를 설치해 주어야 한다.

# yum group install -y 'Server with GUI'

# systemctl isolate grphical.target

# systemctl set-default graphical.target

 

 

yum -y group install "Development Tools"

yum install kernel sources

yum -y install kernel-devel

 

 

CentOS7 TUI

# ip a

# ifup ens33

 

 

 

 

[참고] yum localinstall ( # rpm Uvh 와 비슷)

* CD 안에 패키지 설치 시

* 인터넷에서 받은 패키지 설치 시

# yum localinstall PKG.rpm

 

 

 

 

 

[참고] CDROM-CD를 가지고 YUM Repository 구성

CD-ROM CD 장착(Automount) -> /mnt/cdrom

# vi /etc/yum.repos.d/CD.repo

-------------------------------------

[MyCD]

name=MyCD Test

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=0

-------------------------------------

# yum install PKG

 

 

 

 

 

[참고] CD ISO 이미지를 가지고 YUM Repository 구성

(준비) /test/CD.iso

# mkdir -p /mnt/iso ; mount -o loop /test/CD.iso /mnt/iso

# vi /etc/yum.repos.d/CD.repo

-------------------------------------

[MyISO]

name=MyISO Test

baseurl=file:///mnt/iso

enabled=1

gpgcheck=0

-------------------------------------

# yum install PKG

 

 

 

 

[참고] yum history

# yum history

# yum history 15

# yum history info 15

# yum history undo 15

# yum history redo 15

# yum history rollback 5

# cat /var/log/yum.log

[참고] yumdownloader

# yumdownloader PKG

# yumdownloader PKG --source

 

 

 

 

[참고] OS 업데이트

# yum check-update 2>&1 | tee -a yum.log : 로그는 꼭 기록하기

# yum check-update | grep kernel

# yum update

# reboot

# uname -sr

# cat /etc/redhat-release

 

 

 

 

 


 

 

 

 

 

source 관리

 

 

 

 

(ㄱ) 파일 다운로드(EX: httpd-*.tar.gz)

(ㄴ) 압축 해제(tar xvzf ....)

(ㄷ) configure && make && make install

(ㄹ) 서비스 기동 && 확인

 

 

 

 

[참고] 소스 형태로 설치한 프로그램은

"rpm -qa | grep PKG" 목록에 나오지 않는다.

 

 

 

 

[참고] "rm -rf /usr/local/apache2" 지운 디렉터리 복원하는 방법

# cd /usr/local/src/httpd-*

# make install

 

 

 

 

[참고] "rm -rf /usr/local/apache2"디렉토리 삭제 후

소스 디렉토리(EX: /usr/local/src)에서

configure/make/make install 다시 수행하고 싶다면 ?

 # cd /usr/local/src/httpd-2.2.34

# ./configure (체크과정)

# make clean

# ./configure --prefix=/usr/local/apache2 2>&1 | tee –a apache.log && make && make install

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts