建立内網 RHEL源服務器

Posted on 2025-09-05 10:04  k98091518  阅读(10)  评论(0)    收藏  举报

需要RHEL 9

階段 1

  1. 建立您要用作存放庫的目錄。
    例如,下列命令會建立將用於包含 Red Hat 9 RPM 的目錄。
    mkdir –p /repos/redhat/9
  2. 顯示可供您用於填入本機存放庫的公共存放庫清單。
    您可以使用的公共存放庫是以您的 RHEL 訂閱為基礎。
    yum repolist
  3. 使用 YUM,安裝包含 reposync 的套件。
    yum install yum-utils
  4. 從您所選擇的公共存放庫下載所有可用的套件。
    例如,下列命令會從 rhel-9-for-x86_64-baseos-rpms 公共存放庫下載 RPM。
    reposync –-gpgcheck –l –-repoid=rhel-9-for-x86_64-baseos-rpms –-
    download_path=/repos/redhat/9
    下載程序將會花費較長時間,所以請做好相應計畫因應。 -gpgcheck 選項會移除在下載過程中無法通過簽章檢查
    的套件。
  5. 針對各個所需公共存放庫變體重複執行步驟 3。
    例如,若貴組織在 Intel 和 ARM 上都包含 RHEL 9,便需要從這兩個相關的公共存放庫下載 RPM。 您可能需要費
    時多日進行所有必要的下載。
    請勿嘗試下載適用於不同 Red Hat 或 CentOS 版本的 RPM。 例如,RHEL 9 電腦無法用於下載適用於
    RHEL 8 x64 電腦或 RHEL 7 x64 電腦的 RPM。
    階段 2
    此處描述的程序會建立一個可透過 HTTP 存取的存放庫。 還有其他可用於建立存放庫的方式。 請隨意使用您最為熟悉的
    方式。
  6. 使用 YUM,安裝可供建立存放庫的程式。
    yum install createrepo
  7. 建立存放庫。
    createrepo /repos/redhat/9
    若您遇到一則錯誤,說明其無法開啟 *.rpm 檔案,請確認仍有可用的磁碟空間。 若可用空間並不是問題所在,請
    再次執行下載步驟 (階段 1 的步驟 3)。 有可能是在初次進行下載時,遺漏了部分檔案。
  8. 安裝 Apache Web 服務。
    這將能提供使用 HTTP 通訊協定存取本機存放庫的功能。
    yum install httpd
  9. 開啟本機防火牆的連接埠 80。
    這是因為我們將存放庫設定為使用 HTTP。 HTTPS 也是一種選擇,不過在此選用 HTTP 的原因只是為了簡化範
    例。
  10. 編輯 httpd.conf 檔案,並新增下列任何目前缺少的條目。
    vi /etc/httpd/conf/httpd.conf
    ServerAdmin root@localhost
    DocumentRoot /var/www/html
    ServerName
  11. 將新的存放庫連結至預設網站位置。
    ln -s /repos/redhat /var/www/html/redhat
  12. 確認 Apache Web 服務的語法。
    httpd -t
  13. 啟動 Apache Web 服務。
    systemctl start httpd
    您可能需要在伺服器每次重新啟動時重複此命令。 您可以使用下列命令在伺服器重新啟動時自動啟動該
    服務:
    systemctl enable httpd。
  14. 取得 updateinfo.xml.gz ZIP 檔案。
    步驟 9 - 13 僅適用於 Red Hat 電腦。
    yum list-sec
  15. 從預設位置將 updateinfo.xml.gz 檔案複製到 /repodata 資料夾。
    cp /var/cache/yum/x86_64/9rhServer/rhel-9-for-x86_64-baseosrpms/

    updateinfo.xml.gz /repos/redhat/9/repodata/
  16. 解壓縮 updateinfo.xml.gz 檔案。
    gzip –d /repos/redhat/9/repodata/
    updateinfo.xml.gz
  17. 重新命名 updateinfo.xml 檔案,將不必要的前置字元刪除。
    mv /repos/redhat/9/repodata/
    updateinfo.xml
    /repos/redhat/9/repodata/updateinfo.xml
  18. 修改存放庫以確認其包含 updateinfo.xml 檔案。
    modifyrepo /repos/redhat/9/repodata/updateinfo.xml /repos/redhat/9/repodata/
  19. (僅適用於已啟用 SELinux 的電腦) 為 www/html/redhat 提供存取 /repos/redhat 的權限。
    cd /var/www/html
    chcon -R -t httpd_sys_content_t redhat/
    重複執行其他 Linux 版本和分發的組態程序
    您將需要為貴組織內所支援 Linux 各個發行的各個不同版本重複執行部分或全部的組態程序。 例如,您必須使用 RHEL 9
    電腦下載 RHEL 9 RPM、使用 CentOS 7 x64 電腦下載 CentOS 7 x64 RPM、使用 RHEL 8 x64 電腦下載 RHEL 8 x64 RPM,
    依此類推。 依各個 Linux 唯一版本的需要更改命令。
    情況 1: 您目前採用單一存放庫供所有不同 Linux 版本使用
    假設您目前使用 Red Hat 9 電腦做為存放庫,以下是您需要重複進行的作業,這樣才能擷取 Red Hat 8 RPM:
  20. 在 Red Hat 9 存放庫電腦上,重複進行階段 1,步驟 1,但需指定 /repos/redhat/8。
  21. 在 Red Hat 8 電腦上,進行階段 1,步驟 3 和 4。
    在步驟 3 中,由於 repos/redhat/9 目前將不會存在於 Red Hat 8 電腦上,所以請將 -download_path 選項移除並
    將其指向預設位置或指定不同位置。
  22. 在下載 RPM 作業完成時,將 RPM 傳送至您本機存放庫上的 repos/redhat/8 目錄。
    完成後,就可在單一電腦上具備單一存放庫,其中包含所有支援版本 Red Hat 的 RPM 套件。
    情況 2: 您目前單獨維護多個存放庫供各個不同 Linux 版本使用
    為貴組織所支援的各個不同 Linux 版本重複執行整個組態程序。
    將您的 Linux 用戶端電腦指向本機存放庫
    您必須修改每個 Linux 用戶端上的 YUM,這樣它才會在本機存放庫內搜尋 RPM,而不是在網際網路上搜尋。
    若您選擇為 Linux 各個版本維護不同的本機存放庫,請確保讓各個用戶端指向正確的本機存放庫。
  23. 登入用戶端電腦。
  24. 切換至列出存放庫所在位置的目錄。
    cd /etc/yum.repos.d
  25. 建立名為 local.repo 的檔案,接著將其設定為指向新的本機存放庫。
    nano local.repo
    [mylocalrepo]
    name=Local Rhel9 Server Repo
    baseurl=http://es-nxt-rhel9-repo.example.com/redhat/9
    gpgcheck=0
  26. 指定在本機存放庫缺少 RPM 的情況下,用戶端不應試圖在網際網路 (中斷用戶端電腦的連線) 上尋找。
    ls
    vi any file other than local.repo (example redhat.repo)
    Look for your repoid (example rhel-9-for-x86_64-baseos-rpms)
    Set enabled = 0
    存放庫的定期維護
    您將需要讓本機存放庫與公共存放庫定期重新同步,藉此維持其最新狀態。 執行下列命令時,僅新的 RPM 套件會下載
    至本機存放庫。
    reposync –gpgcheck –l –repoid=rhel-9-for-x86_64-baseos-rpms –
    download_path=/repos/redhat/9
    createrepo --update /repos/redhat/9
    氣隙網路
    若貴組織設有「氣隙」網路,即代表不允許用戶端電腦連接至任何具備網際網路連線的電腦,您必須設定並維護第二個
    存放庫。 下圖已說明此點。
    在此情況中,已依上述說明設定及配置連線存放庫後,您將會在已中斷連線電腦上設定第二個存放庫,並手動使用卸除
    式媒體從連線存放庫將檔案傳輸至已中斷連線存放庫。 接著應將您的 Linux 用戶端電腦設定為指向已中斷連線存放庫,
    而非指向連線存放庫。
v9
cat repo_download.sh
#!/bin/bash
set -e

reposync -p /home/repo/rhel9/ --download-metadata --repoid=rhel-9-for-x86_64-baseos-rpms
reposync -p /home/repo/rhel9/ --download-metadata --repoid=rhel-9-for-x86_64-appstream-rpms
createrepo --update /home/repo/rhel9/rhel-9-for-x86_64-appstream-rpms/
createrepo --update /home/repo/rhel9/rhel-9-for-x86_64-baseos-rpms/