# RPM build test shell
# 1) requirements
# 1-1) install rpm
# sudo apt-get install rpm -y
# sudo apt-get install rng-tools -y
# sudo apt-get install gnupg-agent -y
# sudo apt-get install gnupg2 -y
# sudo rngd -r /dev/urandom
# gpg-agent --use-standard-socket --daemon
# * sudo apt-get install alien -y
# 1-2) make a passphrase for gpg
cd
cat <<EOF | gpg2 --batch --no-tty --gen-key
%echo Generating a standard key
Key-Type: default
Key-Length: 2048
Subkey-Type: default
Subkey-Length: 2048
Name-Real: dewey
Name-Email: doohee323@gmail.com
Expire-Date: 10y
Passphrase: P@ssw0rd
%commit
%echo done
EOF
# gpg --list-keys
# 1-3) make .rpmmacros file
# F1035488: comes from passphrase
rm -Rf ~/.rpmmacros
echo $'%_topdir /home/doohee/rpmdir \n'\
$'%_builddir %{_topdir}/BUILD \n'\
$'%_rpmdir %{_topdir}/RPMS \n'\
$'%_sourcedir %{_topdir}/SOURCES \n'\
$'%_specdir %{_topdir}/SPECS \n'\
$'%_srcrpmdir %{_topdir}/SRPMS \n'\
$'%_gpg_name "F1035488"'> .rpmmacros
mkdir -p ~/rpmdir/BUILD
mkdir -p ~/rpmdir/RPMS
mkdir -p ~/rpmdir/SOURCES
mkdir -p ~/rpmdir/SPECS
mkdir -p ~/rpmdir/SRPMS
# 2) make rpm
# 2-1) make source
cd ~/workspace/java/rpmbuild
mkdir -p hello-1.0.0
cat <<EOF > hello-1.0.0/hello
#!/bin/bash
echo world
EOF
sh hello-1.0.0/hello
tar czvf hello-1.0.0.tar.gz hello-1.0.0/
# 2-2) deploy a source and a spec file
cp ~/workspace/java/rpmbuild/hello-1.0.0.tar.gz ~/rpmdir/SOURCES/
cp ~/workspace/java/rpmbuild/hello.spec ~/rpmdir/SPECS/
# 2-3) build rpm
cd ~/rpmdir/SPECS/
rpmbuild --sign -ba hello.spec
# P@ssw0rd
ll ~/rpmdir/RPMS/x86_64
#* sudo alien -i ~/rpmdir/RPMS/x86_64/*.rpm
# 3) install and test
sudo rpm -ivh ~/rpmdir/RPMS/x86_64/hello-1.0.0-1.x86_64.rpm --nodeps
rpm -qa hello
rpm -qf /usr/local/bin/hello
# uninstall
# sudo rpm -e hello-1.0.0-1.x86_64 --nodeps
# Spec example file
Name: hello
Version: 1.0.0
Release: 1%{?dist}
Summary: A hello package
Group: Testing
License: GPL
URL: http://topzone.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
#BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash
%description
A hello 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/usr/local/bin
cp hello $RPM_BUILD_ROOT/usr/local/bin
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
#%doc
%attr(0755,root,root)/usr/local/bin/hello
%changelog
* Tue Dec 8 2015 dewey <doohee323@gmail.com> - 1.0.0
- Initial RPM
# 1) requirements
# 1-1) install rpm
# sudo apt-get install rpm -y
# sudo apt-get install rng-tools -y
# sudo apt-get install gnupg-agent -y
# sudo apt-get install gnupg2 -y
# sudo rngd -r /dev/urandom
# gpg-agent --use-standard-socket --daemon
# * sudo apt-get install alien -y
# 1-2) make a passphrase for gpg
cd
cat <<EOF | gpg2 --batch --no-tty --gen-key
%echo Generating a standard key
Key-Type: default
Key-Length: 2048
Subkey-Type: default
Subkey-Length: 2048
Name-Real: dewey
Name-Email: doohee323@gmail.com
Expire-Date: 10y
Passphrase: P@ssw0rd
%commit
%echo done
EOF
# gpg --list-keys
# 1-3) make .rpmmacros file
# F1035488: comes from passphrase
rm -Rf ~/.rpmmacros
echo $'%_topdir /home/doohee/rpmdir \n'\
$'%_builddir %{_topdir}/BUILD \n'\
$'%_rpmdir %{_topdir}/RPMS \n'\
$'%_sourcedir %{_topdir}/SOURCES \n'\
$'%_specdir %{_topdir}/SPECS \n'\
$'%_srcrpmdir %{_topdir}/SRPMS \n'\
$'%_gpg_name "F1035488"'> .rpmmacros
mkdir -p ~/rpmdir/BUILD
mkdir -p ~/rpmdir/RPMS
mkdir -p ~/rpmdir/SOURCES
mkdir -p ~/rpmdir/SPECS
mkdir -p ~/rpmdir/SRPMS
# 2) make rpm
# 2-1) make source
cd ~/workspace/java/rpmbuild
mkdir -p hello-1.0.0
cat <<EOF > hello-1.0.0/hello
#!/bin/bash
echo world
EOF
sh hello-1.0.0/hello
tar czvf hello-1.0.0.tar.gz hello-1.0.0/
# 2-2) deploy a source and a spec file
cp ~/workspace/java/rpmbuild/hello-1.0.0.tar.gz ~/rpmdir/SOURCES/
cp ~/workspace/java/rpmbuild/hello.spec ~/rpmdir/SPECS/
# 2-3) build rpm
cd ~/rpmdir/SPECS/
rpmbuild --sign -ba hello.spec
# P@ssw0rd
ll ~/rpmdir/RPMS/x86_64
#* sudo alien -i ~/rpmdir/RPMS/x86_64/*.rpm
# 3) install and test
sudo rpm -ivh ~/rpmdir/RPMS/x86_64/hello-1.0.0-1.x86_64.rpm --nodeps
rpm -qa hello
rpm -qf /usr/local/bin/hello
# uninstall
# sudo rpm -e hello-1.0.0-1.x86_64 --nodeps
# Spec example file
Name: hello
Version: 1.0.0
Release: 1%{?dist}
Summary: A hello package
Group: Testing
License: GPL
URL: http://topzone.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
#BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash
%description
A hello 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/usr/local/bin
cp hello $RPM_BUILD_ROOT/usr/local/bin
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
#%doc
%attr(0755,root,root)/usr/local/bin/hello
%changelog
* Tue Dec 8 2015 dewey <doohee323@gmail.com> - 1.0.0
- Initial RPM
Comments
Post a Comment