配置yum倉庫,RPM包制作及yum倉庫搭建

 2023-10-18 阅读 17 评论 0

摘要:RPM包制作 rpm包的制作是通過fpm軟件來生成的,所以首先要安裝fpm軟件。又因為fpm的軟件是ruby開發的,所以安裝fpm的話首先要安裝ruby等包 FPM功能簡單說就是將一種類型的包轉換成另一種類型。 FPM的github:https://github.com/jordansissel/fpm? 支持的

RPM包制作

rpm包的制作是通過fpm軟件來生成的,所以首先要安裝fpm軟件。又因為fpm的軟件是ruby開發的,所以安裝fpm的話首先要安裝ruby等包

FPM功能簡單說就是將一種類型的包轉換成另一種類型。

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

支持的源類型包:

配置yum倉庫??dir: 將目錄打包成所需要的類型,可以用于源碼編譯安裝的軟件包

?rpm: 對rpm進行轉換

?gem: 對rubygem包進行轉換

?python: 將Python模塊打包成相應的類型

1、安裝fpm

自建yum倉庫。 fpm 是 ruby寫的,因此系統環境需要ruby,且版本必須大于1.8.5

yum  install ruby rubygems ruby-devel -y

 查看當前ruby源:

[root@lnmp01 ~]# gem source -l
*** CURRENT SOURCES ***
http://rubygems.org/

 添加國內源

gem sources -a http://mirrors.aliyun.com/rubygems/

 移除國外源

gem sources --remove http://rubygems.org/

 安裝制作rpm包的fpm工具

[root@lnmp01 ~]# gem install fpm
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
ERROR:  Error installing fpm:ruby-xz requires Ruby version >= 1.9.3.

搭建yum, 安裝fpm工具的時候報錯,解決辦法為:

#安裝舊版本的fpm
[root@lnmp01 ~]# gem install fpm -v 1.4.0
Successfully installed clamp-0.6.5
Successfully installed fpm-1.4.0
2 gems installed
Installing ri documentation for clamp-0.6.5...
Installing ri documentation for fpm-1.4.0...
Installing RDoc documentation for clamp-0.6.5...
Installing RDoc documentation for fpm-1.4.0...

 到此fpm工具安裝完成

? FPM的常用參數:

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

2、制作rpm包

?比如對nginx的編譯安裝打包成rpm

yum啟用倉庫?創建一個腳本nginx-rpm.sh

[root@lnmp01 ~]# vim  /server/scripts/nginx-rpm.sh#!/bin/bash
useradd  nginx  -s /sbin/nologin  -M
ln  -s /application/nginx-1.6.3/   /application/nginx
/application/nginx/sbin/nginx
lsof -i :80

 生成rpm包

fpm  -s  dir -t rpm -n nginx -v 1.6.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx-rpm.sh -p /tmp/ -f /application/nginx-1.6.3/

 說明:所有參數都要放在-f /application/nginx-1.6.3/之前,否則會報錯,這里的nginx-rpm.sh腳本也要提前做好,在生成的rpm包中會包含這個腳本;-p指定生成的rpm包輸出的路徑,-d為指定客戶端安裝這個rpm包時要先安裝這些依賴包,-f為在指定的rpm包輸出路徑中相同的rpm包名做覆蓋,不然沒有-f參數在相同路徑下生成相同名字的rpm包會報錯。還有在制作rpm包時最好不要對相對路徑打包,因為對相對路徑打包生成的rpm包是從根路徑開始的,所以生產上都要用絕對路徑打包。

相對路徑打包的錯誤:所以不推薦使用相對路徑打包

[root@lnmp01 nginx]# fpm  -s  dir -t rpm -n nginx -v 1.6.2 .

[root@lnmp01 nginx]# rpm -qpl nginx-1.6.2-1.x86_64.rpm /client_body_temp
/conf/extra/bbs.conf
/conf/extra/blog.conf
/conf/extra/status.conf
/conf/extra/www.conf
/conf/fastcgi.conf
/conf/fastcgi.conf.default
/conf/fastcgi_params
/conf/fastcgi_params.default
/conf/koi-utf
/conf/koi-win
/conf/mime.types
/conf/mime.types.default
/conf/nginx.conf
/conf/nginx.conf.default
/conf/nginx.conf.ori1
/conf/scgi_params
/conf/scgi_params.default
/conf/uwsgi_params
/conf/uwsgi_params.default
/conf/win-utf
/fastcgi_temp
/html/50x.html
/html/bbs/admin.php
/html/bbs/api.php
/html/bbs/api/addons/channel.htm
/html/bbs/api/addons/index.htm
/html/bbs/api/addons/zendcheck.php
/html/bbs/api/addons/zendcheck52.php
/html/bbs/api/addons/zendcheck53.php
/html/bbs/api/connect/index.htm
/html/bbs/api/connect/like.php
/html/bbs/api/db/dbbak.php
/html/bbs/api/db/index.htm
/html/bbs/api/google/google.php
/html/bbs/api/google/index.htm
/html/bbs/api/index.htm
相對路徑打包rpm

在其他服務器上安裝這個制作的nginx的rpm包

[root@lnmp01 ~]# scp  /tmp/nginx-1.6.2-1.x86_64.rpm  192.168.1.104:~ [root@backup ~]# rpm -ivh nginx-1.6.2-1.x86_64.rpm 
error: Failed dependencies:pcre-devel is needed by nginx-1.6.2-1.x86_64openssl-devel is needed by nginx-1.6.2-1.x86_64[root@backup ~]# yum  localinstall -y nginx-1.6.2-1.x86_64.rpm [root@backup ~]# id nginx
uid=503(nginx) gid=503(nginx) groups=503(nginx)[root@backup ~]# ll /application/
total 4
lrwxrwxrwx  1 root root   25 Sep  8 21:00 nginx -> /application/nginx-1.6.3/
drwxr-xr-x 11 root root 4096 Sep  8 21:00 nginx-1.6.3[root@backup ~]# lsof  -i  :80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   4043  root    9u  IPv4  28773      0t0  TCP *:http (LISTEN)
nginx   4045 nginx    9u  IPv4  28773      0t0  TCP *:http (LISTEN)

yum源搭建? 這樣在其他服務器上安裝nginx的rpm包成功部署完成。。。

?YUM倉庫搭建

1、創建 yum倉庫的目錄

mkdir  -p /application/yum/centos6.6/x86_64
cd  /application/yum/centos6.6/x86_64

2、安裝createrepo軟件(創建存儲庫)

yum -y install createrepo

3、初始化yum倉庫

createrepo -pdo /application/yum/centos6.6/x86_64/  /application/yum/centos6.6/x86_64/

 初始化完會生成一個repodata目錄,代表初始化yum倉庫成功

linux搭建yum源,4、當有新的rpm放到/application/yum/centos6.6/x86_64/里時,執行更新

createrepo --update  /application/yum/centos6.6/x86_64/

5、將上面生成的rpm包放在yum倉庫指定的目錄中,并下載這個nginx的rpm的依賴包

cd  /application/yum/centos6.6/x86_64/
cp  /server/scripts/nginx-1.6.3-1.x86_64.rpm  .
yumdownloader   openssl-devel  pcre-devel 

6、關掉nginx,因為下面要用python來做web服務,當然也可以用nginx自帶的web服務提供瀏覽器打開yum倉庫

 用python提供web服務做客戶端訪問yum源的url路徑

/application/nginx/sbin/nginx  -s  stop
cd  /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &

 如果用nginx提供web服務做客戶端訪問yum源的url路徑的話,做如下配置

cat  >/application/nginx/conf/nginx.conf<<EOF
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html/yumcache;autoindex on;         ##開啟目錄index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
EOF/application/nginx/sbin/nginx -s stop
/application/nginx/sbin/nginx

linux建立yum倉庫、7、修改yum的配置文件,讓平時yum安裝的軟件rpm包都要保存下載

vim  /etc/yum.conf
keepcache=1

8、客戶端部署

 創建本地的yum源文件

cd  /etc/yum.repos.d/
vim  goser.repo
[goser]
name=Server
baseurl=http://192.168.182.143
enabled=1
gpgcheck=0
清空之前的緩存
yum clean all

 在客戶端運行如下命令,讓客戶端yum安裝的時候只查找新建的yum源文件goser.repo

yum --enablerepo=goser --disablerepo=base,extras,updates list

 或者直接將舊的yum源放到其他的目錄,在/etc/yum.repos.d/目錄下只有新建的yum源goser.repo

cp  CentOS-Base.repo  CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-fasttrack.repo epel.repo repobak/

yum倉庫下創建Vim、 不需要的源放到其他目錄了,那么客戶端直接運行yum? install? nginx -y就行了,而不需要--disablerepo,--enalberepo參數了

9、錯誤排查

 當客戶端直接進行yum安裝的時候報如下錯誤:

yum install  nginx  -y
Error: Package: pcre-devel-7.8-7.el6.x86_64 (goser)Requires: pcre = 7.8-7.el6Installed: pcre-7.8-6.el6.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)pcre = 7.8-6.el6You could try using --skip-broken to work around the problemYou could try running: rpm -Va --nofiles --nodigest

 這個錯誤說明yum倉庫缺少pcre = 7.8-7.e16這個包,所以應該在yum倉庫中添加這個包,步驟如下:

#添加缺少的包
yumdownloader  pcre
#服務端yum倉庫更新
createrepo --update  /application/yum/centos6.6/x86_64/

 客戶端重新緩存yum源

yum clean  all
yum  makecache 
#這時候用list查看就有缺少的包了
yum list
Available Packages
nginx.x86_64            1.6.3-1         goser                                   
openssl-devel.i686      1.0.1e-57.el6   goser                                   
pcre.i686               7.8-7.el6       goser                                   
pcre.x86_64             7.8-7.el6       goser                                   
pcre-devel.i686         7.8-7.el6       goser                                   
pcre-devel.x86_64       7.8-7.el6       goser

如何手動搭建yum倉庫、 這時候再直接安裝就沒問題了 yum? install? nginx -y

轉載于:https://www.cnblogs.com/goser/p/7684244.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/150239.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息