搭建yum倉庫與定制rpm包


 筆者Q:972581034 交流群:605799367。有任何疑問可與筆者或加群交流

當我們自動化部署集群的時候,想要快速的安裝所有服務,搭建yum倉庫與定制rpm包是我們首先要做的

 

原創作品,轉載請注明出處。http://www.cnblogs.com/Csir/  本人導師---悠久之翼

#服務端
1.
#先保留平常下載下來的rpm包

sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf

這樣當我們yum安裝軟件的時候,文件就是被保存下來:

/var/cache/yum/

#部署nginx,提供80端口服務
#安裝依賴包

yum install  -y pcre-devel openssl-devel 
rpm -qa  pcre-devel openssl-devel

#下載nginx-10.0.2

mkdir -p /home/oldboy/tools
cd /home/oldboy/tools
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz

#配置

./configure  --user=www --group=www --prefix=/application/nginx-1.10.2 --with-http_stub_status_module  --with-http_ssl_module

#編譯

make && make install

#做軟連接

ln -s /application/nginx-1.10.2 /application/nginx

#啟動nginx進行測試

/applicaton/nginx/sbin/nginx 

lsof -i:80

#======================================

#==================================
#定制rpm包
####下載工具

yum install fpm-1.6.3-1.x86_64.rpm -y
rpm -qa fpm

#將nginx打包

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

#錯誤說明:

#1.[root@m01 application]# fpm -s dir -t rpm -n mysql -v 5.6.34   -f /application/mysql-5.6.34-linux-glibc2.5-x86_64  --post-install /server/scripts/mysql_rpm.sh 
All flags should be before the first argument (stray flags found: ["--post-install"] {:level=>:warn}
Invalid package configuration: Cannot package the path './--post-install', does it exist? {:level=>:error}


解決方法: --post-install不能放到最后,選項的順序最好不要隨意變換



#這樣。。將定制好的nginx-1.10.2-1.x86_64 放入下面yum倉庫對應目錄,客戶端配置一下就可以進行yum安裝了
#fpm相關命令說明
#    fpm -h #查看命令的幫助,下面對常用的參數進行簡單的說明
#    -s:指定源類型
#    -t:指定目標類型
#    -n:指定名字
#    -v:指定版本號
#    -C:指定打包的相對路徑
#    -d:指定依賴於哪些包
#    -f:第二次打包時目錄下如果有同名安裝包存在,則覆蓋它
#    -p:輸出的安裝包的目錄,不想放在當前目錄下就需要指定
#    --post-install  軟件包安裝完成之后所要運行的腳本;同--after-install
#    --pre-install  軟件包安裝完成之前所要運行的腳本;同--before-install

 


#=================================
#=================================

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

yum -y install createrepo


#創建yum倉庫目錄

mkdir -p /application/nginx/html/yumcache/


#將保存好的rpm包放入/application/nginx/html/yumcache/

 

#初始化yum倉庫

createrepo -pdo /application/nginx/html/yumcache/ /application/nginx/html/yumcache/


##當有新的rpm放到/application/nginx/html/yumcache里時,執行更新

createrepo --update /application/nginx/html/yumcache/

 

#修改nginx配置文件,讓它默認訪問瀏覽器找到html/yumcache/目錄

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


#檢查語法重啟nginx服務

/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx

 


#訪問ip可以查看yum倉庫內容,下面會多個一個repodata/目錄,是createrepo生成的。
#這是一個簡單的yum倉庫就搭建完成了,但是現在只有nginx的功能,以后可以增加更多的內容,放進來目錄即可


==========================================
==========================================

 

##客戶端部署

cd /etc/yum.repos.d/
mkdir yum_bak


#把之前的yum源移動到剛創建的目錄做備用
mv *.repo yum_bak

#新建一個本地yum源文件

cat >/etc/yum.repos.d/myyum.repo<<EOF
[myyum]
name=Server
baseurl=http://10.0.0.61
enabled=1
gpgcheck=0
EOF

#清空之前的緩存
yum clean all

 

==================================================
==================================================

錯誤排查

Error: Package: nginx (myyum)
           Requires: libxslt-develpcre


#在提示類似錯誤的時候,是缺少某個依賴包,下來放到yum倉庫即可。
#倉庫執行update的命令;客戶端執行yum clean all

#如果確認倉庫有包,但是客戶端沒有,排查思路
#1、yum倉庫createrepo --update /application/nginx/html/yumcache/
#2、客戶端,yum clean all;
#3、如何還不可以,服務端刪除生成的repodata目錄,重新createrepo -pdo /application/nginx/html/yumcache/ /application/nginx/html/yumcache/,然后執行第二步;
#在客戶機安裝的時候總提示沒有可用的安裝包,最后發現是/etc/yum.repos.d/下的文件名后綴寫錯了。

 

==============================================================
在客戶機安裝的時候總是提示文件找不到,什么都不能安裝

error was [Errno 2] Local file does not exist: /root/pdate/libiconv-devel-1.14-1.x86_64.rpm
  libxml2-devel-2.7.6-21.el6_8.1.x86_64: failed to retrieve libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm
  libX11-devel-1.6.3-2.el6.x86_64: failed to retrieve libX11-devel-1.6.3-2.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libX11-devel-1.6.3-2.el6.x86_64.rpm
  libXt-1.1.4-6.1.el6.x86_64: failed to retrieve libXt-1.1.4-6.1.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libXt-1.1.4-6.1.el6.x86_64.rpm
  mhash-0.9.9.9-3.el6.x86_64: failed to retrieve mhash-0.9.9.9-3.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/mhash-0.9.9.9-3.el6.x86_64.rpm
  libmcrypt-2.5.8-9.el6.x86_64: failed to retrieve libmcrypt-2.5.8-9.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libmcrypt-2.5.8-9.el6.x86_64.rpm

解決方法:在服務端在/application/nginx/html/yumcache/下刪除repodata    這個目錄然后執行
createrepo --update /application/nginx/html/yumcache即可

rpm的常用命令

rpm -qpi your.rpm #查看rpm包信息
rpm -qpl your.rpm #查看rpm包內容
rpm -qpR your.rpm #查看rpm包的依賴
rpm -qp --scripts your.rpm #查看rpm包要執行的腳本,存的不是文件了。
rpm -ivh your.rpm #安裝rpm包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM