VIDEOCUBE
RPM을 사설 yum에 등록하여 활용하기 본문
1. 사설 yum 서버에서 다른 서버에서 편하게 Repository 를 연결하고,
2. 사설 yum 에서 yum 을 이용한 설치를 해보자..
신규 서버가 투입되면서.. 레포지토리를 매번 설정해야 하는 것을 좀더 편하게 ..
RPM 으로 배포 해보자.
RPM 을 만들기 위해서는 [rpm-build] tool 이 필요합니다.
yum install rpm-build
설치가 완료가 되면
RPM 서버에서 /data/rpmbuild/videocube-repo 폴더를 생성 후 해당 폴더로 이동 후 다음 파일을 생성 합니다.
vi videocube-repo.spec
#
# Copyright (c) 2017 VideoCube Lab., Ltd.
# All rights reserved.
#
# $Id: videocube-repo.spec 735 2017-11-05 12:30:00Z manager $
#
%define _unpackaged_files_terminate_build 0
%define _topdir .
%define _sourcedir .
%define _builddir .
%define _rpmdir .
%define _build_name_fmt %%{NAME}-%%{VERSION}.rpm
%define _prefix /etc/yum.repos.d
Summary: VideoCube Repository
Name: VideoCube-Repo
Release: 1
Version: 1.0
URL: http://repo.videocuble.lab/
Packager: packager
License: None.
Vendor: VideoCube Lab., Ltd.
Group: Server/Repo
BuildRoot: %{_tmppath}/%{name}-root
%description
Made by VideoCube
%prep
%build
%install
rm -rf %{buildroot}
mkdir -m 0755 -p %{buildroot}%{_prefix}
install -D -m 644 %{_prefix}/videocube.repo %{buildroot}%{_prefix}
%clean
%post
%preun
%postun
%files
%{_prefix}/videocube.repo
%changelog
* Fri Apr 16 2017 <pluto90k@gmail.com> - 1.0
- VideoCube Release
RPM 을 Build 합니다.
rpmbuild -bb videocube-repo.spec
.
├── VideoCube-Repo-1.0.rpm
└── videocube-repo.spec
RPM 을 생성하였습니다.
해당 파일을 repo 서버의 document 폴더로 복사합니다.
├── VideoCube-Repo-1.0.rpm << 복사
├── os6
│ ├── index.html
│ └── repodata
│ ├── 401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz
│ ├── 6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz
│ ├── 77a287c136f4ff47df506229b9ba67d57273aa525f06ddf41a3fef39908d61a7-other.sqlite.bz2
│ ├── 8596812757300b1d87f2682aff7d323fdeb5dd8ee28c11009e5980cb5cd4be14-primary.sqlite.bz2
│ ├── dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz
│ ├── f8606d9f21d61a8bf405af7144e16f6d7cb1202becb78ba5fea7d0f1cd06a0b2-filelists.sqlite.bz2
│ └── repomd.xml
└── os7
├── index.html
└── repodata
├── 401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz
├── 6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz
├── 77a287c136f4ff47df506229b9ba67d57273aa525f06ddf41a3fef39908d61a7-other.sqlite.bz2
├── 8596812757300b1d87f2682aff7d323fdeb5dd8ee28c11009e5980cb5cd4be14-primary.sqlite.bz2
├── dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz
├── f8606d9f21d61a8bf405af7144e16f6d7cb1202becb78ba5fea7d0f1cd06a0b2-filelists.sqlite.bz2
└── repomd.xml
신규 서버 에 접속합니다.
vi /etc/resolv.conf
nameserver 192.168.1.6 #사설 DNS 서버에 연결합니다.
rpm -ivh http://repo.videocube.lab/VideoCube-Repo-1.0.rpm
http://repo.videocube.lab/VideoCube-Repo-1.0.rpm(을)를 복구합니다
준비 중... ########################################### [100%]
1:VideoCube-Repo ########################################### [100%]
root@linux-01:/root> rpm -qa |grep VideoCube
VideoCube-Repo-1.0-1.x86_64
설치 여부를 확인합니다.
root@linux-01:/root> cat /etc/yum.repos.d/videocube.repo
[videocube]
name = videocube repository
baseurl=http://repo.videocube.lab/repo/$releasever
gpgcheck=0
enabled=1
root@linux-01:/root> yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: ftp.neowiz.com
* extras: ftp.neowiz.com
* updates: ftp.neowiz.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
videocube | 2.9 kB 00:00
videocube/primary_db | 1.2 kB 00:00
repo id repo name status
base CentOS-6 - Base 6,706
extras CentOS-6 - Extras 46
updates CentOS-6 - Updates 756
videocube videocube repository 0
연결이 되었습니다.
사설 yum ( videocube) 에서 java를 rpm 으로 만들고 사설 yum에서 java 를 설치를 해보자..
1. 자바 다운로드 하기
ㄴ Java Source Download - Oracle
[ 작업 폴더 만들기 ]
mkdir -p/data/rpmbuild/videocube-java
cd /data/rpmbuild/videocube-java
scp server-jre-8u152-linux-x64.tar.gz root@192.168.1.7:/data/rpmbuild/videocube-java
root@192.168.1.7's password:
bash: scp: command not found
lost connection
원격지 서버에도 scp 가 있어야만 파일을 보낼 수 가 있다..
리눅스를 최소 설치 하면 scp 는 설치되어 있지 않는다.
해서 원격지 서버 192.168.1.7 번 서버에 접속하여
yum install openssh-clients
했더니.. DNS 가 문제가 발생했다.. 사설 DNS 가 외부 DNS 를 받아오지 못한다..
외부 DNS 를 연결하는 부분에서 나오는 장애는 우선 나중에 생각하기로 하고.. 해당 서버에서
vi /etc/resolv.conf
연결을 외부 DNS 로 변경 후 다시 실행해 보자..
이렇게 나올 때는.. videocube 와 사설 dns 이기 때문에.. 찾을 수가 없다..
yum --disablerepo=videocube install openssh-clients
사설 dns 를 제외하고 다시 실행 합니다.
-rw-r--r--. 1 root root 54778257 2017-11-06 00:47 server-jre-8u152-linux-x64.tar.gz
RPM 서버에.. 다음 파일을 받아왔습니다.
tar xvfz server-jre-8u152-linux-x64.tar.gz
압축을 풀어보면..
jdk1.8.0_152 폴더가 생성이 되고
jdk1.8.0_152/bin/java -version
실행하게 되면 다음 정보가 나옵니다.
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
이 압축 파일을 RPM 화 하여 yum 에 등록 해 보려고 합니다.
작업 순서 나열하기
1. server-jre-8u152-linux-x64.tar.gz 압축해제하기
2. 해제한 파일 /usr/local/jdk1.8.0_152에 설치하기
3. /usr/local/jdk1.8.0_152 설치 한 파일을 /usr/local/java 에 링크하기
spec 파일을 작성한다.
%define _unpackaged_files_terminate_build 0
#설치 여부를 검사 할 때 에러 발생를 발생하는데 이부분을 skip 처리한다.
%define __spec_install_pre /bin/true
#이 옵션을 제거 하고 rpmbuild 를 하게 되면, 각 prep에서 작업한 후 install 시에 buildroot 를 삭제해 버리는 crean 을 수행한다. 해서 %install 에서 buildroot 가 삭제가 되기 때문에 cp 에서 에러가 발생한다.
마지막으로 post 에서는 설치 후 링크를 실행하는 스크립트를 추가했다
postun 은 rpm 을 삭제할 때 java 파일 ( files 외에 ) 링크 파일도 해제 하도록 스크립트를 추가했다.
Makefile 을 만들어 다음과 같이 make 를 이용하여 build 하도록 만들었다
#
## Copyright (c) 2017 VideoCube Lab., Ltd.
# All rights reserved.
# #
# # $Id: Makefile 447 2017-11-07 01:11:00Z pluto90k $
# #
TARGET = videocube-java
all: clean $(TARGET).spec
rpmbuild -bb $(TARGET).spec
clean:
-rm -f *.rpm
이렇게 완성된 RPM 은 videocube-java-1.8.0.rpm
/data/rpm/os6, /data/rpm/os7 으로 복사한다
앞 서 crontab 에 지정한 다음 스케줄에 따라서
*/5 * * * * /usr/bin/createrepo --update /data/rpm/os6 > /dev/null 2>&1
*/5 * * * * /usr/bin/createrepo --update /data/rpm/os7 > /dev/null 2>&1
repomd.xml 파일이 갱신이 될 것이다.
반영된 RPM 을 기존 Repo 에 연결된 서버로 접속하여 설치하도록 해보자~~~
현재 사설 DNS를 사용하기 때문에 다른 yum 에 대한 레포지토리는 에러가 발생 했다.. 이거 참 귀찮네..
ㄴ 왜 이런지는 DNS를 좀 더 파야할 것 같다.. ( 분명 포워딩 했는데..
ㄴ 로그를 봤더니..
dnssec-enable no;
dnssec-validation no;
설정을 위와 같이 하란다.. ㅋㅋ
yum --disablerepo=* --enablerepo=videocube install videocube-java
설치가 되지 않거나 하는 경우에 repomd.xml 갱신으로 metadata를 삭제한 후에 install 해보자
yum clean metadata 한 후에 설치를 진행하자.
oot@linux-02:/root> yum --disablerepo=* --enablerepo=videocube repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
videocube | 2.9 kB 00:00
videocube/primary_db | 2.7 kB 00:00
repo id repo name status
videocube videocube repository 1
repolist: 1
1개가 등록되어 있는 것을 볼 수 있다
root@linux-01:/root> yum --disablerepo=* --enablerepo=videocube install videocube-java
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package videocube-java.x86_64 0:1.8.0-152 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
videocube-java x86_64 1.8.0-152 videocube 43 M
Transaction Summary
=================================================================================================================
Install 1 Package(s)
Total download size: 43 M
Installed size: 145 M
Is this ok [y/N]: y
Is this ok [y/N]: y
Downloading Packages:
videocube-java-1.8.0.rpm | 43 MB 00:01
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : videocube-java-1.8.0-152.x86_64 1/1
Verifying : videocube-java-1.8.0-152.x86_64 1/1
Installed:
videocube-java.x86_64 0:1.8.0-152
Complete!
/usr/local/java/bin/java
사용법: java [-options] class [args...]
(클래스 실행)
또는 java [-options] -jar jarfile [args...]
(jar 파일 실행)
여기서 options는 다음과 같습니다.
-d32 사용 가능한 경우 32비트 데이터 모델을 사용합니다.
-d64 사용 가능한 경우 64비트 데이터 모델을 사용합니다.
-server "server" VM을 선택합니다.
기본 VM은 server입니다..
-cp <디렉토리 및 zip/jar 파일의 클래스 검색 경로>
-classpath <디렉토리 및 zip/jar 파일의 클래스 검색 경로>
클래스 파일을 검색할 :(으)로 구분된 디렉토리,
JAR 아카이브 및 ZIP 아카이브 목록입니다.
-D<name>=<value>
시스템 속성을 설정합니다.
-verbose:[class|gc|jni]
상세 정보 출력을 사용으로 설정합니다.
-version 제품 버전을 인쇄한 후 종료합니다.
-version:<value>
경고: 이 기능은 사용되지 않으며
이후 릴리스에서 제거됩니다.
실행할 버전을 지정해야 합니다.
-showversion 제품 버전을 인쇄한 후 계속합니다.
-jre-restrict-search | -no-jre-restrict-search
경고: 이 기능은 사용되지 않으며
이후 릴리스에서 제거됩니다.
버전 검색에서 사용자 전용 JRE를 포함/제외합니다.
-? -help 이 도움말 메시지를 인쇄합니다.
-X 비표준 옵션에 대한 도움말을 인쇄합니다.
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
세분성이 지정된 검증을 사용으로 설정합니다.
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
세분성이 지정된 검증을 사용 안함으로 설정합니다.
-esa | -enablesystemassertions
시스템 검증을 사용으로 설정합니다.
-dsa | -disablesystemassertions
시스템 검증을 사용 안함으로 설정합니다.
-agentlib:<libname>[=<options>]
<libname> 고유 에이전트 라이브러리를 로드합니다(예: -agentlib:hprof).
-agentlib:jdwp=help 및 -agentlib:hprof=help도 참조하십시오.
-agentpath:<pathname>[=<options>]
전체 경로명을 사용하여 고유 에이전트 라이브러리를 로드합니다.
-javaagent:<jarpath>[=<options>]
Java 프로그래밍 언어 에이전트를 로드합니다. java.lang.instrument를 참조하십시오.
-splash:<imagepath>
이미지가 지정된 스플래시 화면을 표시합니다.
자세한 내용은 http://www.oracle.com/technetwork/java/javase/documentation/index.html을 참조하십시오.
미션완료~~~
'시스템' 카테고리의 다른 글
Jenkins (젠킨스) 를 설치해보자 (0) | 2017.11.10 |
---|---|
GitLab을 설치해 보자!! (0) | 2017.11.09 |
사설 yum 서버를 구축해보자 (0) | 2017.11.04 |
사설 DNS 구축해 보기 문제해결 (0) | 2017.11.03 |
사설 DNS 구축해 보기 (0) | 2017.11.02 |