ruby.spec文件
%define rubyver 2.3.1
Name: ruby
Version: %{rubyver}
Release: 1%{?dist}
License: Ruby License/GPL - see COPYING
URL: http://www.ruby-lang.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}%{?dist}.%{_arch}
#Requires: readline ncurses gdbm glibc openssl libyaml libffi zlib
#BuildRequires: readline-devel ncurses-devel gdbm-devel glibc-devel gcc openssl-devel make libyaml-devel libffi-devel zlib-devel
Source0: %{name}-%{version}.zip
Summary: An interpreter of object-oriented scripting language
Group: Development/Languages
%description
Ruby is the interpreted scripting language for quick and easy
object-oriented programming. It has many features to process text
files and to do system management tasks (as in Perl). It is simple,
straight-forward, and extensible.
%prep
%setup -q
%build
export CFLAGS="$RPM_OPT_FLAGS -Wall -fno-strict-aliasing"
%configure \
--enable-shared \
--disable-rpath \
--without-X11 \
--without-tk \
--includedir=%{_includedir}/ruby \
--libdir=%{_libdir}
make %{?_smp_mflags}
%install
make install DESTDIR=$RPM_BUILD_ROOT
#we don't want to keep the src directory
rm -rf $RPM_BUILD_ROOT/usr/src
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%files
%defattr(-, root, root)
%{_bindir}/*
%{_includedir}/*
%{_datadir}/*
%{_libdir}/*
%changelog
* Tue Apr 26 2016 Takashi Masuda <masutaka@feedforce.jp> - 2.3.1
- Update ruby version to 2.3.1
build步骤
# build ruby RPM包时,所需依赖包
yum install readline-devel ncurses-devel gdbm-devel glibc-devel gcc openssl-devel libyaml-devel libffi-devel zlib-devel# 生成build打包目录环境
rpmdev-setuptree# 将上面的ruby.spec文件写到SPECS下
vi SPECS/ruby.spec# 将源文件拷贝到SOURCES下
cp /opt/ruby-2.3.1.zip SOURCES/# 开始打包RPM包
rpmbuild -ba SPECS/ruby.spec报错:
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: ruby-2.3.1-1.el7.x86_64
error: File not found by glob: /root/rpmbuild/BUILDROOT/ruby-2.3.1-1.el7.x86_64/usr/bin/*
error: File not found by glob: /root/rpmbuild/BUILDROOT/ruby-2.3.1-1.el7.x86_64/usr/share/*RPM build errors:
File not found by glob: /root/rpmbuild/BUILDROOT/ruby-2.3.1-1.el7.x86_64/usr/bin/*
File not found by glob: /root/rpmbuild/BUILDROOT/ruby-2.3.1-1.el7.x86_64/usr/share/*
解决:
将ruby.spec中./configure 指令换成%configure
#Requires: readline ncurses gdbm glibc openssl libyaml libffi zlib
打包好的RPM报安装的时候会做依赖检查,如果上述软件未安装,将安装失败,并提示依赖关系。可以注释掉。
#BuildRequires: readline-devel ncurses-devel gdbm-devel glibc-devel gcc openssl-devel
打包时所需依赖包,如果上诉软件没有安装,执行rpmbuild时会报错,提示安装上述软件。如果已经安装了,可以注释掉。
rpm包获取spec文件
# 下载源码包
yumdownloader --source 包名
# 解压源码包
rpm2cpio openssh-7.4p1-21.el7.src.rpm |cpio -idmv