真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么進行定制rpm包

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么進行定制rpm包,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)滎陽,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

定制rpm包

搭建內(nèi)網(wǎng)yum(yum是一個用python寫好的腳本)倉庫,通過kickstart批量安裝系統(tǒng),這是互聯(lián)網(wǎng)企業(yè)運維自動化的必要技能,自動化運維的基石。

面試題

基礎(chǔ)運維部的小王交付給我100臺服務(wù)器,我想在這100臺服務(wù)器中安裝系統(tǒng),其中10臺NFS存儲,20臺MySQL服務(wù)器,40臺redis服務(wù)器,20臺Nginx+PHP服務(wù)器,10臺反向代理服務(wù)器。你有什么方案快速部署并優(yōu)化嗎?需要多少時間搞定?

解決方案

1.tar打包:先源碼編譯安裝、打包、批量分發(fā)、解包;

2.saltstack、puppet、ansible批量部署;

3.定制rpm包、搭建yum倉庫、yum安裝;

4.openstack虛擬機鏡像和docker容器分發(fā)。

安裝軟件的4種方式

1、編譯安裝

  • 優(yōu)點

    按需開啟功能

    可定制(定制安裝目錄和軟件功能)、一情況下不需要網(wǎng)絡(luò)、可選擇軟件版本

  • 缺點

    需要查找并實驗出適合的編譯參數(shù)

    軟件版本升級時,要注意某些參數(shù)已經(jīng)取消掉了

    MySQL、PHP等軟件編譯耗時過長

    慢、復(fù)雜、需要查找編譯參數(shù)、找依賴麻煩、純編譯依賴比較復(fù)雜

2、yum安裝

  • 優(yōu)點

    全自動化安裝

    簡單、便捷

    再也不用為依賴問題發(fā)愁了

  • 缺點

    自主性太差

    需要網(wǎng)絡(luò)、網(wǎng)絡(luò)不好時,下載速度慢

    沒有辦法定制、軟件的功能、存放位置都已經(jīng)固定好了,不易變更

3、二進制安裝

  • 優(yōu)點:簡單、快

  • 缺點:不能定制、包容量大

4、定制rpm包※

  • 流程:根據(jù)需求編譯軟件 ==> 制件rpm包 ==> 搭建內(nèi)網(wǎng)yum倉庫 ==> yum安裝

  • 優(yōu)點:結(jié)合編譯安裝與yum安裝兩者的優(yōu)點

  • 缺點:rpm包的通用性差,只能適用于公司的環(huán)境,第一步編譯安裝復(fù)雜、打包后不能再次更改、一般人不會定制rpm包

RPM簡介

英文全稱是Red Hat Package Manager,即Red Hat包管理器。

幾乎所有的Linux發(fā)行版本都使用這種形式的軟件包管理安裝、更新和卸載軟件。

rpm命令有五種基本功能(但不包括創(chuàng)建軟件包):安裝、卸載、升級、查詢、驗證

rpm -?#<==查看rpm命令的幫助

FPM打包工具

FPM的作者是jordansissel

FPM的GitHub:https://github.com/jordansissel/fpm 

FPM功能簡單理解:就是將一種類型的包轉(zhuǎn)換成另一種類型。

1、支持的源類型包

dir#<==將目錄打包成所需要的類型,可以用于源碼編譯安裝的軟件包
rpm#<==對rpm進行轉(zhuǎn)換
gem#<==對rubygem包進行轉(zhuǎn)換
python#<==將python模塊打包成相應(yīng)的類型

2、支持的目標(biāo)類型包

rpm#<==轉(zhuǎn)換為rpm包
deb#<==轉(zhuǎn)換為deb包
solaris#<==轉(zhuǎn)換為solaris包
puppet#<==轉(zhuǎn)換為puppet模塊

3、FPM安裝

fpm是ruby寫的,因此系統(tǒng)環(huán)境需要ruby,且ruby版本號大于1.8.5。

安裝ruby模塊

yum -y install ruby rubygems ruby-devel

添加(addition)阿里云的Rubygems倉庫,外國的源慢,移除(remove)原生的Ruby倉庫

gem source -a http://mirrors.aliyun.com/rubygems/
gem source -r https://rubygems.org/

安裝fpm

gem install json -v 1.7.7
gem install cabin -v 0.6
gem install backports -v 2.6.2
gem install arr-pm -v 0.0.9
gem install clamp -v 0.6
#gem install childprocess -v 0.5.9
gem install fpm -v 1.3.3
#<==指定安裝fpm 1.3.3版本的軟件,fpm這個工具升級挺頻繁,而且在每次升級后會出現(xiàn)各種各樣的問題。但是老版本的fpm工具能夠滿足我們的需要,因此就用這個版本了。

4、FPM參數(shù)

常用參數(shù)詳細使用見:fpm --help

-s#<==source,指定源類型
-t#<==target,指定目標(biāo)類型,即想要制作為什么包
-n#<==name,指定包的名字
-v#<==version,指定包的版本號
-C#<==change,指定打包的相對路徑
-d#<==depend,指定依賴于哪些包
-f#<==force,第二次打包時目錄下如果有同名安裝包存在,則覆蓋它
-p#<==輸出的安裝包的目錄,不想放在當(dāng)前目錄下就需要指定
--post-install#<==軟件包安裝完成之后所要運行的腳本;同--after-install
--pre-install#<==軟件包安裝完成之前所要運行的腳本;同--before-install
--post-uninstall#<==軟件包卸載完成之后所要運行的腳本;同--after-remove
--pre-uninstall#<==軟件包卸載完成之前所要運行的腳本;同--before-remove

實戰(zhàn)定制nginx的RPM包

系統(tǒng)環(huán)境

[root@m01 ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[root@m01 ~]# uname -r
2.6.32-573.el6.x86_64
[root@m01 ~]# /etc/init.d/iptables status
iptables:未運行防火墻。
[root@m01 ~]# getenforce 
Disabled

準(zhǔn)備操作

mkdir -p /application/tools/#<==統(tǒng)一軟件包存放目錄
cd /application/tools/
wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf#<==開啟yum緩存功能,緩存已下載的rpm包
grep keepcache /etc/yum.conf
find /var/cache/yum/ -type f -name '*rpm'|xargs rm -f#<==清空本機已有yum緩存

編譯安裝nginx

yum install pcre pcre-devel openssl openssl-devel -y
rpm -qa openssl openssl-devel pcre pcre-devel
find /var/cache/ -type f -name '*rpm'|xargs cp -t /tmp/ #<==復(fù)制所有的rpm到tmp目錄下
cd /tmp/ && tar zcf nginx_yum.tar.gz *.rpm #<==打包所有的rpm包
sz nginx_yum.tar.gz #<==下載到本地保存著
##--------------------------------------------------------------------------------
cd /application/tools/
useradd nginx -u 888 -M -s /sbin/nologin
tar xf nginx-1.6.3.tar.gz 
cd nginx-1.6.3
./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
echo $?
ln -s /application/nginx-1.6.3/ /application/nginx
ll -d /application/nginx-1.6.3/ /application/nginx

cp命令參數(shù)

-t, --target-directory=DIRECTORY    copy all SOURCE arguments into DIRECTORY

編寫腳本

mkdir /server/scripts -p
cd /server/scripts/

這是安裝完rpm包要執(zhí)行的腳本

cat >nginx_rpm.sh<

打包

fpm -s dir -t rpm -n nginx -v 1.6.3 -d 'pcre,pcre-devel,openssl,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.3/
ll -sh #<==查看打好的包大小
sz nginx_rpm.sh #<==備份腳本
sz nginx-1.6.3-1.x86_64.rpm #<==備份定制的nginx包

fpm命令參數(shù)詳解:

-s#<==source,指定源類型
-t#<==target,指定目標(biāo)類型,即想要制作為什么包
-n#<==name,指定包的名字
-v#<==version,指定包的版本號
-d#<==depend,指定依賴于哪些包,包有多個,用逗號隔開
-f#<==force,第二次打包時目錄下如果有同名安裝包存在,則覆蓋它
--post-install#<==軟件包安裝完成之后所要運行的腳本;同--after-install
--pre-install#<==軟件包安裝完成之前所要運行的腳本;同--before-install

rpm命令詳解

1、最常用組合

rpm -qa tree#<==查看是否已安裝tree包
rpm -ql tree#<==查看tree包分別有哪些文件
rpm -qf `which tree`#<==查看tree命令是由哪個軟件包提供的

2、安裝

rpm -ivh包名#<==安裝rpm包
rpm -ivh --aid 包名#<==解決rpm包循環(huán)依賴的問題
-i#<==install,安裝
-v#<==顯示詳細信息(Print verbose information)
-h#<==hash,顯示哈希值
--aid  Add suggested packages to the transaction set(事務(wù)集)when needed.

3、查看

rpm -qpi包名#<==查看rpm包詳細信息
rpm -qpl包名#<==查看rpm包里面的內(nèi)容
rpm -qpR包名#<==查看rpm包的依賴
rpm -qp --scripts 包名#<==查看rpm包帶的執(zhí)行腳本,執(zhí)行腳本不是以文件形式存在
-a#<==all,所有-q#<==query,查詢
-p#<==package,包-i#<==info,信息
-l#<==list,列表-R#<==requires,依賴
-f#<==查詢文件屬于哪個軟件包--scripts#<==顯示腳本

查看rpm包詳細信息

[root@m01 /server/scripts]# rpm -qpi nginx-1.6.3-1.x86_64.rpm
Name        : nginx                        Relocations: / 
Version     : 1.6.3                             Vendor: root@m01
Release     : 1                             Build Date: 2017年05月30日 星期二 13時40分25秒
Install Date: (not installed)               Build Host: m01
Group       : default                       Source RPM: nginx-1.6.3-1.src.rpm
Size        : 5252902                          License: unknown
Signature   : (none)
Packager    : 
URL         : http://example.com/no-uri-given
Summary     : no description given
Description :
no description given

查看rpm包里面的內(nèi)容

[root@m01 /server/scripts]# rpm -qpl nginx-1.6.3-1.x86_64.rpm 
/application/nginx-1.6.3/conf/fastcgi.conf
/application/nginx-1.6.3/conf/fastcgi.conf.default
/application/nginx-1.6.3/conf/fastcgi_params
/application/nginx-1.6.3/conf/fastcgi_params.default
/application/nginx-1.6.3/conf/koi-utf
/application/nginx-1.6.3/conf/koi-win
/application/nginx-1.6.3/conf/mime.types
/application/nginx-1.6.3/conf/mime.types.default
/application/nginx-1.6.3/conf/nginx.conf
/application/nginx-1.6.3/conf/nginx.conf.default
/application/nginx-1.6.3/conf/scgi_params
/application/nginx-1.6.3/conf/scgi_params.default
/application/nginx-1.6.3/conf/uwsgi_params
/application/nginx-1.6.3/conf/uwsgi_params.default
/application/nginx-1.6.3/conf/win-utf
/application/nginx-1.6.3/html/50x.html
/application/nginx-1.6.3/html/index.html
/application/nginx-1.6.3/logs
/application/nginx-1.6.3/sbin/nginx

查看rpm包的依賴

[root@m01 /server/scripts]# rpm -qpR nginx-1.6.3-1.x86_64.rpm 
pcre  
pcre-devel  
openssl  
openssl-devel  
/bin/sh  
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

查看rpm包帶的執(zhí)行腳本

[root@m01 /server/scripts]# rpm -qp --scripts nginx-1.6.3-1.x86_64.rpm 
postinstall scriptlet (using /bin/sh):
#!/bin/bash
useradd nginx -u 888 -M -s /sbin/nologin
ln -s /application/nginx-1.6.3/ /application/nginx

注意事項

相對路徑問題

fpm打包時,一定要用絕對路徑!

fpm -s dir -t rpm -n nginx -v 1.6.3 .#<==相當(dāng)路徑
fpm -s dir -t rpm -n nginx -v 1.6.3 /application/nginx-1.6.3/#<==絕對路徑

使用rpm -qpl查看rpm包的內(nèi)容

fpm類似tar打包一樣,只是fpm打的包能夠被yum命令識別而已

[root@m01 scripts]# cd /application/nginx-1.6.3/#<==切換到目錄下,再打包
[root@m01 nginx-1.6.3]# fpm -s dir -t rpm -n nginx -v 1.6.3 .#<==點來代表當(dāng)前目錄
[root@m01 nginx-1.6.3]# rpm -qpl nginx-1.6.3-1.x86_64.rpm
#<==所有的目錄,都從系統(tǒng)根目錄開始了,所以,一定要用絕對路徑打包
/conf/fastcgi.conf
/conf/fastcgi.conf.default
/conf/fastcgi_params
省略……

軟鏈接問題

fpm打包時,直接打包原目錄(后面加不加/,都沒有問題),不要打包軟鏈接目錄!

fpm -s dir -t rpm -n nginx -v 1.6.3 /application/nginx(不加/,這個軟鏈接代表一個文件)

打包看似成功,但查看包的內(nèi)容,只是一個軟鏈接文件

原因,目錄結(jié)尾的/問題,這有點類似rm刪除軟鏈接目錄

fpm -s dir -t rpm -n nginx -v 1.6.3 /application/nginx/(加/,這個軟鏈接代表一個目錄)

安裝rpm包

安裝rpm包的三種方法:

1、rpm命令安裝

[root@m01 ~]# rz -y #<==先把打包好的nginx rpm包,上傳到服務(wù)器
[root@m01 ~]# rpm -ivh nginx-1.6.3-1.x86_64.rpm 
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.3-1.x86_64
openssl-devel is needed by nginx-1.6.3-1.x86_64
#<==但會報如上依賴錯誤,需要先yum安裝依賴才能安裝rpm包。

解決方法:先利用yum安裝上面的兩個依賴包,再執(zhí)行rpm。

yum -y pcre-devel openssl-devel
rpm -ivh nginx-1.6.3-1.x86_64.rpm

2、yum命令安裝rpm包

這個命令會自動先安裝rpm包的依賴,然后再安裝rpm包。

yum localinstall -y nginx-1.6.3-1.x86_64.rpm

3、搭建內(nèi)網(wǎng)yum倉庫※※※

yum倉庫搭建(且待下文分解?。?/p>

上述就是小編為大家分享的怎么進行定制rpm包了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:怎么進行定制rpm包
網(wǎng)站路徑:http://weahome.cn/article/gohodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部