1. RPM (Redhat Package Manager)
1) 형식
[rpm] [OPTIONS]
2) 옵션
1) 질의 옵션 (-q 또는 --query 옵션과 함깨 사용)
-c : 모든 설정 파일을 나열.
-l : 패키지 안의 파일을 나열
-a : 모든 패키지에 질의, 검증
-f : 파일이 들어있는 패키지에 대해 질의/검증
2) 검증 옵션 ( -V 또는 --verify 옵션과 함깨 사용)
3) 설치/업그레이드/삭제 옵션
-e : 패키지를 제거 (의존성 관계 있을 시 삭제 불가)
-F : 기존 설치된 패키지를 업그레이드 합니다.
-i : 패키지를 설치
--force : 패키지 충돌 (overwrite) 무시하고 강제 설치.
--nodeps : 패키지의 의존성을 검사하지않습니다.
--oldpackage : 이전 버전의 패키지로 다운그레이드.
-U : 패키지를 업그레이드 합니다.
-v : 자세한 출력을 제공
[참고] RPM 패키지 설치 및 업데이트 주요 포맷.
# rpm -ivh package-filename.rpm
패키지 설치, 이전 버전의 패키지를 삭제하지 않고 새 버전 설치 (-i: install, -v: verbose, -h: hash)
# rpm -Fvh package-filename.rpm
패키지 업데이트, 이전 버전의 패키지가 있을 경우만 패키지를 설치 (-F: Freshen)
# rpm -Uvh package-filename.rpm
패키지 업데이트, 이전 버전이면 업그레이드 하고 없으면 설치 (-U: Upgrade)
# rpm -ivh --nodeps package-filename.rpm
의존성 체크 안함, 의존성 문제를 무시하고 설치 (-nodeps: no dependency)
# rpm -Uvh --force package-filename.rpm
패키지 충돌이 발생해도 강제적으로 설치
# rpm -e package-filename
패키지 삭제 (-e: erase)
# rpm -e --nodeps package-filename
패키지 삭제, 의존성 문제를 무시하고 패키지 삭제
# 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 )
3) 패키지 파일 이름 형식
형식 : name-version-release.architecture.rpm
ex) kernel-2.6.9-42.0.2.EL.i686.rpm
kernel : 패키지 이름
2.6.9 : 패키지 버전
42.0.2.EL : 패키지 릴리즈 ( 몇번 빌드했는지 알 수 있다. )
i686 : 패키지 아키텍쳐
.rpm : 패키지 확장자 ( redhat 운영체제는 rpm이다.)
[실습] RPM 을 활용하여 패키지 설치, 삭제 실습.
[실습] 웹 상에서 RPM 을 활용하여 패키지 설치, 삭제 실습.
2. yum (Yellowdog Update Manager)
rmp 의 경우 패키지 의존성으로 설치가 복잡함, 의존성 관계 해결 및 효율적인 패키지 관리를 위해 출시됨.
1) 형식
yum [options] COMMAND
2) 주요 활용 포멧
패키지 확인
# yum list (# yum list all)
# yum list "*bash*" (# yum list | grep bash)
# yum list installed
# yum list available
패키지 설치 & 업데이트 ( -y 질문에 모드 yse로 답함 )
# yum -y update
# yum -y update php [참고] rpm -Fvh
# yum -y install php [참고] rpm -Uvh
# yum -y localinstall php.rpm ( 원격이 아닌 로컬의 경우 활용됨 )
패키지 삭제
# yum (erase|remove) php
[참고] 추가로 알아두면 좋은 yum 옵션
# yum provides '*/filename' : 패키지의 상위 패키지 찾는 기능.
# yum download [packge] : 현제 폴더에 패키지 다운로드.
# yum history (undo) : yum 이력확인 및 되돌리기(undo)
[실습] yum 을 활용하여 패키지의 설치 삭제 실습.
3. 소스파일로 설치.
최신 버전의 오픈소스 소프트웨어(최신기능) 을 사용하기 위해서 직접 소스파일을 설치하는 경우도 있다. 이때 활용되는 기능이다. 또한 보안장비의 보안 S/W가 Open Source 를 설치하는 경우에는 소스스형태로 컴파일 한다.
설치과정 : 소스파일 다운로드 -> 압축해제 -> configure -> make -> makeinstall -> 서비스 시작.
1) ./configure : 파일 내 시스템들을 조사하여 makefile 을 만들어줌.
* 해당 과정이 진행이 무사히 되면 이하과정은 큰 문제가 없음.
2) make : 소스파일의 압축이 풀려있는 dir 내에서만 수행가능 명령어
소스파일 내 makefile 을 참조하여 여러가지 file들을 다중 컴파일 진행하여 현재 폴더에 만들어준다.
3) make install : 컴파일 된 파일들을 적합한 위치로 모두 보내서 사용가능하게끔 만듬
* make clean : make 과정 내 진행된 다중 컴파일작업을 모두 지워줌. 즉 ./configure 를 다시 수행하며 옵션을 변경할 수 있다.
4. 소스파일 -> rpm 패키지화 -> yum repository 구성
* 소스파일을 컴파일 하는 과정에서 크레커의 수정된 파일이 설치 될 경우 백도어등. 여러 위험에 노출 될 수 있다. 이를 막는 방법은 2가지 방법이 있다. 이를 무결성 점검이라 한다.
GPG key : GPG key와 대조하여 인증되지않았다면 설치되지 않음.
Hash 알고리즘 을 통하여 무결성을 점검하는 방법
1) rpm 패키지 생성 절차
(1) 소스 프로그램 개발
* 3가지 선수작업 후 프로그램 개발.
# yum install rpmdevtools rpmlint
# rpmdev-setuptree
# tree rpmbuild
(2) 소스.tar.gz 파일 생성
* tar czf rpmbuild/SOURCES/hello-1.0-1.tar.gz hello-1.0 SOURCES에 해당 개발된 파일을 압축 및 아카이빙
(3) SPEC 파일 생성
* /usr/share/vim/vimfiles/template.spec 를 참조하여 생성.
* rpmlint ~/rpmbuild/SPECS/hello.spec 파일 오류 점검.
(4) rpm build
# rpmbuild -bs rpmbuild/SPECS/hello.spec # -b: build, -s: source : 소스파일만 제작 (PKG.src.rpm)
# rpmbuild -bb rpmbuild/SPECS/hello.spec # -b: build, -b: binary : RPM 패키지로 제작 (PKG.rpm)
# rpmbuild -ba rpmbuild/SPECS/hello.spec # -b: build, -a: source + binary : 둘다 제작.
TEST 진행.
# cd rpmbuild/RPMS/noarch
# rpm -Uvh hello-1.0-1.i386.rpm
# hello.sh (# /root/bin/hello.sh)
----------------------------------------- RPM 패키지 생성완료
(5) GPG Key 생성
# gpg --gen-key : 키 제작
# gpg --list-key : 키 정보 확인
(6) 패키지 sign
# echo "%_gpg_name 535BF7E47D7E7693235B3713AA5D8412C0B2EC59" >> ~/.rpmmacros : 키값 적용
# rpmsign --addsign ~/rpmbuild/RPMS/noarch/hello-1.0-1.noarch.rpm : 키값 적용
-----------------------------------------
(7) Yum Repository 구성
# mkdir /var/www/html/packages
# cp ~/rpmbuild/RPMS/noarch/hello*.rpm /var/www/html/packages
# cp ~/RPM-GPG-KEY-test /var/www/html/packages
# tree /var/www/html
repogtory 생성.
# yum -y install createrepo
# createrepo /var/www/html/packages
# tree /var/www/html
(8) 테스트
# vi /etc/yum.repos.d/hello.repo
# yum -y install hello
# hello.sh
[참고] rpm / yum / source 의 요약
rpm CMD(RedHat Packages Manager)
# rpm -ivh [--nodeps] pkg.rpm
# rpm -Uvh [--nodeps] pkg.rpm
# rpm -Fvh [--nodeps] pkg.rpm
# rpm -qa | grep pkg
# rpm -q pkg
# rpm -qf /etc/passwd
# rpm -ql pkg
# rpm -qi pkg
# rpm -qi -p pkg.rpm
# rpm -e [--nodeps] pkg
yum CMD(Yellowdog Update Manager)
# yum install pkg (# yum -y install pkg)
# yum update pkg
# yum -y update
# yum list (# yum list installed)
# yum search pkg
# yum info pkg
# yum remove pkg (# yum erase pkg)
[참고] kernel upgrade
# rpm -ivh kernel.rpm
# yum install kernel.rpm
Source Compile(EX: pkg.tar.gz)
# tar xvzf pkg.tar.gz
# cd pkg
# ./configure --prefix=/usr/local/pkg (# ./configure --help)
# make
# make install
'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글
리눅스 잡 스케줄링 / day 12 (0) | 2021.04.14 |
---|---|
리눅스 사용자 그룹관리 / day 12 (0) | 2021.04.14 |
리눅스 SWAP / day 10 (0) | 2021.04.12 |
리눅스 RAID / day 9 (0) | 2021.04.09 |
리눅스 LVM / day 8, 9 (0) | 2021.04.08 |