制作nginx和php的rpm包

rpm包的制作真几把烦,制作php的rpm花了我3天时间,因为是根据线上环境来做的,依赖的第三方库太多,本来想把所有的第三方库做进php包,后来发现在rpmbuild -bb的时候非常耗时,而且乱七八糟的错满天飞,好不容易全部解决了第一次成功第二次又不行了,因此决定能用yum安装的就用yum安装,没有的才用源码。

1、安装rpm-build和rpmdevtools

  yum install rpmdevtools rpm-build

2、生成制作rpm包的必备目录,没有安装rpmdevtools则无法使用以下命令

  cd ~

  rpmdev-setuptree

  此时,你的家目录中有一个rpmbuild文件夹,里面有5个文件夹,分别是SPEC,SOURCE,RPMS,BUILD,SRPMS。spec文件夹存放书写生成rpm包的文件,rpms存放生成的rpm包,build存放生成rpm包过程中产生的文件,SRPMS存放srpm包,source存放源码文件和你要装入系统的文件

3、生成过程

  将nginx/php的源码包、配置文件,init.d中的启动文件放入source目录下,进入spec文件夹,写spec文件

  nginx.spec

%define nginx_user nginx
#after compile no dependies check
AutoReqProv:    no

Name:           tengine
Version:        2.1.2
Release:        1%{?dist}
Summary:        Tengine from taobao

Group:          System Environment/Daemons
License:        GPLv2
URL:            http://www.nginx.org/downloads/nginx-1.2.1.tar.gz
Source0:        %{name}-%{version}.tar.gz
Source1:        tengine.init
#Source2:       pcre-8.32.tar.gz
BuildRoot:      %{_topdir}/BUILDROOT/%{name}-%{version}-%{release}

BuildRequires:  gcc,make
#Requires:      pcre,pcre-devel,openssl,openssl-devel,zlib,zlib-devel
#Requires(post):        info
#Requires(preun):info
%description
nginx from taobao

%prep
%setup -q

%build export DESTDIR=%{buildroot}
./configure  --prefix=/usr/local/sina_mobile/tengine  --sbin-path=/usr/local/sina_mobile/tengine/sbin/nginx  --conf-path=/usr/local/sina_mobile/tengine/conf/nginx.conf  --error-log-path=/usr/local/sina_mobile/tengine/logs/error.log  --http-log-path=/usr/local/sina_mobile/tengine/logs/access.log  --pid-path=/usr/local/sina_mobile/tengine/logs/nginx.pid  --http-client-body-temp-path=/usr/local/sina_mobile/tengine/client_body_temp   --http-proxy-temp-path=/usr/local/sina_mobile/tengine/proxy_temp   --http-fastcgi-temp-path=/usr/local/sina_mobile/tengine/fcgi_temp   --http-uwsgi-temp-path=/usr/local/sina_mobile/tengine/uwsgi_temp   --http-scgi-temp-path=/usr/local/sina_mobile/tengine/scgi_temp   --user=%{nginx_user}  --group=%{nginx_user}  --with-http_ssl_module   --with-http_stub_status_module   --with-http_gzip_static_module   --with-http_realip_module  --with-pcre=/usr/local/src/pcre-8.32  --with-openssl=/usr/local/src/openssl-1.0.1t  --with-zlib=/usr/local/src/zlib-1.2.8
#  --with-pcre
make %{?_smp_mflags}

%install
rm -rf %{buildroot}%{_infodir}/dir
make install DESTDIR=%{buildroot}
install -p -D -m 0755 %{SOURCE1} %{buildroot}/etc/rc.d/init.d/nginx
#install -p -D -m 0755 %{SOURCE2} %{buildroot}/usr/local/src/pcre-8.32.tar.gz
#install -p -d -m 0755 %{buildroot}/usr/local/nginx/sbin
#install -p -d -m 0755 %{buildroot}/usr/local/nginx/conf
#install -p -d -m 0755 %{buildroot}/usr/local/nginx/log

%pre
if [ $1 == 1 ];then
        /usr/sbin/useradd -s /bin/false -r %{nginx_user} 2>/dev/null || :
fi

%post
if [ $1 == 1 ];then
        /sbin/chkconfig --add nginx
        /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi
%preun
if [ $1 == 0 ];then
        /sbin/service nginx stop > /dev/null 2>&1
        /sbin/chkconfig --del nginx
        /usr/sbin/userdel -r %{nginx_user} 2> /dev/null
        /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi

%postun
rm -rf /usr/local/sina_mobile/tengine/sbin
rm -rf /usr/local/sina_mobile/tengine/conf
rm -rf /usr/local/sina_mobile/tengine/*_temp
rm -rf /usr/local/sina_mobile/tengine/include
rm -rf /usr/local/sina_mobile/tengine/html
rm -rf /usr/local/sina_mobile/tengine/modules
#rm -rf /usr/local/src/pcre-8.32
rm -f /etc/rc.d/init.d/nginx

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
#/usr/local/src/pcre-8.32
/usr/local/sina_mobile/tengine/*
%attr(0755,root,root) /etc/rc.d/init.d/nginx

%changelog
*  Fri Jul 5 2016 laoguang <[email protected]> - 2.1.2-1.el6
- Initial version

rpmbuild -bb nginx.spec即可生成rpm包

php.spec

%define         php_path        /usr/local/sina_mobile/phpfpm538
%define         dep_path        /usr/local/sina_mobile
%define         debug_package   %{nil}
#AutoReq:       0          #阻止rpm自动解析需要的依赖,当你确定你使用的库都会在本文件中安装,则可以使用此选项
#AutoProv:      0          #阻止rpm自动解析提供的依赖

Name:           php
Version:        5.3.8
Release:        1%{?dist}
Summary:        PHP is a server-side scripting language for creating dynamic Web page
Group:          System Environment/Daemons
License:        GPLv2
URL:            http://www.php.net/downloads/php-5.3.8.tar.gz
Source0:        %{name}-%{version}.tar.gz
Source1:        libiconv-1.14.tar.gz
#Source2:        libxml2-2.7.8.tar.gz
Source3:        libpng-1.5.14.tar.gz
Source4:        freetype-2.4.9.tar.gz
Source5:        libmcrypt-2.5.8.tar.gz
Source6:        gd-2.0.35.tar.gz
#Source7:       mysql-5.5.29.tar.gz
Source8:        jpegsrc.v8d.tar.gz
Source9:        php-fpm
Source10:       php-fpm.conf
BuildRoot:      %{_topdir}/BUILDROOT/%{name}-%{version}-%{release}-buildroot
BuildRequires:  gcc,gcc-c++,make,cmake,ncurses-devel,bison,openssl-devel,libcurl-devel,gdbm-devel,openldap-devel,libtidy-devel,zlib-devel,libxml2-devel,libpng-devel
#Requires:      libtool,gd-devel,mhash
%description
PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

%prep
%setup -q -b 1 -b 3 -b 4 -b 5 -b 6  -b 8

%build
cd ../jpeg-8d
./configure --prefix=%{dep_path}/jpeg
make %{?_smp_mflags}

cd ../libpng-1.5.14
./configure --prefix=%{dep_path}/libpng
CFLAGS="-O3 -fPIC"
make %{?_smp_mflags}

cd ../freetype-2.4.9
./configure --prefix=%{dep_path}/freetype
CFLAGS="-O3 -fPIC"
make %{?_smp_mflags}

cd ../gd-2.0.35
./configure --prefix=%{dep_path}/gd --with-jpeg=%{dep_path}/jpeg --with-freetype=%{dep_path}/freetype --with-png=%{dep_path}/libpng
CFLAGS="-O3 -fPIC"
make %{?_smp_mflags}

cd ../libiconv-1.14
./configure --prefix=%{dep_path}/libiconv
CFLAGS="-O3 -fPIC"
make %{?_smp_mflags}

#cd ../libxml2-2.7.8
#./configure --prefix=%{dep_path}/libxml2
#CFLAGS="-O3 -fPIC"
#make %{?_smp_mflags}

#cd ../mysql-5.5.29
#cmake -DCMAKE_INSTALL_PREFIX=%{dep_path}/mysql
#make %{?_smp_mflags}

cd ../libmcrypt-2.5.8
./configure --prefix=%{dep_path}/libmcrypt
CFLAGS="-O3 -fPIC"
make %{?_smp_mflags}
cd libltdl
./configure --prefix=%{dep_path}/libltdl --enable-ltdl-install
make %{?_smp_mflags}

cd ../../php-5.3.8
./configure  --prefix=%{php_path}   --with-config-file-path=%{php_path}/etc  --with-iconv-dir=%{dep_path}/libiconv  --with-mysql=%{dep_path}/mysql  --with-mysqli=%{dep_path}/mysql/bin/mysql_config  --with-pdo-mysql=%{dep_path}/mysql  --with-mcrypt=%{dep_path}/libmcrypt  --with-png-dir=%{dep_path}/libpng  --with-freetype-dir=%{dep_path}/freetype  --with-libxml-dir=%{dep_path}/libxml2  --with-jpeg-dir=%{dep_path}/jpeg  --with-gd  --with-zlib  --with-openssl  --with-pear  --with-gettext  --enable-fpm  --enable-safe-mode  --enable-mbstring  --enable-zip  --enable-soap  --enable-sysvsem  --enable-shmop  --enable-sockets  --enable-ftp  --enable-gd-native-ttf  --enable-bcmath  --with-gdbm  --with-curl  --with-mhash  --with-curlwrappers  --with-ldap  --enable-pcntl  --enable-maintainer-ztswith-xmlrpc  --with-tidy
make %{?_smp_mflags}

%install
rm -rf %{buildroot}
rm -rf %{buildroot}/{.channels,.depdb,.depdblock,.filemap,.lock,.registry}
cd ../jpeg-8d
mkdir -p %{buildroot}/usr/local/bin/{bin,include,lib,man/man1}
make install DESTDIR=%{buildroot}
cd ../libpng-1.5.14
make install DESTDIR=%{buildroot}
cd ../freetype-2.4.9
make install DESTDIR=%{buildroot}
cd ../gd-2.0.35
make install DESTDIR=%{buildroot}
cd ../libiconv-1.14
make install DESTDIR=%{buildroot}
#cd ../libxml2-2.7.8
#make install DESTDIR=%{buildroot}
#cd ../mysql-5.5.29
#make install DESTDIR=%{buildroot}
cd ../libmcrypt-2.5.8
make install DESTDIR=%{buildroot}
cd libltdl
make install DESTDIR=%{buildroot}
cd ../../php-5.3.8
make install INSTALL_ROOT=%{buildroot}
mkdir -p %{buildroot}%{_initrddir}
install -p -D -m 0755   %{SOURCE9}       %{buildroot}%{_initddir}/php-fpm
install -p -D -m 0644   %{SOURCE10}      %{buildroot}%{php_path}/etc/php-fpm.conf
install -p -D -m 0644 php.ini-production %{buildroot}%{php_path}/etc/php.ini

#Grep reports BUILDROOT inside our object files; disable that test.
QA_SKIP_BUILD_ROOT=1          #忽略buildroot检查,这在生成rpm包时报错found ${buildroot} in installed files;abort时,可以加此参数避过检查
QA_RPATHS=$[ 0x0001|0x0010 ]     #禁止rpath检查,这在生成rpm包时出现图一情况可以加此参数 
export QA_SKIP_BUILD_ROOT       
export QA_RPATHS

%clean
rm -rf %{buildroot}

%post
if [ $1 == 1 ];then
/bin/ln -s /usr/lib64/libldap* /usr/lib > /dev/null 2>&1
cat >/etc/profile.d/php.sh<<EOF
PATH=$PATH:%{dep_path}/gd/bin:%{dep_path}/libmcrypt/bin:%{dep_path}/libiconv/bin:%{dep_path}/libpng/bin:%{dep_path}/libxml2/bin:%{dep_path}/mysql/bin:%{dep_path}/freetype/bin
EOF
source /etc/profile.d/php.sh
cat >/etc/ld.so.conf.d/php.conf<<EOF
%{dep_path}/libiconv/lib
%{dep_path}/libmcrypt/lib
%{dep_path}/libltdl/lib
%{dep_path}/gd/lib
%{dep_path}/libpng/lib
%{dep_path}/mysql/lib
#%{dep_path}/libxml2/lib
%{dep_path}/freetype/lib
EOF
/sbin/ldconfig > /dev/null 2>&1
    [ -z "`grep ^‘export PATH=‘ /etc/profile`" ] && echo "export PATH=%{php_path}/bin:\$PATH" >> /etc/profile
    [ -n "`grep ^‘export PATH=‘ /etc/profile`" -a -z "`grep ‘%{php_path}‘ /etc/profile`" ] && sed -i "[email protected]^export PATH=\(.*\)@export PATH=%{php_path}/bin:\[email protected]" /etc/profile
    /sbin/chkconfig --add php-fpm
    /sbin/chkconfig php-fpm on
    Mem=`free -m | awk ‘/Mem:/{print $2}‘`  #下面主要是参数的优化
    if [ $Mem -le 640 ];then
        Mem_level=512M
        Memory_limit=64
    elif [ $Mem -gt 640 -a $Mem -le 1280 ];then
        Mem_level=1G
        Memory_limit=128
    elif [ $Mem -gt 1280 -a $Mem -le 2500 ];then
        Mem_level=2G
        Memory_limit=192
    elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
        Mem_level=3G
        Memory_limit=256
    elif [ $Mem -gt 3500 -a $Mem -le 4500 ];then
        Mem_level=4G
        Memory_limit=320
    elif [ $Mem -gt 4500 -a $Mem -le 8000 ];then
        Mem_level=6G
        Memory_limit=384
    elif [ $Mem -gt 8000 ];then
        Mem_level=8G
        Memory_limit=448
    fi
    sed -i "[email protected]^memory_limit.*@memory_limit = ${Memory_limit}[email protected]" %{php_path}/etc/php.ini
    sed -i ‘[email protected]^output_buffering [email protected]_buffering = On\noutput_buffering [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^;cgi.fix_pathinfo.*@[email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^short_open_tag = [email protected]_open_tag = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^expose_php = [email protected]_php = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^request_order.*@request_order = "CGP"@‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^;date.timezone.*@date.timezone = Asia/[email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^post_max_size.*@post_max_size = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^upload_max_filesize.*@upload_max_filesize = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^;upload_tmp_dir.*@upload_tmp_dir = /[email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^max_execution_time.*@max_execution_time = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,[email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^session.cookie_httponly.*@session.cookie_httponly = [email protected]‘ %{php_path}/etc/php.ini
    sed -i ‘[email protected]^mysqlnd.collect_memory_statistics.*@mysqlnd.collect_memory_statistics = [email protected]‘ %{php_path}/etc/php.ini
    cat > %{php_path}/etc/php-fpm.conf < /dev/null 2>&1
    if [ -e ‘/etc/profile.d/custom_profile_new.sh‘ ];then
        sed -i ‘[email protected]%{php_path}/bin:@@‘ /etc/profile.d/custom_profile_new.sh
    else
        sed -i ‘[email protected]%{php_path}/bin:@@‘ /etc/profile
    fi
fi
%preun
if [ "$1" = 0 ] ; then
    /sbin/service php-fpm stop > /dev/null 2>&1
    /sbin/chkconfig --del php-fpm
fi

%postun
if [ "$1" = 0 ] ; then
        /bin/rm -rf %{php_path}
        /bin/rm -rf %{dep_path}/libmcrypt
        /bin/rm -rf %{dep_path}/libiconv
        /bin/rm -rf %{dep_path}/libltdl
        /bin/rm -rf %{dep_path}/libpng
#       /bin/rm -rf %{dep_path}/libxml2
#       /bin/rm -rf %{dep_path}/mysql
        /bin/rm -rf %{dep_path}/freetype
        /bin/rm -rf %{dep_path}/gd
        /bin/rm -rf /etc/profile.d/php.sh
        /bin/rm -rf /etc/ld.so.conf.d/php.conf
fi
%files
%defattr(-,root,root,-)
%{dep_path}/libmcrypt
%{dep_path}/libltdl
%{dep_path}/libiconv
%{dep_path}/libpng
#%{dep_path}/libxml2
%{dep_path}/jpeg
#%{dep_path}/mysql
%{dep_path}/freetype
%{dep_path}/gd
%{php_path}
%config(noreplace) %{php_path}/etc/php-fpm.conf
%config(noreplace) %{php_path}/etc/php.ini
%attr(0755,root,root) /etc/rc.d/init.d/php-fpm
%exclude /.channels
%exclude /.depdb
%exclude /.depdblock
%exclude /.filemap
%exclude /.lock

%changelog
*  Tue Jul 19 2016 wejing <[email protected]> - 5.3.8-1.el6
- Initial version

php-fpm里面关于php的路径需要修改为实际安装的路径,此文件在源码包的support-files中有

php-fpm.conf将pid,log等几个参数的注释去掉,然后就能启动了

使用此php包的前提是已经安装了mysql,并且系统能找到libmysqlclient.so.18

mysql.spec

%define mysql_user mysql
%define mysql_group mysql
%define debug_package   %{nil}
AutoReq:       0

Name:           mysql
Version:        5.5.29
Release:        1%{?dist}
Summary:        database

Group:          System Environment/Daemons
License:        GPLv2
URL:            http://www.mysql.com/downloads/%{name}-%{version}.tar.gz
Source0:        %{name}-%{version}.tar.gz
Source1:        mysql3306.cnf
Source2:        mysql
BuildRoot:      %{_topdir}/%{name}-%{version}-%{release}-XXXXXX)

#BuildRequires: gcc-c++,ncurses,ncurses-devel,bison,cmake,zlib

%description

%prep
%setup -q

%build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sina_mobile/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_PIC=0 -DWITH_READLINE=1  -DWITH_DEBUG=0  -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -Wno-dev
make %{?_smp_mflags}

%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
install -p -D -m 0755 %{SOURCE1} %{buildroot}/data/mysql3306/mysql3306.cnf
install -p -D -m 0755 %{SOURCE2} %{buildroot}/etc/init.d/mysql

%pre
if [ $1 == 1 ];then
        /usr/sbin/groupadd mysql
        /usr/sbin/useradd -r %{mysql_user} -M -g %{mysql_group} -s /bin/false 2>/dev/null || :
fi

%post
if [ $1 == 1 ];then
        /bin/chown -R mysql:mysql /usr/local/sina_mobile/mysql
        /usr/local/sina_mobile/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/sina_mobile/mysql --datadir=/data/mysql3306
        /bin/chown -R root /usr/local/sina_mobile/mysql
        /bin/chown -R mysql /data/mysql3306
        #/bin/cp /usr/local/sina_mobile/mysql/support-files/mysql.server /etc/init.d/mysql
        #/bin/sed -i "[email protected]^[email protected]=/usr/local/sina_mobile/[email protected];[email protected]^[email protected]=/data/[email protected];[email protected]=/etc/[email protected]=/data/mysql3306/[email protected]" /etc/init.d/mysql
        #/bin/chmod 755 /etc/init.d/mysql
        /sbin/chkconfig --add mysql
        #/bin/echo "PATH=$PATH:/usr/local/sina_mobile/mysql/bin" >/etc/profile.d/mysql.sh
        #source /etc/profile.d/mysql.sh
        #/bin/echo "/usr/local/sina_mobile/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
        #/sbin/ldconfig > /dev/null 2>&1
        /bin/ln -s /data/mysql3306/mysql3306.sock /tmp/mysql.sock 2>/dev/null
        /bin/ln -s /usr/local/sina_mobile/mysql/bin/* /usr/local/bin/
        /bin/ln -s /usr/local/sina_mobile/mysql/scripts/* /usr/local/bin/
        /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi

%preun
if [ $1 == 0 ];then
        /sbin/service mysql stop > /dev/null 2>&1
        /sbin/chkconfig --del mysql
        #/usr/sbin/userdel -r %{mysql_user} 2> /dev/null
        #/usr/sbin/groupdel %{mysql_user} 2> /dev/null
        /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi

%postun
#rm -rf /etc/profile.d/mysql.sh
#rm -rf /etc/ld.so.conf.d/mysql.conf
rm -rf /tmp/mysql.sock
rm -rf /usr/local/bin/mysql*
rm -rf /usr/local/bin/myisam*
rm -rf /usr/local/bin/resolve*
rm -rf /usr/local/bin/{innochecksum,msql2mysql,my_print_defaults,perror,replace}
rm -rf /usr/local/sina_mobile/mysql/*
rm -rf /etc/init.d/mysql

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
/usr/local/sina_mobile/mysql/*
/data/mysql3306/mysql3306.cnf
%attr(0755,root,root) /etc/init.d/mysql
%doc

%changelog
*  Thu Jul 21 2016 weijing <[email protected]> - 5.5.29-1.el6
- Initial version

全部搞定,搞了爸爸一周,不过感觉对于包管理和rpm打包的流程清晰了很多,可能以后安装别的包发生了dependence错误会更清楚的知道哪里出了问题

附上友情链接:

http://blog.digitalstruct.com/2011/12/21/rpm-packaging-building-and-deploying-your-own-php/    这是制作php的

http://www.centoscn.com/image-text/config/2014/1201/4215.html                    这是制作nginx

http://www.bkjia.com/Linuxjc/1088197.html                              这是制作rpm包出错的解决方法

http://ju.outofmemory.cn/entry/95476                                 这是rpm包每个字段的解释

http://fedoraproject.org/wiki/How_to_create_an_RPM_package                      这是fedora的官方文档,英语牛逼的可以直接看这个

时间: 2024-10-12 02:33:52

制作nginx和php的rpm包的相关文章

制作源码软件的RPM包

使用nginx-1.12.2版本的源码软件,生产对应的RPM包软件 具体步骤: 1.安装rpm-build软件 # yum -y install rpm-build 2.生成rpmbuild目录结构 # rpmbuild -ba nginx.spec # ls /root/rpmbuild BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS [会报错,没有文件或目录,目的:自动生成的目录结构] 3.将源码软件复制到SOURCES目录 # cp nginx-

通过定制nginx的rpm包学习如何制作rpm安装包

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用rpm安装软件和管理软件非常的方便. 1.安装rpm-build [[email protected] ~]# yum -y install rpm-build redhat-rpm-config 2.建立目录结构 [[email protected] ~]# mkdir -p ~/rpmbuild/

RPM包制作方法

一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package Manager的缩写.在Fedora.Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用: RPM包中除了包括程序运行时所需要的文件,也有其它的文件:一个RPM包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定

定制RPM包及yum仓库搭建(以安装nginx为例)

一.前提条件 #下面通过虚拟机准备了一台服务端,一台客户端,基于外网IP测试,以安装nginx为例. #两台机器公共配置 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# uname -m x86_64 [[email protected] ~]# uname -r 2.6.32-573.el6.x86_64 #服务端配置 [[email protect

RPM包rpmbuild SPEC文件深度说明 【装载】

转载地址[请查看作者原文] http://hlee.iteye.com/blog/343499 http://laoguang.blog.51cto.com/6013350/1103628 上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包.最后部分还看到.src.rpm的内容,实际上 就是由.tar.gz源码.补丁软件和.spec脚本组成的.由此知道,使用.spec生成rpm包是比较简单的,因为.src.rpm通常都是由软件开 发者或者第三方的专业制作人根据源码

RPM包定制

概述 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案.解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 mysql 打包后直接就可以使用 2.SaltStack,puppet 3.定制 rpm yum 仓库 yum 安装 4.openstack 虚拟机镜像和 docker 容器分发 回顾下安装软件的三种方式:  1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件

linux软件包的安装之----编译源码格式的rpm包(后缀名为.src.rpm的软件包)

编译源码格式的rpm包-----à并制作为二进制格式的rpm包 实例 #useradd  mockbuild (需要使用mockbuild用户来编译) #rpm –ivh nginx--src.rpm(会在当前目录下生成rpmbuild目录) #cd rpmbuild;ls(以下是子目录介绍) SOURCES:存放的是程序源代码.补丁.脚本等. SPECS:nginx.spec文件    指示如何解压,打补丁,如何./configure,make,makeinstall,如何封装为nginx-.

制作nginx的spec分享

再跟大家分享一个我在奇虎这边做的一个nginx的rpm包的spec文件.后面我再分享一下php和mysql等大家用的比较普遍的软件的spec.大家在做rpm包的时候可以参考我的这个文档,后面还包含了一些针对内核的优化的一些参数特别是tcp的快速释放和重利用等,遇到问题我们可以一起讨论.可以加这个qq群325525293.下面我针对里面比较重要的内容做了解释. %define _topdir  /qihoo/Centos/ %define _specdir %{_topdir}/SPEC %def

软件包管理之源码格式的rpm包

CentOS release 6.5 nginx-1.0.15-5.el6.src.rpm [[email protected] ~]# useradd -r mockbuild    #新建mockbuild用户 [[email protected] ~]# rpm -ivh nginx-1.0.15-5.el6.src.rpm     #和安装二进制rpm包一样 warning: nginx-1.0.15-5.el6.src.rpm: Header V3 RSA/SHA256 Signatu