centos-release 套件實例

  1. 下載 SRPM 套件
    [dywang@dywH ~]$ cd rpmbuild/
    [dywang@dywH rpmbuild]$ wget http://dy.csie.cyut.edu.tw/moodle23/dywang/download/centos-release-6-4.el6.10.dyw.src.rpm
    

  2. 安裝 SRPM 套件
    [dywang@dywH rpmbuild]$ rpm -ivh centos-release-6-4.el6.10.dyw.src.rpm 
       1:centos-release         ########################################### [100%]
    

  3. 解打包壓縮
    [dywang@dywH rpmbuild]$ cd SOURCES/
    [dywang@dywH SOURCES]$ tar zxvf centos-release-6-4.tar.gz 
    centos-release-6/CentOS-Base.repo
    centos-release-6/CentOS-Debuginfo.repo
    centos-release-6/CentOS-Media.repo
    centos-release-6/CentOS-Vault.repo
    centos-release-6/EULA
    centos-release-6/GPL
    centos-release-6/RPM-GPG-KEY-CentOS-6
    centos-release-6/RPM-GPG-KEY-CentOS-Debug-6
    centos-release-6/RPM-GPG-KEY-CentOS-Security-6
    centos-release-6/RPM-GPG-KEY-CentOS-Testing-6
    

  4. 修改 initscript 規格檔,此規格檔已修改過,可依自己的需求再修改,在 install 段落加入自己的 repo server,由於三個 repo server 內容都一樣,目的只在於若本地端存在,就不需要透過遠端 server 下載套件,以加快速度,其 skip_if_unavailable=1 是設定 repo server 無法連線就跳過,否則只要有一 server 無法連線就不能安裝。priority=n 則是指定repo server 的優先順序,n 可以從 1 到 99,數字越小越優先,不過要安裝 yum-plugin-priorities 套件才能生效,所以增加相依套件要求 Requires: yum-plugin-priorities。
    [dywang@dywH SOURCES]$ vim ../SPECS/centos-release.spec 
    Requires:   yum-plugin-priorities
    ........
    Release:        4%{?dist}.10.dyw
    ........
    %install
    ........
    
    # create /etc/system-release and /etc/dywang-release
    echo "De-Yu Wang Linux %{full_release_version} release (Taiwan)" > $RPM_BUILD_ROOT/etc/dywang-release
    ln -s dywang-release $RPM_BUILD_ROOT/etc/centos-release
    ln -s dywang-release $RPM_BUILD_ROOT/etc/system-release
    # write cpe to /etc/system/release-cpe
    echo "cpe:/o:centos:linux:%{version}:%{?beta:%{beta}}%{!?beta:GA}" > $RPM_BUILD_ROOT/etc/system-release-cpe
    
    # create /etc/issue and /etc/issue.net
    cp $RPM_BUILD_ROOT/etc/dywang-release $RPM_BUILD_ROOT/etc/issue
    echo "Kernel \r on an \m" >> $RPM_BUILD_ROOT/etc/issue
    cp $RPM_BUILD_ROOT/etc/issue $RPM_BUILD_ROOT/etc/issue.net
    echo >> $RPM_BUILD_ROOT/etc/issue
    
    # copy yum repos to /etc/yum.repos.d
    mkdir -p $RPM_BUILD_ROOT/etc/yum.repos.d/repotmp
    for file in *.repo; do
        install -m 644 $file $RPM_BUILD_ROOT/etc/yum.repos.d/repotmp
    done
    # create dywang repo
    cat > $RPM_BUILD_ROOT/etc/yum.repos.d/dywang.repo << EOF
    [dywlocal]
    name=De-Yu Wang Local
    baseurl=ftp://deyu.wang/pub/centos6/
    gpgcheck=0
    priority=1
    skip_if_unavailable=1
    [dywpxe]
    name=De-Yu Wang PXE
    baseurl=ftp://192.168.1.254/pub/centos6/
    gpgcheck=0
    priority=20
    skip_if_unavailable=1
    [dywang]
    name=De-Yu Wang
    baseurl=http://dy.csie.cyut.edu.tw/centos6/
    gpgcheck=0
    priority=30
    skip_if_unavailable=1
    EOF
    

  5. 重建 centos-release RPM 及 SRPM 二進位檔
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/centos-release.spec
    

  6. 查看新產生的 centos-release RPM 及 SRPM 二進位檔
    [dywang@dywH SOURCES]$ ll ../RPMS/x86_64/centos* ../SRPMS/centos*
    -rw-r--r--. 1 dywang dywang 19667 Jan 28 10:57 ../RPMS/x86_64/centos-release-6-4.el6.10.dyw.x86_64.rpm
    -rw-r--r--. 1 dywang dywang 18044 Jan 28 10:57 ../SRPMS/centos-release-6-4.el6.10.dyw.src.rpm