Skip to main content

RPM build test shell

# 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





Comments

Popular posts from this blog

Amazon RDS Blue/Green Deployments

In order to avoid some errors I experienced when proceeding as described in the official documentation, I describe what I did in order. 1) Modify parameters of source_database * error: Blue Green Deployments requires cluster parameter group has binlog enabled. RDS Parameter groups: source-params-group binlog_format => MIXED mysql> show global variables like 'binlog_format'; 2) Insert a row after rebooting the source database, to avoid this error. * error: Correct the replication errors and then switch over. Read Replica Replication Error - IOError: 1236, reason: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' => To Fix: You need to change the data in the source database. INSERT INTO dummy_table ( `favorite_id` , `favorite_order` , `user_id` , `board_id` ) VALUES ('100001', '1', '11111', '11111'); 3) Modify the param...

Fluentd for mysql in AWS

(0) preparation ulimit -n If your console shows 1024, it is insufficient. Please add following lines to your /etc/security/limits.conf file and reboot your machine. root soft nofile 65536 root hard nofile 65536 (1) install Fluentd // “Ubuntu 12.04 LTS / Precise” curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh /etc/init.d/td-agent start/stop/restart/status // test curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test /etc/init.d/td-agent stop chown: changing ownership of `/var/run/td-agent/td-agent.pid': Operation not permitted chown: changing ownership of `/var/run/td-agent': Operation not permitted  * Stopping td-agent td-agent                                                                                   ...

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 75...