SlideShare a Scribd company logo
1
rpm package 를 이용한 MySQL 설치 자동화
2015.08.19
배은미
1
22
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL RPM 패키징
QnA
33
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL RPM 패키징
QnA
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
55
RPM 이해
 RPM 명명법
diary-0.0.1-3.i386.rpm
[확장자]
[아키텍처]
[릴리즈버전]
[패키지버전]
[패키지이름]
66
RPM 이해
 RPM 명령어
77
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL RPM 패키징
QnA
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분 소요
99
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL 패키징
QnA
101010
RPM 패키징 단계 이해
 기본적인 RPM 패키징 단계
SOURCE 파일
명세 (SPEC) 파일
RPM 파일
(확장자 .rpm)
 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 패키지 빌드
1212
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
 rpm build package 확인
 빌드 트리 구축
 빌드할 소스 파일 준비
 명세(SPEC) 파일 작성
 RPM 패키지 빌드
MySQL 패키징
QnA
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 및 의존파일을 설치한다.
1414
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
 rpm build package 확인
 빌드 트리 구축
 빌드할 소스 파일 준비
 명세(SPEC) 파일 작성
 RPM 패키지 빌드
MySQL 패키징
QnA
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에 필요한 폴더 생성
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
1717
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
 rpm build package 확인
 빌드 트리 구축
 빌드할 소스 파일 준비
 명세(SPEC) 파일 작성
 RPM 패키지 빌드
MySQL 패키징
QnA
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
1919
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
 rpm build package 확인
 빌드 트리 구축
 빌드할 소스 파일 준비
 명세(SPEC) 파일 작성
 RPM 패키지 빌드
MySQL 패키징
QnA
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
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 패키지에 대한 설명
명령실행
빌드 방법을 명시
변경로그
해당 패키지의 변경내역을 명시
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. 빌드 트리 구축
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 를 실행하여 빌드 수행
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
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 작성
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 설치 후 함께 설치된다.
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 설치 이후에 필요한 추가작업 정의
2828
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
 rpm build package 확인
 빌드 트리 구축
 빌드할 소스 파일 준비
 명세(SPEC) 파일 작성
 RPM 패키지 빌드
MySQL 패키징
QnA
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 : 소스와 바이너리 모두 생성
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
3131
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL 패키징
QnA
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 부분에
명시
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에서 사용하는 매크로를 지정하는 파일
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 빌드 트리 구축
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
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}
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}
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
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
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
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
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
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
4444
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
명세(SPEC) 파일 작성
- "실행" 부분 수정
vi mysql.5.6.25.spec
%files -n MySQL-server%{product_suffix} -f release/support-files/plugins.files
%defattr(-,root,root,0755)
%if %{defined license_files_server}
%doc %{license_files_server}
%endif
%doc %{src_dir}/Docs/ChangeLog
%doc %{src_dir}/Docs/INFO_SRC*
%doc release/Docs/INFO_BIN*
%doc release/support-files/my-default.cnf
### 433-setting
%attr(755, root, root) %{_sysconfdir}/my.cnf
%attr(755, root, root) %{_sysconfdir}/433_my.cnf
%attr(755, root, root) %{_sysconfdir}/433_mysql_setting_01.sh
%attr(755, root, root) %{_sysconfdir}/433_mysql_setting_02.sh
%attr(755, root, root) %{_sysconfdir}/433_mysql_setting_05.sh
%attr(755, root, root) %{_sysconfdir}/433_mysql_setting_07.sh
%attr(755, root, root) %{_sysconfdir}/dba_20150601.tar.gz
%attr(755, root, root) %{_sysconfdir}/nmon_linux_14i.tar.gz
%attr(755, root, root) %{_sysconfdir}/mysql-sys-master.tar.gz
%attr(755, root, root) %{_sysconfdir}/zzdba_objects_v1.2_20140901.sql
%attr(755, root, root) %{_sysconfdir}/common_schema-2.2.sql
4545
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
RPM 빌드
rpmbuild -bb mysql.5.6.25.spec
…
실행 중(%doc): /bin/sh -e /var/tmp/rpm-tmp.CRt6OR
+ umask 022
+ cd /usr1/program/rpmbuild/BUILD
+ cd mysql-5.6.25
+ '[' /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64 '!=' / ']'
+ '[' -d /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64 ']'
+ rm -rf /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64
+ exit 0 ← 정상설치 확인
4646
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
RPM 파일 확인
cd /usr1/program/rpmbuild/RPMS/x86_64
ls -l
합계 107056
-rw-rw-r--. 1 rpms rpms 11263248 2015-06-19 23:02 MySQL-client-5.6.25-1.linux_glibc.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 1632839 2015-06-19 23:02 MySQL-devel-5.6.25-1.linux_glibc.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 21563106 2015-06-19 23:02 MySQL-embedded-5.6.25-1.linux_glibc.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 44961329 2015-06-19 23:02 MySQL-server-5.6.25-1.linux_glibc.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 2511295 2015-06-19 23:02 MySQL-shared-5.6.25-1.linux_glibc.x86_64.rpm
-rw-rw-r--. 1 rpms rpms 27682270 2015-06-19 23:02 MySQL-test-5.6.25-1.linux_glibc.x86_64.rpm
4747
MySQL RPM 패키징
1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드
Install MySQL
sudo rpm -Uvh MySQL-shared-5.6.25-1.linux_glibc.x86_64.rpm
sudo rpm -Uvh MySQL-client-5.6.25-1.linux_glibc.x86_64.rpm
sudo rpm -Uvh MySQL-server-5.6.25-1.linux_glibc.x86_64.rpm
4848
Index
RPM 이해
RPM 패키징 목적
RPM 패키징 단계 이해
MySQL 패키징
QnA
4949

More Related Content

What's hot

MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)NeoClova
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usagevincentvdk
 
Spectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf WeiserSpectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf WeiserSandeep Patil
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSTomas Vondra
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)Altinity Ltd
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxNeoClova
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesKenny Gryp
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Ceph Month 2021: RADOS Update
Ceph Month 2021: RADOS UpdateCeph Month 2021: RADOS Update
Ceph Month 2021: RADOS UpdateCeph Community
 
How to Survive an OpenStack Cloud Meltdown with Ceph
How to Survive an OpenStack Cloud Meltdown with CephHow to Survive an OpenStack Cloud Meltdown with Ceph
How to Survive an OpenStack Cloud Meltdown with CephSean Cohen
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바NeoClova
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개NeoClova
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestI Goo Lee
 
[AIX] RDX Device Backup Guide
[AIX] RDX Device Backup Guide[AIX] RDX Device Backup Guide
[AIX] RDX Device Backup GuideCheolHee Han
 
Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?Samsung Open Source Group
 
Gpfs introandsetup
Gpfs introandsetupGpfs introandsetup
Gpfs introandsetupasihan
 
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...裝機安 Angelo
 

What's hot (20)

MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usage
 
Spectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf WeiserSpectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf Weiser
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFS
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Ceph Month 2021: RADOS Update
Ceph Month 2021: RADOS UpdateCeph Month 2021: RADOS Update
Ceph Month 2021: RADOS Update
 
How to Survive an OpenStack Cloud Meltdown with Ceph
How to Survive an OpenStack Cloud Meltdown with CephHow to Survive an OpenStack Cloud Meltdown with Ceph
How to Survive an OpenStack Cloud Meltdown with Ceph
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 
Query logging with proxysql
Query logging with proxysqlQuery logging with proxysql
Query logging with proxysql
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
[AIX] RDX Device Backup Guide
[AIX] RDX Device Backup Guide[AIX] RDX Device Backup Guide
[AIX] RDX Device Backup Guide
 
Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?
 
Gpfs introandsetup
Gpfs introandsetupGpfs introandsetup
Gpfs introandsetup
 
InnoDb Vs NDB Cluster
InnoDb Vs NDB ClusterInnoDb Vs NDB Cluster
InnoDb Vs NDB Cluster
 
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...
HPE SimpliVity install mgmt guide 201907-01 (Taiwan-Chinese) ;HPE SimpliVity ...
 

Similar to rpm package 를 이용한 MySQL 설치자동화

[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernicejumiss
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정Aiden Seonghak Hong
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일he4722
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxwonyong hwang
 
Lkda facebook seminar_140419
Lkda facebook seminar_140419Lkda facebook seminar_140419
Lkda facebook seminar_140419sprdd
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014Gruter
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) ymtech
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)Ubuntu Korea Community
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu customsprdd
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11종인 전
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 

Similar to rpm package 를 이용한 MySQL 설치자동화 (20)

[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
Ffmpeg for android
Ffmpeg for androidFfmpeg for android
Ffmpeg for android
 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernice
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
 
R hive tutorial 1
R hive tutorial 1R hive tutorial 1
R hive tutorial 1
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
Lkda facebook seminar_140419
Lkda facebook seminar_140419Lkda facebook seminar_140419
Lkda facebook seminar_140419
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit)
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu custom
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 

More from I Goo Lee

MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항I Goo Lee
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOI Goo Lee
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
From MSSQL to MariaDB
From MSSQL to MariaDBFrom MSSQL to MariaDB
From MSSQL to MariaDBI Goo Lee
 
AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기I Goo Lee
 
Backup automation in KAKAO
Backup automation in KAKAO Backup automation in KAKAO
Backup automation in KAKAO I Goo Lee
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축I Goo Lee
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례I Goo Lee
 
MySQL 5.7 NF – Optimizer Improvement
 MySQL 5.7 NF – Optimizer Improvement MySQL 5.7 NF – Optimizer Improvement
MySQL 5.7 NF – Optimizer ImprovementI Goo Lee
 
MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용I Goo Lee
 
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)I Goo Lee
 
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개I Goo Lee
 
AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론I Goo Lee
 
AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분I Goo Lee
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTI Goo Lee
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKI Goo Lee
 
MySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELKMySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELKI Goo Lee
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기I Goo Lee
 
Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)I Goo Lee
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례I Goo Lee
 

More from I Goo Lee (20)

MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
From MSSQL to MariaDB
From MSSQL to MariaDBFrom MSSQL to MariaDB
From MSSQL to MariaDB
 
AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기
 
Backup automation in KAKAO
Backup automation in KAKAO Backup automation in KAKAO
Backup automation in KAKAO
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례
 
MySQL 5.7 NF – Optimizer Improvement
 MySQL 5.7 NF – Optimizer Improvement MySQL 5.7 NF – Optimizer Improvement
MySQL 5.7 NF – Optimizer Improvement
 
MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용
 
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
 
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
 
AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론
 
AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
MySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELKMySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELK
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기
 
Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례
 

rpm package 를 이용한 MySQL 설치자동화

  • 1. 1 rpm package 를 이용한 MySQL 설치 자동화 2015.08.19 배은미 1
  • 2. 22 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL RPM 패키징 QnA
  • 3. 33 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL RPM 패키징 QnA
  • 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
  • 5. 55 RPM 이해  RPM 명명법 diary-0.0.1-3.i386.rpm [확장자] [아키텍처] [릴리즈버전] [패키지버전] [패키지이름]
  • 7. 77 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL RPM 패키징 QnA
  • 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분 소요
  • 9. 99 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL 패키징 QnA
  • 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
  • 31. 3131 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL 패키징 QnA
  • 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
  • 44. 4444 MySQL RPM 패키징 1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드 명세(SPEC) 파일 작성 - "실행" 부분 수정 vi mysql.5.6.25.spec %files -n MySQL-server%{product_suffix} -f release/support-files/plugins.files %defattr(-,root,root,0755) %if %{defined license_files_server} %doc %{license_files_server} %endif %doc %{src_dir}/Docs/ChangeLog %doc %{src_dir}/Docs/INFO_SRC* %doc release/Docs/INFO_BIN* %doc release/support-files/my-default.cnf ### 433-setting %attr(755, root, root) %{_sysconfdir}/my.cnf %attr(755, root, root) %{_sysconfdir}/433_my.cnf %attr(755, root, root) %{_sysconfdir}/433_mysql_setting_01.sh %attr(755, root, root) %{_sysconfdir}/433_mysql_setting_02.sh %attr(755, root, root) %{_sysconfdir}/433_mysql_setting_05.sh %attr(755, root, root) %{_sysconfdir}/433_mysql_setting_07.sh %attr(755, root, root) %{_sysconfdir}/dba_20150601.tar.gz %attr(755, root, root) %{_sysconfdir}/nmon_linux_14i.tar.gz %attr(755, root, root) %{_sysconfdir}/mysql-sys-master.tar.gz %attr(755, root, root) %{_sysconfdir}/zzdba_objects_v1.2_20140901.sql %attr(755, root, root) %{_sysconfdir}/common_schema-2.2.sql
  • 45. 4545 MySQL RPM 패키징 1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드 RPM 빌드 rpmbuild -bb mysql.5.6.25.spec … 실행 중(%doc): /bin/sh -e /var/tmp/rpm-tmp.CRt6OR + umask 022 + cd /usr1/program/rpmbuild/BUILD + cd mysql-5.6.25 + '[' /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64 '!=' / ']' + '[' -d /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64 ']' + rm -rf /usr1/program/rpmbuild/BUILDROOT/MySQL-5.6.25-1.linux_glibc.x86_64 + exit 0 ← 정상설치 확인
  • 46. 4646 MySQL RPM 패키징 1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드 RPM 파일 확인 cd /usr1/program/rpmbuild/RPMS/x86_64 ls -l 합계 107056 -rw-rw-r--. 1 rpms rpms 11263248 2015-06-19 23:02 MySQL-client-5.6.25-1.linux_glibc.x86_64.rpm -rw-rw-r--. 1 rpms rpms 1632839 2015-06-19 23:02 MySQL-devel-5.6.25-1.linux_glibc.x86_64.rpm -rw-rw-r--. 1 rpms rpms 21563106 2015-06-19 23:02 MySQL-embedded-5.6.25-1.linux_glibc.x86_64.rpm -rw-rw-r--. 1 rpms rpms 44961329 2015-06-19 23:02 MySQL-server-5.6.25-1.linux_glibc.x86_64.rpm -rw-rw-r--. 1 rpms rpms 2511295 2015-06-19 23:02 MySQL-shared-5.6.25-1.linux_glibc.x86_64.rpm -rw-rw-r--. 1 rpms rpms 27682270 2015-06-19 23:02 MySQL-test-5.6.25-1.linux_glibc.x86_64.rpm
  • 47. 4747 MySQL RPM 패키징 1. rpm build package 확인 2. 빌드 트리 구축 3. 빌드할 소스 파일 준비 4. 명세(SPEC) 파일 작성 5. RPM 패키지 빌드 Install MySQL sudo rpm -Uvh MySQL-shared-5.6.25-1.linux_glibc.x86_64.rpm sudo rpm -Uvh MySQL-client-5.6.25-1.linux_glibc.x86_64.rpm sudo rpm -Uvh MySQL-server-5.6.25-1.linux_glibc.x86_64.rpm
  • 48. 4848 Index RPM 이해 RPM 패키징 목적 RPM 패키징 단계 이해 MySQL 패키징 QnA
  • 49. 4949