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. 인터넷에서 받아 설치
들어가서 패키지 검색하고 패키지 링크 복사한 뒤
# 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
'정보보안공부 > 정보보안전문과정' 카테고리의 다른 글
모의해킹 침해대응 정보보안 전문가 양성과정 Day13 (0) | 2020.09.19 |
---|---|
모의해킹 침해대응 정보보안 전문가 양성과정 Day12 (0) | 2020.09.17 |
모의해킹 침해대응 정보보안 전문가 양성과정 day10 (0) | 2020.09.15 |
모의해킹 침해대응 정보보안 전문가 양성과정 Day9 (0) | 2020.09.15 |
모의해킹 침해대응 정보보안 전문가 양성과정 Day8 (0) | 2020.09.11 |