企業內部若是使用本身的Yum服務器,不但佔用帶寬少、速度更快,並且能夠更加靈活方便的自定義配置,能有效提高平常工做效率。php
1、基本概念linux
1. RPMnginx
全稱是The RPM Package Manager。用於在CentOS系統中安裝/卸載軟件。centos
2. Yumbash
全稱是Yellow Dog Updater Modified。用於管理RPM包,完成安裝/卸載/升級,重要的是可以處理包之間的依賴關係。服務器
2、同步外部yum源ide
第一步固然是創建內網的yum源,基本上yum源就是一個靜態的http服務,yum client根據repo文件的配置讀取遠程數據,下載rpm包到本地進行安裝。具體安裝步驟再也不贅述,徹底參考【3】便可。工具
固然我使用的源有所不一樣,主要包括如下幾個源:網站
CentOS 6 Base: rsync://mirrors.ustc.edu.cn/centos/6/os/ CentOS 6 Update: rsync://mirrors.ustc.edu.cn/centos/6/updates/ CentOS 6 Epel: rsync://mirrors.ustc.edu.cn/epel/6/ Percona: rsync://rsync.percona.com/rsync/centos/6/os/x86_64/
2、自定義yum源ui
上面是同步外部的yum源到內網,那麼如何定義本身的yum源呢?這個其實也很是簡單。
1. 在上述的數據文件夾下新建目錄,結構相似於
my_yum/ ├── Centos-5 │ └── repodata └── Centos-6 ├── Packages └── repodata
2. 將經常使用的RPM文件放入Packages文件夾,執行
createrepo -p -d -o Centos-6 Centos-6
3. 建立my_yum.repo文件,其中
baseurl=http://yum-server.xxx.com/my_yum/Centos-$releasever/
3、自定義rpm文件
實際應用中,還有許多程序是沒有rpm安裝包的,必須經過編譯安裝並自定義配置,這部分相對複雜一些。下面以tengine 2.1.0的打包過程爲例。
1. RPM打包
1)安裝RPM打包工具
yum -y install rpm-build
2)依照 rpmbuild 規範設定一個目錄結構。
rpmbuild/ ├── BUILD ├── BUILDROOT ├── RPMS ├── SOURCES ├── SPECS └── SRPMS
3)將源代碼和附帶文件放在目錄中合適的位置。
下載tengine-2.1.0.tar.gz到SOURCES目錄
4)建立 spec 文件。
#This is the spec file for tengine Name: tengine Version: 2.1.0 Release: 1 Summary: Tengine from Taobao Inc. Group: Applications/Productivity License: BSD URL: http://tengine.taobao.org/ Source0: tengine-2.1.0.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: libevent BuildRequires: libevent-devel BuildRequires: gcc %description Tengine from Taobao Inc. %prep %setup -q %build ./configure --with-http_ssl_module --with-http_stub_status_module make %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} install -m 755 -d %{buildroot}/%{_bindir} ln -s /usr/local/nginx/sbin/nginx %{buildroot}/%{_bindir}/nginx %clean #rm -rf %{buildroot} %files %defattr(-,root,root,-) /usr/local/nginx /%{_bindir}/* %doc %changelog
4)編譯 RPM。
rpmbuild -v -bb --clean SPECS/tengine-2.1.0.spec
當編譯順利完成,生成的rpm文件會放置在RPMS目錄,便可同步到本身的yum源進行管理。
2. 添加自定義配置
從spec文件能夠看出,RPM打包的過程就是經過腳本執行configure->make->make install,最後將編譯好的文件整合到一個rpm文件中。那麼若是要自定義配置,只須要在make install以後用本身的配置文件覆蓋原始配置。
1)編寫配置文件
按照正常語法編寫tengine的配置文件,我修改了整個conf文件的結構,放在SOURCES/tengine_conf文件夾中。
2)spec文件Source1
在Source0下面添加一行
Source1: tengine_conf
這樣在spec文件中就會到SOURCES文件夾尋找tengine_conf
3)spec文件install
在%install節中添加
rm -rf %{buildroot}/usr/local/nginx/conf cp -r %{SOURCE1} %{buildroot}/usr/local/nginx/conf
刪除make install生成的conf,用tengine_conf代替
這樣就能生成一個自定義配置的rpm文件了,經過修改Version號和Release號能夠方便的升級/變動。主要是理解RPM打包的原理,注意一些內部宏變量的使用,注意相對路徑和絕對路徑的問題。建議反覆閱讀【5】。
【1】rpm - 官方網站
【2】yum - 官方網站