본문 바로가기
Linux/ServerAdmin

소프트웨어 관리(2)

by Luuii 2017. 9. 24.

소스형태로 소프트웨어를 설치하는 이유

ⓐ 최신 버전의 오픈 소스 소프트웨어(최신 기능)을 사용하기 위해서

ⓑ 오픈 소스 소프트웨어의 크기를 줄이기 위해서 -> 필요한 것만 동작시키기 위해서

ⓒ 고객이 낮은 버전의 S/W를 요청하는경우 -> 낮은 버전의 Library => (X)

>> 독립적인 폴더에 따로 만들어준다.

ⓓ 보안장비의 보안 S/W가 Open Source로 설치하는 경우에는 소스형태로 컴파일 한다.

 

Apache 소스 프로그램 설치 과정

ⓐ 소스 파일 다운로드
ⓑ 압축 해제

ⓒ configure && make && make install

ⓓ 웹서비스 시작 및 확인

 

프로그램 다운로드 디렉토리 : 각자 알아서

프로그램 소스 디렉토리 : /usr/local/src

프로그램 설치 디렉토리 : /usr/local/apache2

 

gcc도 설치되어 있어야함.

 

ⓐ 소스 파일 다운로드

# wget . . . .

 

ⓑ 압축 해제

# tar xvzf httpd-2.2.26.tar.gz -C /usr/local/src    -> -C : change directory

# INSTALL 문서 확인 ( 항상 보는 습관이 필요함)★★★★★★★★★★★★★★★

 

ⓒ configure && make && make install

# ./configure --help

# ./configure --prefix=/usr/local/apache2

# echo $? -> 잘 되었는지 확인용. 0이면 잘 된거다.

# ./configure --prefix=/usr/local/apach2 > apache.log 2>&1  ( 명령어 수행시 출력되는 내용을 로그화 )

# make

# make install

 

ⓓ 웹서비스 시작 및 확인

 

(의문점)

1. 소스 형태로 설치한 프로그램(EX: apache2)은 "rpm -qa | grep apache" 확인이 가능할까?

-> NO. 다른 곳에는 정보가 전혀 들어가지 않는다.

 

2. "rm -rf /usr/local/apache2" 디렉토리 삭제 후 다시 만들고 싶다면?

-> make install 만 치면 또 만들어진다.

 

3. 소스 디렉토리(EX: /usr/local/src)에서 configure/make/make install을 다시 실행하고 싶다면?

-> cd /usr/local/src

-> make clean

 

소스 형태로 소프트웨어를 관리하는 것이 어렵다.

-> 설치 한 사람만 알 수 있다. rpm으로 관리하는게 아니여서 확인이 힘들다.

 

왜 실무에서는 소스형태로 소프트웨어를 설치하는가?

-> 필요한 것 외엔 다 빼버리고 싶어서.

 

Create RPM

소스코드로 설치한 프로그램 ---> 패키지화 ---> source.rpm

(EX:  /usr/local/apache2)    ---------------> (EX: apache2.rpm) -> yum으로 설치 할 수 있다.

 

source.rpm 파일을 쉽게 제공하기 위한 YUM repository구성

 

패키지/배포파일 무결성을 점검하는 대표적인 방법

> GPG key 사용하는 방법

> Hash(EX: md5cksum) 알고리즘을 사용하는 방법

-> #md5sum /bin/ls

 

 

RPM 패키지 생성 절차

ⓐ 소스 프로그램 개발

ⓑ 소스.tar.gz 파일 생성

ⓒ SPEC 파일 생성

ⓓ rpm build

ⓔ GPG Key 생성

ⓕ 패키지 sign

ⓖ YUM repository 구성

ⓘ 테스트

 

 

ⓐ 소스 프로그램 개발

# vi hello1-0/hello.sh

 

ⓑ 소스.tar.gz 파일 생성

# ls /usr/src/redhat        > 없다면 rpm-build 설치

# yum -y install rpm-build

# tar cvzf /usr/src/redhat/SOURCES/hello-1.0-1.tar.gz hello-1.0

# tar tvzf /usr/src/redhat/SOURCES/hello-1.0-1.tar.gz

 

ⓒ SPEC 파일 생성

# vi /usr/src/redhat/SPECS/hello.spec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
%define name hello
%define version 1.0
%define release 1
 
Name:           hello
Version:        1.0
Release:        1
Summary:        Hello
Group:          CentOS
License:        GPL
URL:            http://www.example.com
Source0:        %{name}-%{version}-%{release}.tar.gz
BuildRoot:      /var/tmp/%{name}-buildroot
 
%description
Installs        /root/bin/hello.sh
 
%prep
%setup --n %{name}-%{version}
 
%build
 
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/root/bin
install -755 hello.sh $RPM_BUILD_ROOT/root/bin/hello.sh
 
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
%defattr(-,root,root,-)
/root/bin/hello.sh
 
%changelog
cs

 

 

ⓓ RPM build

# rpmbuild -ba /usr/src/redhat/SPECS/hello.spec

# find /usr/src/redhat

# cd /usr/src/redhat/RPMS/i386

# rpm -Uvh hello-1.0-1.i386.rpm

 

ⓔ GPG Key 생성

# cd

# gpg --gen-key     ( 키 값을 꼭 적어놔야한다.)★★★★★★★★★★★★★★★★

 

ⓕ 패키지 sign

# gpg -a -o ~/RPM-GPG-KEY-test --export 8D823B56
# vi ~/.rpmmacros

 

# rpm --resign /usr/src/redhat/RPMS/i386/hello-1.0-1.i386.rpm

 

ⓖ YUM repository 구성

# mkdir /var/www/html/packages

# cp /usr/src/redhat/RPMS/i386/hello*.rpm /var/www/html/package
# cp RPM-GPG-KEY-test /var/www/html/package

# tree /var/www/html

 

# yum -y install createrepo

# createrepo /var/www/html/package

 

# tree /var/www/html

# service httpd restart

ⓘ 테스트

# vi /etc/yum.repo.d/hello.repo

1
2
3
4
5
6
7
[hello]
name=hello
description=Test Yum Repository
baseurl=http://192.168.35.245/packages
enabled=1
gpgcheck=1
gpgkey=http://192.168.35.245/packages/RPM-GPG-KEY-test
cs

 

# yum -y install hello

반응형

'Linux > ServerAdmin' 카테고리의 다른 글

BOOT  (0) 2017.09.24
소프트웨어 관리  (0) 2017.09.24
SWAP  (0) 2017.09.24
물리적 vs LVM vs RAID  (0) 2017.09.24
RAID  (0) 2017.09.24