一步步製作RPM包
- useradd ibuler
- su - ibuler
- rpmbuild --showrc | grep topdir
- -14: _builddir %{_topdir}/BUILD
- -14: _buildrootdir %{_topdir}/BUILDROOT
- -14: _rpmdir %{_topdir}/RPMS
- -14: _sourcedir %{_topdir}/SOURCES
- -14: _specdir %{_topdir}/SPECS
- -14: _srcrpmdir %{_topdir}/SRPMS
- -14: _topdir %{getenv:HOME}/rpmbuild
- vi ~/.rpmmacros
- %_topdir /home/ibuler/rpmbuild ##目錄可以自定義
- mkdir ~/rpmbuild
- cd ~/rpmbuild
- mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
- cp /tmp/tengine-1.4.2.tar.gz SOURCES ##事先放好的
- cd SPECS
- vi tengine.spec ##內容見後講解,rhel6.3會自動生成模板
- rpmbuild
- -ba 既生成src.rpm又生成二進位制rpm
- -bs 只生成src的rpm
- -bb 只生二進位制的rpm
- -bp 執行到pre
- -bc 執行到 build段
- -bi 執行install段
- -bl 檢測有檔案沒包含
- cd /tmp
- cp /home/ibuler/rpmbuild/RPMS/x86_64/tengine-1.4.2-1.el6.x86_64.rpm /tmp
- rpm -ivh tengine-1.4.2-1.el6.x86_64.rpm ##測試安裝
- rpm -e tengine ##測試解除安裝,如果版本號比原來的高,升級測試
- vi tengine.spec
- ### 0.define section #自定義巨集段,這個不是必須的
- ### %define nginx_user nginx #這是我們自定義了一個巨集,名字為nginx_user值為nginx,%{nginx_user}引用
- ### 1.The introduction section #介紹區域段
- Name: tengine #名字為tar包的名字
- Version: 1.4.2 #版本號,一定要與tar包的一致哦
- Release: 1%{?dist} #釋出號,也就是第幾次製作rpm
- Summary: tengine from TaoBao #軟體包簡介,最好不要超過50字元
- Group: System Environment/Daemons #組名,可以通過less /usr/share/doc/rpm-4.8.0/GROUPS 選擇合適組
- License: GPLv2 #許可,GPL還是BSD等
- URL: http://laoguang.blog.51cto.com #可以寫一個網址
- Packager: Laoguang <ibuler@qq.com>
- Vendor: TaoBao.com
- Source0: %{name}-%{version}.tar.gz
- #定義用到的source,也就是你收集的,可以用巨集來表示,也可以直接寫名字,上面定義的內容都可以像上面那樣引用
- #patch0: a.patch #如果需要補丁,依次寫
- BuildRoot: %_topdir/BUILDROOT
- #這個是軟體make install 的測試安裝目錄,也就是測試中的根,我們不用預設的,我們自定義,
- #我們可以來觀察生成了哪此檔案,方便寫file區域
- BuildRequires: gcc,make #製作過程中用到的軟體包
- Requires: pcre,pcre-devel,openssl,chkconfig #軟體執行需要的軟體包,也可以指定最低版本如 bash >= 1.1.1
- %description #軟體包描述,盡情的寫吧
- It is a Nginx from Taobao. #描述內容
- ### 2.The Prep section 準備階段,主要目的解壓source並cd進去
- %prep #這個巨集開始
- %setup -q #這個巨集的作用靜默模式解壓並cd
- #%patch0 -p1 #如果需要在這打補丁,依次寫
- ### 3.The Build Section 編譯製作階段,主要目的就是編譯
- %build
- ./configure \ #./configure 也可以用%configure來替換
- --prefix=/usr \ #下面的我想大家都很熟悉
- --sbin-path=/usr/sbin/nginx \
- --conf-path=/etc/nginx/nginx.conf \
- --error-log-path=/var/log/nginx/error.log \
- --http-log-path=/var/log/nginx/access.log \
- --pid-path=/var/run/nginx/nginx.pid \
- --lock-path=/var/lock/nginx.lock \
- --user=nginx \
- --group=nginx \
- --with-http_ssl_module \
- --with-http_flv_module \
- --with-http_stub_status_module \
- --with-http_gzip_static_module \
- --http-client-body-temp-path=/var/tmp/nginx/client/ \
- --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
- --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
- --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
- --http-scgi-temp-path=/var/tmp/nginx/scgi \
- --with-pcre
- make %{?_smp_mflags} #make後面的意思是:如果就多處理器的話make時並行編譯
- ### 4.Install section 安裝階段
- %install
- rm -rf %{buildroot} #先刪除原來的安裝的,如果你不是第一次安裝的話
- make install DESTDIR=%{buildroot}
- #DESTDIR指定安裝的目錄,而不是真實的安裝目錄,%{buildroot}你應該知道是指的什麼了
- ### 4.1 scripts section #沒必要可以不寫
- %pre #rpm安裝前制行的指令碼
- if [ $1 == 1 ];then #$1==1 代表的是第一次安裝,2代表是升級,0代表是解除安裝
- /usr/sbin/useradd -r nginx 2> /dev/null ##其實這個指令碼寫的不完整
- fi
- %post #安裝後執行的指令碼
- %preun #解除安裝前執行的指令碼
- if [ $1 == 0 ];then
- /usr/sbin/userdel -r nginx 2> /dev/null
- fi
- %postun #解除安裝後執行的指令碼
- ### 5.clean section 清理段,刪除buildroot
- %clean
- rm -rf %{buildroot}
- ### 6.file section 要包含的檔案
- %files
- %defattr (-,root,root,0755) #設定預設許可權,如果下面沒有指定許可權,則繼承預設
- /etc/ #下面的內容要根據你在%{rootbuild}下生成的來寫
- /usr/
- /var/
- ### 7.chagelog section 改變日誌段
- %changelog
- * Fri Dec 29 2012 laoguang <ibuler@qq.com> - 1.0.14-1
- - Initial version
- [[email protected] rpmbuild]$ ls SOURCES/
- fastcgi_params index.html init.nginx nginx.conf tengine-1.4.2.tar.gz
- Source0: %{name}-%{version}.tar.gz
- Source1: index.html
- Source2: init.nginx
- Source3: fastcgi_params
- Source4: nginx.conf
- make install DESTDIR=%{buildroot}
- %{__install} -p -D %{SOURCE1} %{buildroot}/usr/html/index.html #%{__install}這個巨集代表install命令
- %{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}/etc/rc.d/init.d/nginx
- %{__install} -p -D %{SOURCE3} %{buildroot}/etc/nginx/fastcgi_params
- %{__install} -p -D %{SOURCE4} %{buildroot}/etc/nginx/nginx.conf
- %post
- if [ $1 == 1 ];then
- /sbin/chkconfig --add nginx
- fi
- %files
- %defattr (-,root,root,0755)
- /etc/
- /usr/
- /var/
- %config(noreplace) /etc/nginx/nginx.conf #%config表明這是個配置檔案noplace表明不能替換
- %config(noreplace) /etc/nginx/fastcgi_params
- %doc /usr/html/index.html #%doc表明這個是文件
- %attr(0755,root,root) /etc/rc.d/init.d/nginx #%attr後面的是許可權,屬主,屬組
- rpmbuild -ba tengine.spec
- gpg --gen-key
- Your selection?1<Enter> ##預設即可
- What keysize do you want? (2048) 1024<Enter> ##金鑰長度
- Key is valid for? (0) 1y<Enter> ##有效期
- Is this correct? (y/N) y<Enter> ##確認
- Real name: LaoGuang<Enter> ##金鑰名稱
- Email address: [email protected]<Enter> ##郵件
- Comment: GPG-RPM-KEY<Enter> ##備註
- Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O<ENTER>
- Enter passphrase OK <Enter> ##使用空密碼,也可以輸入
- <Take this one anyway><Enter>
- <Take this one anyway><Enter>
- [[email protected] dev]# gpg --list-keys
- /root/.gnupg/pubring.gpg
- ------------------------
- pub 1024R/49C99488 2012-11-28 [expires: 2013-11-28]
- uid LaoGuang (GPG-RPM-KEY) <ibuler@qq.com>
- sub 1024R/69BA199D 2012-11-28 [expires: 2013-11-28]
- gpg --export -a "LaoGuang" > RPM-GPG-KEY-LaoGuang
- vi ~/.rpmmacros
-
相關推薦
一步步製作RPM包
一.RPM製作步驟 我們在企業中有的軟體基本都是編譯的,我們每次安裝都得編譯,那怎麼辦呢?那就根據我們的需求製作RPM安裝包吧。先來說說基本布驟: 1.Planning what you want 計劃做什麼rpm包。軟體的?庫的? 2.G
製作rpm包時不生成debuginfo包
在打包nginx時,在一個環境下打包,能打出兩個包來,但是換了一個環境,私活只有一個,網上查了教程,在spec檔案裡增加%debug_package,安裝elfutils 也不管用,最後發現,用的非root使用者,最後切換root使用者,解決兩個openresty的包出來了 $ ls
製作rpm包
如何在linux或CentOS下製作RPM包 但我覺得單純明白用.spec生成rpm是不夠的。常見有兩個原因值得我們去了解用如何用原始碼製作rpm: 引用 1、並不是所有的軟體都提供.rpm方式的。 這是最常見的原因。負責任的開發者應提供rpm方式的二進位制軟體包,以便使用者選擇使用。但也很常見就是軟
Centos下用tar原始碼包製作rpm包
公司有需求要求加密redis,本來是有個配置檔案選項requirepass 可以設定密碼,但是公司覺得可以通過修改配置檔案使密碼失效,感覺不安全,於是乎直接修改原始碼(強制設定requirepass為固定密碼),做成rpm包就非常安全了 1.下載redis原始碼包 2.修
小白的Python3.6學習筆記--tkinter一步步製作GUI讀取並實時顯示採集卡資料(二)
上次我最終做出了一個簡易的串列埠助手,其效果如下: 但在反覆執行多次之後,發現了很多小毛病,接下來一一列舉並改正: 1.在電腦未接入裝置的時候,程式執行會報錯無法執行: 問題
一步步製作根檔案系統 (一)
開發環境:Ubuntu 12.04 開發板:mini2440 256M NandFlash 64M SDRAM 交叉編譯器:arm-
一步步製作 Arm-Linux交叉編譯環境
我們使用以下版本的檔案為例子建立 arm-linux 交叉編譯環境: 編譯環境 redhat 7.2 或 8.0 binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.g
使用ruby的fpm模塊實現對二進制MySQL的RPM包制作,實現一鍵安裝
rpm fpm 隨著互聯網的發展,一些互聯網企業,甚至於傳統企業的服務器也是越來越多。將面臨的挑戰其中之一就是自動化運維管理。假設我們需要自動化部署很多的應用,而這些應用又很復雜,過程多,需要源碼安裝。就算你能夠用自動化來完成這些工作,但配置起來也是相當的麻煩。那麽現在就有一種技術可以將源碼安裝的
二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫
rpm工具 yum工具 二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫一、安裝軟件包的三種方法rpm工具、yum工具、源碼包RPM工具:是以一種數據庫記錄的方式將需要的套件安裝到Linux主機的一套管理程序。就是說,你的Linux系統中有一個關於RPM的
第二十一課 yum 更換國內源及下載rpm包、源碼包的安裝
20180419一、yum更換國內源 1、下截: wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 或者用curl -O 命令下載,然後刪除/etc/yum.repos.d/CentOS-Base.repo這個文件或更名。把CentOS7-Base
【Android】從無到有:手把手一步步使用android-gif-drawable包載入GIF動圖
轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80200129 【新增依賴】 首先需要新增android-gif-drawable依賴,請參考:【Android】實用教程:匯入android-gif-drawa
perconabackup(一)--用rpm包安裝perconaxtrabackup
目錄 0、前言 1、安裝依賴包 2、安裝libv.so()(64bit)、 perl-Digest-MD5、rsync 3、安裝percona 0、前言 rh6和rh7是都支援yum源進行安裝,但是rh5不支援,可以使用以下方式安裝。 1、安裝依賴包 yum in
rpm包如何製作-個人經驗
原文地址:http://blog.chinaunix.net/uid-21123336-id-1830527.html 一 RPM介紹 RPM 以前是Red Hat Package Manager 的縮寫,本意是Red Hat 軟體包管理,顧名思義是Red Hat 貢獻出來的軟體包管
一文學會製作R包
R語言小巧精悍,能在多個平臺上快速安裝,具有眾多的統計包,能快速畫出還算美觀的圖(推薦ggplot2),因此在程式語言的舞臺上佔有一席之地。 對於生物狗來說,主要用下面兩種方式來安裝R包: 1, install.packages() 2, source(“https://
利用RubyGems的fpm製作zabbix_agent的rpm包,並使用ansible批量部署
一、 搭建rpm包製作環境 安裝gcc [[email protected] ~]# yum install gcc 安裝make [[email protected] ~]# yum install&nbs
簡單 RPM 包製作
今天為了測試搭建自己的yum倉庫並安裝升級軟體包,因此需要一個rpm包來做測試,所以就想到了自己來做一個最簡單rpm,因為僅僅就是做一個測試所以沒有新增需要編譯的檔案,而是隻使用了一個shell檔案來輸出可愛的Hello World。1. 首先需要下載安裝rpm包製作工具$
自己製作rpm軟體包(1)
我們都知道,在目前的Linux環境下,要安裝新軟體,通常有兩種方式:一是使用原始碼安裝;二是使用rpm軟體包。使用原始碼安裝可以讓使用者瞭解編譯過程,及定製一些模組,和修改編譯引數,但其工作量通常都很大,而且要求使用者有足夠的計算機知識。而rpm軟體包方式則相對來說比較
NSIS製作安裝包(一)
NSIS簡介: NISIS是win32免費的安裝,解除安裝系統。他的特點是指令碼簡潔高效;系統開銷小。當然進行安裝、解除安裝、系統設定、解壓檔案都沒有問題,幾乎可以做所有的事情。更多的功能請閱讀《NSIS幫助文件》 工具: NIS Edit + NSIS 思路: 基本上製作
rpm包打包過程詳解(二)——製作原始碼安裝包
製作原始碼安裝包(.tar.gz) 1. 解決依賴的軟體: 系統環境:[紅帽企業Linux.6.4.64位伺服器版].rhel-server-6.4-x86_64 原始碼製作中使用到的軟體為GNU M4,GNU autoconf,GNU automake;GNU
ceph叢集 Centos7下RPM包製作說明
Centos RPM包製作說明 準備打包環境 1、centos系統下使用如下命令安裝rpmbuild #yum install rpmbuild 2、rpmbuild的工作目錄如下, ~/rpmbuild ~/rpmbuild/SOURCES ~/rp