4. 44
RPM 이해
Redhat Package Manager
Red Hat Linux를 비롯한 다른 Linux, Unix 시스템용 공개 패키지 관리 유틸리티
rpm 명령어를 통해 손쉽게 설치 가능
RPM 패키지 획득가능 경로
공식 Red Hat Linux CD-ROM
Red Hat 에라타 페이지. 사이트 주소 : http://www.redhat.com/apps/support/errata/
Red Hat FTP 미러 사이트. 사이트 주소: http://www.redhat.com/download/mirror.html
Red Hat Network
8. 88
RPM 패키징 목적
User, Directory, Path 생성
MySQL 5.x 설치
Tool 설치
Script 생성 ( backup, monitoring )
RPM 파일
User, Directory, Path 생성
MySQL 5.x 설치
Tool 설치
Script 생성 ( backup, monitoring )
표준화된 내용으로 설치 가능
디렉토리 구성, MySQL 버전, tools, …
환경구축 시간 단축
담당자가 4번의 작업을 통해 구성
작업시간 최소 30분 소요
담당자가 1번의 작업을 통해 구성
작업시간 최대 10분 소요
10. 101010
RPM 패키징 단계 이해
기본적인 RPM 패키징 단계
SOURCE 파일
명세 (SPEC) 파일
RPM 파일
(확장자 .rpm)
11. RPM 패키징은 아래 5단계를 거쳐 진행됨
1. rpm build package 확인
2. 빌드 트리 구축
3. 빌드할 소스 파일 준비
4. 명세(SPEC) 파일 작성
5. RPM 패키지 빌드
/usr/src/redhat
SOURCES SPECS BUILD BUILDROOT RPMS
111111
RPM 패키징 단계 이해
SOURCE 파일 명세 (SPEC) 파일 RPM 파일
(확장자 .rpm)
RPM을 만들 SOURCE 설치 파일
(.tar.gz )
매크로, 헤더 정의
명령 실행부분( source 파일 build )
변경 로그 정의
RPM 패키지 빌드
12. 1212
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
rpm build package 확인
빌드 트리 구축
빌드할 소스 파일 준비
명세(SPEC) 파일 작성
RPM 패키지 빌드
MySQL 패키징
QnA
13. 1313
locate rpmrc
/usr/lib/rpm/rpmrc
RPM 설정파일인 rpmrc 파일 존재 확인
- rpmrc 파일은 빌드할 아키텍쳐에 맞는 컴파일러 flag를 생성하고 OS를 설정하며, spec에서 사용하는 매크로를 지정하는 파일
RPM 패키징 사용자 및 그룹 생성 후, sudo 권한 부여
groupadd rpms
useradd -g rpms rpms
chmod u+w /etc/sudoers
vi /etc/sudoers
rpms ALL=(ALL) NOPASSWD: ALL
chmod u-w /etc/sudoers
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
yum -y install rpm-build
yum -y install readline-devel pam-devel openssl-devel gcc bison
yum -y install gcc-c++ gperf ncurses-devel perl time zlib-devel cmake libaio-devel
rpmbuild를 하기 위해 yum 으로 rpm-build 및 의존파일을 설치한다.
14. 1414
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
rpm build package 확인
빌드 트리 구축
빌드할 소스 파일 준비
명세(SPEC) 파일 작성
RPM 패키지 빌드
MySQL 패키징
QnA
15. 1515
빌드 트리 구축
- "빌드 트리"란 RPM 패키징에 사용되는 디렉토리 구조로, 소스파일 및 결과파일이 저장될 폴더를 의미
default : /usr/src/redhat
user-defined : /usr1/program/rpmbuild
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
cd /usr1/program
mkdir –p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
chown -R rpms:rpms /usr1/program/rpmbuild/
cd rpmbuild/
ls -l
total 24
drwxr-xr-x 2 433-dba mysql 4096 May 8 21:13 SOURCES [user] 빌드 할 소스파일(*.tar.gz)을 저장하는 곳
drwxr-xr-x 2 433-dba mysql 4096 May 8 21:47 SPECS [user] 패키지 명세(spec) 파일을 저장하는 곳
drwxr-xr-x 4 433-dba mysql 4096 May 8 21:35 BUILD [program] 빌드 동안 사용되는 작업공간
drwxr-xr-x 2 433-dba mysql 4096 May 8 21:49 BUILDROOT [program] 빌드 후 생성된 결과파일이 저장되는 곳
drwxr-xr-x 3 433-dba mysql 4096 Apr 22 19:39 RPMS [program] 빌드 결과를 가지고 최종 패키징한 파일이(.rpm) 저장되는 곳
drwxr-xr-x 2 433-dba mysql 4096 May 8 21:48 SRPMS
RPM BUILD에 필요한 폴더 생성
16. 1616
빌드 트리 구축
- "빌드 트리"란 RPM 패키징에 사용되는 디렉토리 구조로, 소스파일 및 결과파일이 저장될 폴더를 의미
rpm 패키징 시에 사용자가 정의한 디렉토리를 참조할 수 있도록 User의 rpmmacros 파일에 해당 디렉토리를 명시
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
vi ~/.rpmmacros
%_topdir /usr1/program/rpmbuild
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
%_buildrootdir %{_topdir}/BUILDROOT
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
17. 1717
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
rpm build package 확인
빌드 트리 구축
빌드할 소스 파일 준비
명세(SPEC) 파일 작성
RPM 패키지 빌드
MySQL 패키징
QnA
18. 1818
빌드할 소스 파일을 준비
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
su - rpms
cd /usr1/program/rpmbuild/SOURCES/
sudo wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
ls –l
total 160
-rw-r--r--. 1 root root 160381 Feb 12 2006 iftop-0.17.tar.gz
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
iftop-0.17.tar.gz
19. 1919
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
rpm build package 확인
빌드 트리 구축
빌드할 소스 파일 준비
명세(SPEC) 파일 작성
RPM 패키지 빌드
MySQL 패키징
QnA
20. 2020
빌드할 소스 파일의 spec 파일을 rpm 빌드 트리의 SPECS 폴더 아래로 복사한 후, 패키지에 대한 명세(SPEC) 파일을 작성
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
cd /usr1/program/rpmbuild/SOURCES
tar zxvf iftop-0.17.tar.gz
sudo find / -name *.spec
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libgomp.spec
/usr/share/vim/vimfiles/template.spec
/usr1/program/rpmbuild/SOURCES/iftop-0.17/iftop.spec
cp /usr1/program/rpmbuild/SOURCES/iftop-0.17/iftop.spec /usr1/program/rpmbuild/SPECS/
cd /usr1/program/rpmbuild/SPECS/
다운로드 받은 SOURCE 설치 파일 안에
SPEC 파일이 포함되었는지 확인
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
iftop-0.17.tar.gz
iftop.spec
21. 2121
명세(SPEC) 파일을 구조.
# vi /usr1/program/rpmbuild/SPECS/iftop.spec
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
%global name iftop
Summary: iftop - display bandwidth usage on an interface by host
Name: %{name}
Version: 0.17
Release: 1
Source: http://www.ex-parrot.com/~pdw/iftop/%{name}-%{version}.tar.gz
URL: http://www.ex-parrot.com/~pdw/iftop/
Group: Network/Monitoring
Packager: Richard Lucassen <spamtrap@lucassen.org>
Copyright: GPL
BuildRoot: /var/tmp/%{name}-%{version}-root
Prefix: %{_prefix}
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
… (생략)…
%clean
rm -rf $RPM_BUILD_ROOT
%files
…(생략)…
%changelog
매크로 정의 (=변수정의)
자주 사용하는 문자열을 매크로로 정의
헤더
RPM 패키지에 대한 설명
명령실행
빌드 방법을 명시
변경로그
해당 패키지의 변경내역을 명시
22. 2222
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
RPM 패키징 단계 이해
1. rpm build package 확인 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
빌드하기 전, 필요한 작업 명시
(헤더 부분의 Source 섹션에서 지정한 파일 압축 해제)
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
iftop-0.17.tar.gz
iftop.spec
mysql-5.6.25
%setup –q
: 압축푸는 명령
2. 빌드 트리 구축
23. 2323
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
압축을 푼 소스를 가지고 빌드 수행
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
iftop-0.17.tar.gz
iftop.spec
mysql-5.6.25
1. ./configure를 실행하여
makefile 생성
2. make 를 실행하여 빌드 수행
24. 2424
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
make install 실행하여
BUILDROOT 폴더로 복사 수행
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
빌드 수행 후 생성된 파일들을 설치폴더로 복사
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
mysql-5.6.25
iftop-0.17-1.x86_64
usr
bin
iftop
25. 2525
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
빌드 마지막에 수행할 내용들을 정의
주로 설치 폴더를 삭제하도록 설정
BUILDROOT 폴더아래의 데이터 삭제
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
iftop-0.17-1.x86_64
usr
bin
iftop
x86_64
iftop-0.17-1.x86_64.rpm
RPM File 작성
26. 2626
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
rpm 파일에 함께 묶여야 하는(패키징 되는) 파일 지정
/ (루트)
usr
bin
iftop
RPM 파일에 패키징된 파일들은 이후에 RPM 설치 후 함께 설치된다.
27. 2727
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
패키지에 대한 명세(SPEC) 파일을 작성
- "명령실행" 섹션 작성
%description
%prep
%setup -q
%build
CPPFLAGS=-I/usr/include/pcap
./configure --prefix="%{_prefix}" --mandir="%{_mandir}"
make
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
install -s -m 755 iftop $RPM_BUILD_ROOT%{_bindir}
install iftop.8 $RPM_BUILD_ROOT%{_mandir}/man8
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README
TODO
%{_bindir}/*
%doc %{_mandir}/man*/*
%package
%post
rpm 설치 이후에 필요한 추가작업 정의
28. 2828
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
rpm build package 확인
빌드 트리 구축
빌드할 소스 파일 준비
명세(SPEC) 파일 작성
RPM 패키지 빌드
MySQL 패키징
QnA
29. 2929
rpmbuild 명령어로 rpm 파일을 생성함
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
cd /usr1/program/rpmbuild/SPECS/
rpmbuild -ba iftop.spec
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.7)(64bit)
libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libncurses.so.5()(64bit) libpcap.so.1()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit) libtinfo.so.5()(64bit) rtld(GNU_HASH)
Processing files: iftop-debuginfo-0.17-1.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /usr1/program/rpmbuild/BUILDROOT/iftop-0.17-1.x86_64
Wrote: /usr1/program/rpmbuild/SRPMS/iftop-0.17-1.src.rpm
Wrote: /usr1/program/rpmbuild/RPMS/x86_64/iftop-0.17-1.x86_64.rpm
Wrote: /usr1/program/rpmbuild/RPMS/x86_64/iftop-debuginfo-0.17-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.U2fOCH
+ umask 022
+ cd /usr1/program/rpmbuild/BUILD
+ cd iftop-0.17
+ exit 0
rpmbuild 옵션 설명
-bb : prep 컴파일, 설치와 바이너리 패키지만 생성
-bp : 명세파일의 prep 섹션을 실행
-bl : 리스트 체크
-bc : prep를 하고 컴파일 진행
-bi : prep 컴파일, 설치 생성
-ba : 소스와 바이너리 모두 생성
30. cd /usr1/program/rpmbuild/RPMS/x86_64
ls -l
total 44
-rw-rw-r--. 1 rpms rpms 39324 Aug 24 03:38 iftop-0.17-1.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 2048 Aug 24 03:38 iftop-debuginfo-0.17-1.x86_64.rpm
3030
빌드된 rpm 파일 확인
RPM 패키징 단계 이해
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
/usr1/program/rpmbuild
SOURCES
SPECS
BUILD
BUILDROOT
RPMS
x86_64
iftop-0.17-1.x86_64.rpm
iftop-debuginfo-0.17-1.x86_64.rpm
32. 323232
MySQL RPM 패키징
MySQL 표준설치
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
MySQL 표준 설치 정의
- MySQL RPM 패키징 할 때 어느 곳에서 진행할지 결정.
- MySQL 설치 이외의 작업들은, %Post 부분에서 작업 및 Shell 파일 실행을 통해 일괄진행하는 것으로 정의함
1. MySQL 설치 파일 다운로드
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
5. MySQL Install
6. Monitoring, Backup 적용
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
%Post 부분에
명시
33. 3333
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
locate rpmrc
/usr/lib/rpm/rpmrc
yum -y install rpm-build
yum -y install readline-devel pam-devel openssl-devel gcc bison
yum -y install gcc-c++ gperf ncurses-devel perl time zlib-devel cmake libaio-devel
groupadd rpms
useradd -g rpms rpms
RPM 설정파일인 rpmrc 파일 존재 확인
- rpmrc 파일은 빌드할 아키텍쳐에 맞는 컴파일러 flag를 생성하고 OS를 설정하며, spec에서 사용하는 매크로를 지정하는 파일
34. 3434
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
mkdir -p /usr1/program
chown -R rpms:rpms /usr1/program
su - rpms
cd /usr1/program
mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
vi ~/.rpmmacros
%_topdir /usr1/program/rpmbuild
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
%_buildrootdir %{_topdir}/BUILDROOT
%_prefix %{_topdir}/mysql
RPM 빌드 트리 구축
35. 3535
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
첨부파일을 RPM 패키징에 포함하기 위한 사전 작업 진행
cd /usr1/program/rpmbuild/SOURCES/
sudo wget http://www.mysql.com/Downloads/MySQL-5.6/mysql-5.6.25.tar.gz
tar xzvf mysql-5.6.25.tar.gz
cd /usr1/program/rpmbuild/SOURCES/mysql-5.6.25
mkdir -p BUILD-433
cd BUILD-433
ls -l
-rw-rw-r--. 1 rpms rpms 7754 2015-06-19 22:33 433_my.cnf
-rw-r--r--. 1 rpms rpms 748 2015-07-05 16:45 433_mysql_setting_01.sh
-rw-r--r--. 1 rpms rpms 1618 2015-07-05 16:45 433_mysql_setting_02.sh
-rw-r--r--. 1 rpms rpms 1182 2015-07-05 16:46 433_mysql_setting_05.sh
-rw-rw-r--. 1 rpms rpms 6780 2015-06-19 22:40 433_mysql_setting_07.sh
-rw-r--r--. 1 rpms rpms 1042165 2015-06-27 22:47 common_schema-2.2.sql
-rw-r--r--. 1 rpms rpms 13128908 2015-06-27 22:47 dba_20150601.tar.gz
-rw-rw-r--. 1 rpms rpms 74778 2015-06-19 22:35 mysql-sys-master.tar.gz
-rw-r--r--. 1 rpms rpms 4487558 2015-06-27 22:47 nmon_linux_14i.tar.gz
-rw-r--r--. 1 rpms rpms 52794 2015-06-27 22:47 zzdba_objects_v1.2_20140901.sql
cd /usr1/program/rpmbuild/SOURCES
tar cvzf mysql-5.6.25.tar.gz mysql-5.6.25
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
36. 3636
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "매크로" 부분 수정
vi ~/.rpmmacros
%_topdir /usr1/program/rpmbuild
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
%_buildrootdir %{_topdir}/BUILDROOT
%_prefix %{_topdir}/mysql
cd /usr1/program/rpmbuild/SOURCES/mysql-5.6.25/support-files
cp mysql.5.6.25.spec /usr1/program/rpmbuild/SPECS/
vi mysql.5.6.25.spec
### 매크로 변수 재정의
%global mysql_old_vendor MySQL AB
%global mysql_vendor_2 Sun Microsystems, Inc.
%global mysql_vendor Oracle and/or its affiliates
%global mysql_version 5.6.25
%global mysqld_user 433-dba
%global mysqld_group mysql
%global mysqldatadir /var/lib/mysql
%global rpm_name 433
%global prefix %{_prefix}
37. 3737
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "헤더" 부분 수정
vi mysql.5.6.25.spec
Name: %{rpm_name}-MySQL%{product_suffix}
Summary: MySQL: a very fast and reliable SQL database server
Group: Applications/Databases
Version: 5.6.25
Release: %{release}%{?distro_releasetag:.%{distro_releasetag}}
Distribution: %{distro_description}
License: Copyright (c) 2000, 2015, %{mysql_vendor}. All rights reserved. Under %{license_type}
license as shown in the Description field.
#Source: http://www.mysql.com/Downloads/MySQL-5.6/%{src_dir}.tar.gz
Source: /usr1/program/rpmbuild/SOURCES/mysql-%{version}.tar.gz
URL: http://www.mysql.com/
Packager: MySQL Release Engineering <mysql-build@oss.oracle.com>
Vendor: %{mysql_vendor}
BuildRequires: %{distro_buildreq}
38. 3838
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
vi mysql.5.6.25.spec
%prep
rm -rf %{prefix}
mkdir %{prefix}
%setup -T -a 0 -c -n %{src_dir}
mkdir release
(
cd release
# XXX: MYSQL_UNIX_ADDR should be in cmake/* but mysql_version is included before
# XXX: install_layout so we can't just set it based on INSTALL_LAYOUT=RPM
${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock"
-DFEATURE_SET="%{feature_set}"
-DCMAKE_INSTALL_PREFIX="%{prefix}"
%{ssl_option}
-DCOMPILATION_COMMENT="%{compilation_comment_release}"
-DMYSQL_SERVER_SUFFIX="%{server_suffix}"
echo BEGIN_NORMAL_CONFIG ; egrep '^#define' include/config.h ; echo END_NORMAL_CONFIG
make ${MAKE_JFLAG} VERBOSE=1
)
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
39. 3939
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
vi mysql.5.6.25.spec
%install
RBR=$RPM_BUILD_ROOT
MBD=$RPM_BUILD_DIR/%{src_dir}mkdir -p %{prefix}
mkdir -p %{prefix}
…
mkdir -p $RBR%{_sysconfdir}/my.cnf.d
# Install all binaries
(
cd $MBD/release
make DESTDIR=$RBR install
)
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/433_my.cnf $RBR%{_sysconfdir}/433_my.cnf
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/433_mysql_setting_01.sh $RBR%{_sysconfdir}/433_mysql_setting_01.sh
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/433_mysql_setting_02.sh $RBR%{_sysconfdir}/433_mysql_setting_02.sh
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/433_mysql_setting_05.sh $RBR%{_sysconfdir}/433_mysql_setting_05.sh
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/433_mysql_setting_07.sh $RBR%{_sysconfdir}/433_mysql_setting_07.sh
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/dba_20150601.tar.gz $RBR%{_sysconfdir}/dba_20150601.tar.gz
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/nmon_linux_14i.tar.gz $RBR%{_sysconfdir}/nmon_linux_14i.tar.gz
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/mysql-sys-master.tar.gz $RBR%{_sysconfdir}/mysql-sys-master.tar.gz
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/zzdba_objects_v1.2_20140901.sql $RBR%{_sysconfdir}/zzdba_objects_v1.2_20140901.sql
install -m 755 $MBD/%{src_base}-%{version}/BUILD-433/common_schema-2.2.sql $RBR%{_sysconfdir}/common_schema-2.2.sql
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
40. 4040
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
vi mysql.5.6.25.spec
# Touch the place where the my.cnf config file might be located
# Just to make sure it's in the file list and marked as a config file
touch $RBR%{_sysconfdir}/my.cnf
touch $RBR%{_sysconfdir}/433_my.cnf
touch $RBR%{_sysconfdir}/433_mysql_setting_01.sh
touch $RBR%{_sysconfdir}/433_mysql_setting_02.sh
touch $RBR%{_sysconfdir}/433_mysql_setting_05.sh
touch $RBR%{_sysconfdir}/433_mysql_setting_07.sh
touch $RBR%{_sysconfdir}/dba_20150601.tar.gz
touch $RBR%{_sysconfdir}/nmon_linux_14i.tar.gz
touch $RBR%{_sysconfdir}/mysql-sys-master.tar.gz
touch $RBR%{_sysconfdir}/zzdba_objects_v1.2_20140901.sql
touch $RBR%{_sysconfdir}/common_schema-2.2.sql
41. vi mysql.5.6.25.spec
%pre -n MySQL-server%{product_suffix}
DBSPACE=`cat /etc/sysconfig/network | grep HOSTNAME | awk -F= '{print $2}'`
rm -rf /usr1/mysql/DBSpace_${DBSPACE}
rm -rf /usr1/mysql/BACKUP
ls -l /usr1/mysql
mkdir -p %{prefix}
mkdir -p /usr1/mysql/DBSpace_${DBSPACE}
cd /usr1/mysql/DBSpace_${DBSPACE}
mkdir -p /data/mysql/{ADMIN,BINLOG,DATA,IBLOG,RELAYLOG,UNDO}
mkdir -p /data/BACKUP
cd /usr1/mysql/DBSpace_${DBSPACE}
ln -s /data/mysql/ADMIN ADMIN
ln -s /data/mysql/BINLOG BINLOG
ln -s /data/mysql/DATA DATA
ln -s /data/mysql/IBLOG IBLOG
ln -s /data/mysql/RELAYLOG RELAYLOG
ln -s /data/mysql/UNDO UNDO
cd /usr1/mysql
mkdir -p /usr1/mysql/BACKUP/FULL/BACKUP_DIR1
mkdir -p /usr1/mysql/BACKUP/FULL/BACKUP_DIR2
4141
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
42. vi mysql.5.6.25.spec
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
mysql_datadir=%{mysqldatadir}
PID_FILE_PATT="$mysql_datadir/*.pid"
if ! grep '^MySQL RPM upgrade' $STATUS_FILE >/dev/null 2>&1 ; then
mv -f /etc/my.cnf /etc/my_origin.cnf
mv -f /etc/433_my.cnf /etc/my.cnf
mv -f /etc/433_mysql_setting_01.sh %{prefix}/433_mysql_setting_01.sh
mv -f /etc/433_mysql_setting_02.sh %{prefix}/433_mysql_setting_02.sh
mv -f /etc/433_mysql_setting_05.sh %{prefix}/433_mysql_setting_05.sh
mv -f /etc/433_mysql_setting_07.sh %{prefix}/433_mysql_setting_07.sh
mv -f /etc/dba_20150601.tar.gz %{prefix}/dba_20150601.tar.gz
mv -f /etc/nmon_linux_14i.tar.gz %{prefix}/nmon_linux_14i.tar.gz
mv -f /etc/mysql-sys-master.tar.gz %{prefix}/mysql-sys-master.tar.gz
mv -f /etc/zzdba_objects_v1.2_20140901.sql %{prefix}/zzdba_objects_v1.2_20140901.sql
mv -f /etc/common_schema-2.2.sql %{prefix}/common_schema-2.2.sql
groupadd %{mysqld_group}
useradd %{mysqld_user} -g %{mysqld_group}
chown -R %{mysqld_user}:%{mysqld_group} /usr1
chown -R %{mysqld_user}:%{mysqld_group} /data
4242
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install
43. vi mysql.5.6.25.spec
HOST_NAME=`hostname`
echo ${HOST_NAME} | sed -i "s/DBSpace_433/DBSpace_${HOST_NAME}/g" /etc/my.cnf
%{_bindir}/mysql_install_db --rpm --user=%{mysqld_user} --defaults-file=/etc/my.cnf
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# Execute backup & monitoring script
/bin/sh %{prefix}/433_mysql_setting_01.sh %{prefix} 5625
/bin/sh %{prefix}/433_mysql_setting_02.sh %{prefix} 5625
/bin/sh %{prefix}/433_mysql_setting_05.sh %{prefix} 5625
/bin/sh %{prefix}/433_mysql_setting_07.sh %{prefix} 5625
Fi
4343
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
SOURCE 파일
명세 (SPEC) 파일
1. MySQL 소스 설치 파일
6. Monitoring, Backup 스크립트 파일
3. nmon , iftop 등 사용 Tool 설치 파일
2. User, 디렉토리 생성
3. nmon , iftop 등 사용 Tool 설치
4. OS 환경 세팅
6. Monitoring, Backup 적용
5. MySQL Install