定製化rpm包及本地yum倉庫搭建

爲方便本地yum的管理,通常都是在公司局域網內搭建本地yum倉庫,實現公司內部快速安裝經常使用軟件。
步驟以下:
一、搭建要實現本地yum管理的軟件,測試該軟件搭建成功與否;
二、定製rpm包及其相關依賴;
三、搭建本地yum源
四、配置客戶端yum,實現局域網取包安裝。
 
首先聲明:該本地yum倉庫中的包要儘可能全,否則有些定製包可能安裝不上。緣由很簡單,該包本來就須要一些其餘的依賴包,而你的本地倉庫沒有。
 
安裝nginx,測試安裝是否成功
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 /tmp/tools
cd /tmp/tools/
tar xf nginx-1.10.2.tar.gz
cd nginx-1.10.2
mkdir /application
#配置
./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
添加www用戶:
useradd -u 789 www -s /sbin/nologin  -M
#啓動nginx進行測試
/applicaton/nginx/sbin/nginx
 
lsof -i:80
關閉nginx 爲定製rpm包作準備:
pkill   nginx
 
#定製rpm包
####下載工具及配置
FPM安裝
#fpm是ruby寫的,所以系統環境須要ruby,且ruby版本號大於1.8.5
#安裝ruby模塊
yum -y install ruby rubygems ruby-devel
檢查安裝成功與否
rpm -qa ruby rubygems ruby-devel
#添加阿里雲的rubygems倉庫,外國的源太慢
gem sources -ahttp://mirrors.aliyun.com/rubygems/ http://mirrors.aliyun.com/rubygems/ added to sources
#移除原生的Ruby倉庫
gem sources --remove http://rubygems.org/ http://rubygems.org/ removed from sources
#安裝fpm
#指定安裝fpm1.3.3版本的軟件,fpm這個工具升級很頻繁,並且在每次升級後會出現各類各樣的問題。可是老版本的fpm工具可以知足咱們的需求,所以就用這個版本了。
#這裏必定要指定fpm的版本,否則會報錯,報錯緣由可追溯到版本頻繁升級的問題致使。
gem install fpm -v 1.3.3
開始定製nginx 的rpm包
#建立nginx的rpm包要執行的腳本
cat  >  /server/scripts/nginx_rpm.sh   << eof
#!/bin/bash
 
useradd -u 789 www -M -s /sbin/nologin
ln -s /application/nginx-1.10.2/ /application/nginx
eof
#經過fpm命令打包rpm
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/
#fpm相關命令說明
#    fpm -h #查看命令的幫助,下面對經常使用的參數進行簡單的說明
#    -s:指定源類型
#    -t:指定目標類型
#    -n:指定名字
#    -v:指定版本號
#    -C:指定打包的相對路徑
#    -d:指定依賴於哪些包
#    -f:第二次打包時目錄下若是有同名安裝包存在,則覆蓋它
#    -p:輸出的安裝包的目錄,不想放在當前目錄下就須要指定
#    --post-install  軟件包安裝完成以後所要運行的腳本;同--after-install
#    --pre-install  軟件包安裝完成以前所要運行的腳本;同--before-install
#    --post-uninstall   軟件包卸載完成以後所要運行的腳本;同--after-remove
#    --pre-uninstall    軟件包卸載完成以前所要運行的腳本;同--before-remove
#查看rpm包信息
rpm -qpi nginx-1.10.2-1.x86_64.rpm
#查看rpm包內容
rpm -qpl nginx-1.10.2-1.x86_64.rpm
#查看rpm的包依賴
rpm -qpR nginx-1.10.2-1.x86_64.rpm
#查看rpm自帶的執行腳本,執行腳本不是以文件的形式存在rpm包中
rpm -qp --scripts nginx-1.10.2-1.x86_64.rpm
 
建立本地yum倉庫
建立倉庫目錄
mkdir /application/yum/centos6/x86_64 -p
將生成的nginx  rpm包放到該目錄
mv nginx-1.10.2-1.x86_64.rpm /application/yum/centos6/x86_64/
安裝createrepo
yum -y install createrepo
初始化repodata索引文件
createrepo -pdo /application/yum/centos6/x86_64/  /application/yum/centos6/x86_64/
#修改nginx配置文件,讓它默認訪問瀏覽器找到/application/yum/centos6/x86_64/目錄
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   /application/yum/centos6/x86_64/;
            autoindex on;         ##開啓目錄
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF
檢查nginx配置問,啓動nginx:
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx
使用yum下載nginx依賴包,拷貝到本地yum源目錄:
yumdownloader pcre-devel openssl-devel
mv openssl* pcre* /application/yum/centos6/x86_64/
#每加入一個rpm包就要執行一下以下命令,用來更新索引
createrepo --update /application/yum/centos6/x86_64
 
配置客戶端
建立腳本
cat >  /etc/yum.repos.d/local.repo  << eof
[local]
name=Server
baseurl=http://172.16.1.61
enable=1
gpgcheck=0
eof
yum操做、清除緩存、從新創建緩存;
yum clean all
指定指定使用local源,此命令重啓linux系統失效:
yum --enablerepo=local --disablerepo=base,extras,updates,epel list
# 這條命令中的local名稱必定要對應local.repo中的[local]
#注意最下面白色的文件列表
永久生效法:
vi CentOS-Base.repo
#在每個啓動的源加上
enabled=0   #改成1就啓用,沒有此參數也是啓用。
安裝nginx
yum install nginx
 
~~~~~~~~~~~~~~~~~~~~~~~~~
擴展:
但還有一種企業需求,說的更具體一點,平時你們yum安裝軟件都是從公網下載的,佔用帶寬,所以在公司裏搭建一個內網yum服務器,但又考慮到若是yum軟件的數據庫文件repodata不同,就會有問題。所以我想到的解決方法就是直接使用公網yum源的repodata。
 
 
鏡像同步公網yum源
上游yum源必需要支持rsync協議,不然不能使用rsync進行同步。
http://mirrors.ustc.edu.cn/status/
CentOS官方標準源:rsync://mirrors.ustc.edu.cn/centos/
epel源:rsync://mirrors.ustc.edu.cn/epel/
 
同步命令:
# 使用rsync同步yum源,爲了節省帶寬、磁盤和下載時間,我只同步了CentOS6的rpm包,這樣全部的rpm包只佔用了21G,所有同步須要300G左右。
# 同步base源,小技巧,咱們安裝系統的光盤鏡像含有部分rpm包,大概3G,這些就不用從新下載。
 
#建立四個目錄,用於同步公網yum源
mkdir -p /application/yum/centos/6/os/x86_64/
mkdir -p /application/yum/centos/6/extras/x86_64/
mkdir -p /application/yum/centos/6/updates/x86_64/
mkdir -p /application/yum/epel/6/x86_64/
 
#下面四條命令,同時複製執行,就會開始同步官網yum源到本地。
1 /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /application/yum/centos/6/os/x86_64/
2 /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /application/yum/centos/6/extras/x86_64/
3 /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /application/yum/centos/6/updates/x86_64/
4 /usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /application/yum/epel/6/x86_64/
相關文章
相關標籤/搜索