create rpm hello using rpmbuild.
docker build -t fedora -f ./fedora.dockerfile .
ocker run -it fedora /bin/bash
bash-4.3# hellow
bash: hellow: command not found
bash-4.3# hello
hello, world!
bash-4.3# exit| FROM fedora:21 | |
| RUN yum update -y && \ | |
| yum install -y rpm-build tar gcc sudo | |
| # create rpmbuilder | |
| RUN useradd rpmbuilder | |
| USER rpmbuilder | |
| # create working dir | |
| RUN mkdir -p /home/rpmbuilder/hello-1.0 | |
| RUN mkdir -p /home/rpmbuilder/rpmbuild/{SOURCES,SPECS} | |
| RUN chown rpmbuilder:rpmbuilder /home/rpmbuilder/rpmbuild/{SOURCES,SPECS} | |
| # add source file | |
| ADD ./hello.c /home/rpmbuilder/hello-1.0/hello.c | |
| ADD ./hello.spec /home/rpmbuilder/rpmbuild/SPECS/hello.spec | |
| # compile | |
| WORKDIR /home/rpmbuilder/hello-1.0 | |
| RUN gcc -o hello hello.c && rm -rf hello.c | |
| # packaging | |
| WORKDIR /home/rpmbuilder/ | |
| RUN tar czvf hello-1.0.tar.gz hello-1.0 && \ | |
| chmod 777 rpmbuild/SOURCES/ && \ | |
| cp hello-1.0.tar.gz rpmbuild/SOURCES | |
| # rpm create | |
| WORKDIR /home/rpmbuilder/rpmbuild | |
| RUN rpmbuild -bb -v SPECS/hello.spec | |
| # install hello | |
| USER root | |
| RUN rpm -ivh RPMS/noarch/hello-1.0-1.noarch.rpm | |
| CMD ["bin", "bash"] |
| #include <stdio.h> | |
| main(void) | |
| { | |
| printf("hello, world!\n"); | |
| } |
| %define name hello | |
| %define version 1.0 | |
| %define unmangled_version 1.0 | |
| %define release 1 | |
| %define _binaries_in_noarch_packages_terminate_build 0 | |
| %define _unpackaged_files_terminate_build 0 | |
| Summary: sample hello world program | |
| Name: %{name} | |
| Version: %{version} | |
| Release: %{release} | |
| License: GPL2 | |
| Source0: %{name}-%{unmangled_version}.tar.gz | |
| Group: Applications/File | |
| BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot | |
| Prefix: %{_prefix} | |
| BuildArch: noarch | |
| %define INSTALLDIR %{buildroot}/usr/local/bin | |
| %description | |
| This is a sample program to learn how to make a rpm package. | |
| %prep | |
| %setup -q | |
| %build | |
| %install | |
| rm -rf %{INSTALLDIR} | |
| mkdir -p %{INSTALLDIR} | |
| cp -R * %{INSTALLDIR} | |
| %clean | |
| rm -rf %{buildroot} | |
| %files | |
| %defattr(-, root, root) | |
| /usr/local/bin |