kafka를 yum 리포지토리에 올려 설치해야 할지 몰라 kafka를 rpm으로 만드는 과정을 정리해 본다.
먼저, rpmbuild 도구가 필요하니 없다면 yum으로 설치한다.
$ sudo yum install rpmbuild
rpm을 생성할 때 사용할 기준 디렉토리를 생성한다. 여기서는 /vagrant/rpmbuild-kafka라고 가정한다. 다른 경로를 사용해도 무방하다.
/vagrant/rpmbuild-kafka 디렉토리에 kafka 파일인 kafka_2.11-0.9.0.0.tgz를 복사한다.
다음으로 rpmbuild가 스펙으로 사용할 kafka.spec 파일을 /vagrant/rpmbuild-kafka 폴더에 작성한다. 옵션에서 %define으로 _topdir을 설정하고 있다. 이 설정을 하지 않으면 ~/rpmbuild를 기준으로 동작하는데, 여기서는 rpmbuild를 사용할 디렉토리의 rpmbuild 디렉토리를 기준으로 잡기 위해 _topdir을 설정했다.
%define _topdir %(echo $PWD)/rpmbuild
Name: kafka_2.11
Version: 0.9.0.0
Release: 0
Summary: A kafka package
Group: Development
License: Apache
URL: http://kafka.apache.org/
Source0: kafka_2.11-0.9.0.0.tgz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildArch: noarch
BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash
%description
A kafka package
%prep
%setup -q
%build
#configure
#make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/home/hadoop/servers/kafka
cp -R * $RPM_BUILD_ROOT/home/hadoop/servers/kafka
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,hadoop,hadoop,-)
#%doc
%attr(0755,hadoop,hadoop)/home/hadoop/servers/kafka
%changelog
* Wed Jan 12 2016 Kafka - 0.9.0.0
- Initial RPM
매번 명령어를 입력하면 귀찮으니, 명령을 실행할 build.sh을 /vagrant/rpmbuild-kafka에 작성한다.
rm -rf rpmbuild
mkdir rpmbuild
pushd rpmbuild
mkdir BUILD RPMS SOURCES SPECS SRPMS
popd
cp kafka_2.11-0.9.0.0.tgz rpmbuild/SOURCES/
cp kafka.spec rpmbuild/SPECS/
rpmbuild -ba rpmbuild/SPECS/kafka.spec
이제 build.sh 파일을 실행한다. 그러면 rpmbuild/RPMS/noarch/kafka_2.11-0.9.0.0-0.noarch.rpm 파일이 생성된 것을 확인할 수 있다.