티스토리 뷰

First install one-1.4.0-1.src.rpm and figure out how SPEC file is organized.
># wget http://dev.opennebula.org/attachments/download/110/one-1.4.0-1.src.rpm
># rpm -ivh one-1.4.0-1.src.rpm
># cat buildrpm/SPECS/one-1.4.0.spec

NOTE: * indicates my personal comments. 

 Summary: OpenNebula
Name: one
Version: 1.4.0
Release: 1
License: Apache
Group: System
URL: http://opennebula.org

* Source 변수는 어디에서 소스를 가져와야 하는지 정의한다.
Source: http://dev.opennebula.org/attachments/download/103/one-1.4.0.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Patch: one-1.4.0.patch
* Patch 변수는 실제 patch 파일 명을 나타낸다.

BuildRequires: xmlrpc-c-devel, scons * 실제 이 패키지를 필드할 때 필요한 다른 피키지들의 리스트
Packager: OpenNebula

%description
OpenNebula is a Virtual Infrastructure Manager that orchestrates storage,
network and virtualization technologies to enable the dynamic placement of
multi-tier services (groups of interconnected virtual machines) on distributed
infrastructures, combining both data center resources and remote cloud
resources, according to allocation policies. OpenNebula provides internal and
Cloud administration and user interfaces for the full management of the Cloud
platform.

OpenNebula is free software released under the Apache License.

%prep
%setup -q * 이 명령은 %prep macro로써 자동으로 소스로 부터 tarball을 받아서 unpack을 해준다.
#%patch -p1 -b .buildroot
%patch -p *이 명령어도 %prep macro로의 하나로써 패치에 정의된 파일을 가지고 소스에 패치를 한다.

%build
#%{__make}
wget http://www.sqlite.org/sqlite-amalgamation-3.6.16.tar.gz
tar xzf sqlite-amalgamation-3.6.16.tar.gz
cd sqlite-3.6.16
./configure --prefix=$PWD/../sqlite
make -j2
make install
cd ..

scons -j2 sqlite=$PWD/sqlite
g++ -o src/scheduler/mm_sched src/scheduler/mm_sched.o -Lsrc/common -Lsrc/host -Lsrc/mad -Lsrc/nebula -Lsrc/pool -Lsrc/template -Lsrc/vm -Lsrc/vmm -Lsrc/lcm -Lsrc/tm -Lsrc/dm -Lsrc/im -Lsrc/rm -Lsrc/vnm -Lsrc/hm -Lsrc/um -Lsrc/scheduler -lxmlrpc_server_abyss++ -lxmlrpc_server_abyss -lxmlrpc_server++ -lcrypto -lnebula_scheduler -lnebula_core -lnebula_host -lnebula_vm -lnebula_vnm -lnebula_pool -lnebula_template -lnebula_common -lnebula_um -lxmlrpc_client++ -lxmlrpc++ sqlite/lib/libsqlite3.a
g++ -o src/nebula/oned src/nebula/oned.o -Lsrc/common -Lsrc/host -Lsrc/mad -Lsrc/nebula -Lsrc/pool -Lsrc/template -Lsrc/vm -Lsrc/vmm -Lsrc/lcm -Lsrc/tm -Lsrc/dm -Lsrc/im -Lsrc/rm -Lsrc/vnm -Lsrc/hm -Lsrc/um -lxmlrpc_client++ -lxmlrpc++ -lnebula_core -lnebula_vmm -lnebula_lcm -lnebula_im -lnebula_hm -lnebula_rm -lnebula_dm -lnebula_tm -lnebula_um -lnebula_mad -lnebula_template -lnebula_pool -lnebula_host -lnebula_vnm -lnebula_vm -lnebula_common -lcrypto -lxmlrpc_server_abyss++ -lxmlrpc_server_abyss -lxmlrpc_server++ sqlite/lib/libsqlite3.a

%install
#%{__rm} -rf %{buildroot}
#%makeinstall
#%find_lang %{name}
(alias ln='echo' ; ./install.sh -d %{buildroot}/srv/cloud/one)
* running install.sh script and installing under %{buildroot}/srv/cloud/one

%clean * srpm을 만들게 되면 buildroot를 지운다.
%{__rm} -rf %{buildroot}

%pre * 이부분은 install 후에 실행된다.
mkdir -p /srv/cloud/one
%{_sbindir}/groupadd -f cloud
if ! grep -q oneadmin /etc/passwd
then
        %{_sbindir}/useradd -d /srv/cloud/one -g cloud -s /bin/bash oneadmin 2> /dev/null
fi

#%files -f %{name}.lang
%files *여기서는 RPM에 포함되어야 하는 파일들의 리스트이다.
#%defattr(-, root, root, 0755)
%defattr(-, oneadmin, cloud, 0755) *%defattr macro는 default permission, owner, group에 대해서 저의한다.
#%doc AUTHORS ChangeLog INSTALL NEWS TODO README COPYING
#%{_bindir}/oned
#%{_datadir}/subtitleeditor/
#%{_datadir}/icons/hicolor/*
#%exclude %{_datadir}/icons/hicolor/icon-theme.cache
#%{_datadir}/applications/subtitleeditor.desktop
/srv/cloud/one * 여기에 있는 전체 폴더를 포함한다고 보면 될 것 같다.

To build srpm & rpm
># yum install ruby scons xmlrpc-c-devel sqlite-devel
># rpmbuild -ba one-1.4.0.spec
NOTE: build error가 나지만, 기본 아이디어는 이렇게 build를 하는 것이다.

References

1. Packaging software with RPM, Part 1, http://www.ibm.com/developerworks/library/l-rpm1
2. Scripts: RPM's Workhorse, http://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html
3. How to create an RPM package, http://fedoraproject.org/wiki/How_to_create_an_RPM_package
4. .


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함