2. Linux 軟體管理 002

来源:https://www.cnblogs.com/wuhanjiayou/archive/2023/11/29/17863509.html
-Advertisement-
Play Games

3)搭建企業內部 Yum 倉庫 利用 HTTPD 搭建 企業內部私有倉庫。 [ 虛擬機演示:掛載一個新的 CD 光碟鏡像源 ] 1)CD 光碟 鏡像源 // `scandisk` 掃描新加的磁碟 echo '- - -' > /sys/class/scsi_host/host0/scan echo ...


3)搭建企業內部 Yum 倉庫

利用 HTTPD 搭建 企業內部私有倉庫。

[ 虛擬機演示:掛載一個新的 CD 光碟鏡像源 ]

1)CD 光碟 鏡像源

截圖.png

// `scandisk` 掃描新加的磁碟

echo '- - -' > /sys/class/scsi_host/host0/scan

echo '- - -' > /sys/class/scsi_host/host1/scan

echo '- - -' > /sys/class/scsi_host/host2/scan

截圖.png

 

2)部署 HTTPD

1. 安裝 HTTPD

yum install httpd -y

 

2. 啟用 並 開機自啟

systemctl start httpd

systemctl enable httpd

 

3. 關閉防火牆 and SELinux

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/g' /etc/selinux/config

setenforce 0

截圖.png

 

3)配置站點目錄

1. 切換至 HTTPD 預設站點目錄

cd /var/www/html

 

2. 創建子目錄

mkdir centos/{7,8} -p

 

3. 驗證

// `有安裝` tree, 則不執行

// `無安裝` tree, 則執行安

rpm -q tree || yum install tree -y

tree centos/

截圖.png

 

4)掛載光碟

mount /dev/sr1 /var/www/html/centos/7

截圖.png

 

5)驗證倉庫

http://192.168.18.141/centos/7/

截圖.png

 

 

6)客戶端編寫 repo 配置文件

vim 1.repo

 

[Base]

name=CentOS7

baseurl=http://192.168.18.141/centos/$releasever

gpgcheck=0

enabled=1

yum repolist

yum list vsftpd

yum install vsftpd -y

截圖.png

完成

 

// `scandisk` 掃描新增的磁碟

echo '- - -' > /sys/class/scsi_host/host0/scan

echo '- - -' > /sys/class/scsi_host/host1/scan

echo '- - -' > /sys/class/scsi_host/host2/scan

截圖.png

 

// 將該 CD 光碟鏡像掛載至 centos/8 站點目錄

mount /dev/sr0 /var/www/html/centos/8/

截圖.png

 

7)createrepo 命令

用於為 YUM 倉庫 創建必要的元數據目錄(repodata),以便 YUM 工具能夠正確地查找和安裝軟體包。

// 舉例

cd /var/www/html/centos

 

// 自建一個放置獨立軟體包的 repo 目錄

mkdir testrepo && cd testrepo

 

// 上傳獨立軟體包

截圖.png

 

在這種情況下,即使我們編寫了倉庫配置文件,將其指向了特定的獨立軟體包存放目錄。

但由於 我們沒有為該目錄生成必要的 repodata 元數據,導致無法成功索引和管理軟體包數據。

// `編寫倉庫配置文件`

vim 1.repo

[Base]

name=CentOS7

baseurl=http://192.168.18.141/centos/$releasever

gpgcheck=0

enabled=1

 

[testrepo]

name=CentOS7

baseurl=http://192.168.18.141/centos/testrepo

gpgcheck=0

enabled=1

 

// 驗

yum repolist

截圖.png

 

給軟體包目錄生成 repodata 元數據目錄

1. 切換至軟體包目錄

cd /var/www/html/centos/testrepo

 

2. "創建 repodata 元數據目錄"

createrepo .

 

3. 驗證 repodata 目錄是否成功生成

ls -l

 

4. 給軟體包目錄`生成 repodata 元數據目錄後`

// `成功索引到軟體包`

yum repolist

截圖.png

 

8)配置 epel 源

1. 同步網路 epel 源

// 編寫 repo 配置文件

// `同步網路 epel 源`

vim epel.repo

[epel]

name=epel

baseurl=https://mirrors.cloud.tencent.com/epel/$releasever/$basearch

https://repo.huaweicloud.com/epel/$releasever/$basearch

https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch

gpgcheck=0

enabled=1

 

// 驗證

yum repolist

截圖.png

 

2. 下載相關倉庫和元數據

// 下載相關倉庫和元數據

// dnf reposync --repoid=epel --download-metadata -p /var/www/html // CentOS 8

 

// `基於 rsync 同步 epel 源`

rsync -avrt rsync://rsync.mirrors.ustc.edu.cn/epel/ /var/www/html/centos/epel // CentOS 7

 

// `下載相關 KEY 文件`

wget -P /var/www/html/centos/epel/ https://mirrors.cloud.tencent.com/epel/RPM-GPG-KEY-EPEL-8

截圖.png

 

9)CentOS 7 小細節

< Linux 小技巧 >

Yum( Yellow dog Updater, Modified)是一款廣泛用於 RedHat 和 CentOS 等系統的 RPM 軟體包管理工具。

它建立在 RPM 包管理系統之上,具備自動下載和安裝 RPM 包的能力。其中一個主要優點是它能夠自動解決依賴關係,讓我們不再需要手動逐個的下載和安裝依賴的軟體包,大大簡化了軟體包管理的過程。

並且 Yum 提供了一系列簡潔而易記的命令,用於查找、安裝、卸載單個軟體包、或一組軟體包,甚至是系統上的所有軟體包。

當我們執行 yum install httpd 時,您會註意到 YUM 工具 不僅會安裝指定的 httpd 軟體包,還會自動安裝所依賴的其他軟體包。

這是因為許多軟體包在運行時需要一些額外的組件或庫來支持其功能,這些被稱為 依賴關係。

然而,當我們執行 yum remove httpd 時,情況有所不同。YUM 工具會預設僅卸載指定的軟體包 httpd,而不會自動刪除其他可能仍然被其他軟體包使用的共用依賴項。

這是為了防止意外地卸載其他軟體包所依賴的組件,導致系統不穩定。

這種行為的目的是為了保持系統的完整性和穩定性。如果您確定某些共用依賴項不再被其他軟體包使用,可以使用 yum autoremove 命令來自動刪除不再需要的依賴項。

總之,YUM 在安裝和卸載軟體包時考慮了依賴關係,以確保系統的安全性和穩定性。

在卸載軟體包時,它會預設保留可能被其他軟體包使用的共用依賴項,除非您明確指定要刪除不再需要的依賴項。

// 安裝 httpd 軟體包

yum install httpd

 

// 卸載 httpd 軟體包

yum remove httpd

截圖.png

截圖.png

 

[ 那我們如何 乾凈卸載 所安裝軟體的所有軟體包 ]

// 顯示系統中`已經執行過的軟體包操作歷史記錄`

yum history

 

// 顯示`歷史記錄標識號為 3 `的操作的詳細信息

yum history info 3

截圖.png

 

撤銷歷史操作

// `撤消歷史記錄標識號為 3 的操作`

// 操作號為 3 的操作是一個安裝、升級或刪除軟體包的操作, 運行此命令將會嘗試將系統恢復到執行該操作之前的狀態。

yum history undo 3

截圖.png

 

[ CentOS 8 系統,安裝多少包即會卸載多少包。]

截圖.png

 

4)軟體包組

// 列出系統中`可用的軟體包組`

yum group list

 

// 安裝一個名為 "Server with GUI" 的軟體包組

// 這個軟體包組通常包含用於圖形用戶界面(GUI)的軟體和工具, 適用於伺服器系統需要有圖形界面的情況。

yum group install "Server with GUI"

截圖.png

// 安裝

yum group install "Server with GUI"

 

5)倉庫緩存

清除目錄 /var/cache/yum/ 緩存

// CentOS 7 `查看倉庫緩存路徑`

cat /etc/yum.conf

截圖.png

 

du -sh /var/cache/yum/x86_64/7/查看緩存目錄數據大小

yum clean all 清理 yum 的緩存。它會刪除所有下載的 RPM 軟體包和相關的元數據,以釋放磁碟空間。

yum makecache 用於重新生成 yum 的元數據緩存。

du -sh /var/cache/yum/x86_64/7/

 

yum clean all

 

du -sh /var/cache/yum/x86_64/7/

 

yum makecache

 

du -sh /var/cache/yum/x86_64/7/

截圖.png

 

或者使用 rm -rf 刪除緩存目錄下的數據也可以。

rm -rf /var/cache/yum/x86_64/7/*

截圖.png

 

6)命令總結

// 顯示 `倉庫列表`

yum repolist [all|enabled|disabled]

 

// 顯示 `軟體包`

yum list httpd # 指定軟體包

yum list all # 所有軟體包

yum list installed # 已安裝軟體包

 

// `安裝` 程式包

yum install epel-release # 安裝epel源

 

// `卸載` 軟體包

yum remove epel-release # 卸載epel源

 

// `查詢`

yum info xxx

yum search xxx

yum deplist xxx

yum provides xxx

 

// `升級`

yum check-update

yum update xxx

 

// `緩存`

yum clean

yum makecache

 

// `歷史記錄`

/var/log/yum.log // 日誌

yum history

yum history list

yum history info

yum history undo

 

`軟體包組`

yum grouplist

yum groupinstall

yum groupupdate

yum groupremove

yum groupinfo

 

舉例 1

// 掛載光碟鏡像

mount /dev/sr0 /mnt

 

// 基於 rpm 安裝軟體包

rpm -ivh /mnt/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm

報錯,缺依賴包。

截圖.png

 

查詢依賴來源於哪個軟體包

yum provides libapr-1.so.0

截圖.png

 

舉例 2

文件要寫全路徑,而不只是文件名,否則可能無法查詢到

// `環境準備`

yum install vsftpd

 

// `查詢` /etc/vsftpd/vsftpd.conf 屬於哪個軟體包

rpm -qf /etc/vsftpd/vsftpd.conf

 

// `卸載`軟體包

yum remove vsftpd-3.0.2-29.el7_9.x86_64

 

// 要寫`文件全路徑`才能查詢到

yum provides vsftpd.conf // 查詢`不到`

yum provides /etc/vsftpd/vsftpd.conf // 查詢`到了`

 

// 或`通配查詢`

// 嘗試查找所有包含 vsftpd.conf 文件的軟體包。

yum provides */vsftpd.conf

截圖.png

截圖.png

 

舉例 3

使用 yum 和 dnf 命令失敗最主要的原因

  1. yum 的配置文件格式或路徑錯誤

解決方法:檢查 /etc/yum.repos.d/*.repo 文件格式

  1. yum cache

解決方法:yum clean all

  1. 網路不通

解決方法:網卡配置

 

7)內核升級

範例 1

利用 elrepo 源在 CentOS 7 安裝新版內核。

截圖.png

1. 安裝 ELrepo 的倉庫配置文件

yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

 

2. 驗證是否已生成 elrepo 配置文件

ll /etc/yum.repos.d/

 

3. 驗證倉庫

yum repolist

yum repolist all

截圖.png

截圖.png

 

// 啟用

vim /etc/yum.repos.d/elrepo.repo

enable=1

 

// 驗證

yum repolist all | grep -i kernel

截圖.png

//

yum list *kernel*

 

// `安裝新內核`

yum install kernel-lt.x86_64

截圖.png

截圖.png

 

reboot

內核選擇菜單

截圖.png

 

// 查看`系統內核版本`

uname -r

截圖.png

 

如果後續發現新內核與部分軟體不相容如何卸載新內核。

// 切換回舊內核

uname -r

 

// 卸載新內核

1. yum remove

2. yum history undo 17

截圖.png

[ 大家有無想過,上述情況我們是在有互聯網環境的主機上完成內核升級的,並且我們無法指定內核版本,我們大多生產環境是沒有互聯網的,並且需要安裝指定內核版本等情況,這個時候我們就會使用到更為常見的升級內核方式編譯安裝指定內核版本。]

 

範例 2

< Linux 小技巧 >

[ 當然,其實我們還有一種方式,可以在非互聯網環境下安裝好某個軟體。]

[ 首先,我們在一臺有網路的機器將該軟體需要的所有軟體包下載至某個路徑。]

[ 而後,將該目錄拷貝至無網路的主機,執行 rpm -ivh ./*.rpm 安裝所有軟體包即可 ]

// 這個命令的目的是下載名為 kernel-lt.x86_64 的軟體包文件到指定的目錄 /data/kernel

// 不會進行實際的安裝。這對於提前獲取軟體包以備後續離線安裝非常有用。

yum install kernel-lt.x86_64 --downloadonly --downloaddir=/data/kernel

 

// 安裝所有軟體包

rpm -ivh /data/kernel/*

 

// 重啟驗證

reboot

截圖.png

 

舉例

僅下載相關的依賴包,而不安裝。< 拷貝至無網路主機安裝 >

// 這個命令的目的是下載名為 nginx 的軟體包文件到指定的目錄 /data/nginx

// 不會進行實際的安裝。這對於提前獲取軟體包以備後續離線安裝非常有用。

yum install nginx --downloadonly --downloaddir=/data/nginx

 

// 安裝所有軟體包

ll /data/nginx

rpm -ivh /data/nginx/*

 

// 驗證

systemctl start nginx

截圖.png

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Flask 框架提供了強大的 Session 模塊組件,為 Web 應用實現用戶註冊與登錄系統提供了方便的機制。結合 Flask-WTF 表單組件,我們能夠輕鬆地設計出用戶友好且具備美觀界面的註冊和登錄頁面,使這一功能能夠直接應用到我們的項目中。本文將深入探討如何通過 Flask 和 Flask-W... ...
  • 作者:京東零售 薑波 來源:京東雲開發者社區 各位小伙伴在字元串拼接時應該都見過下麵這種提示: 內容翻譯:報告StringBuffer、StringBuilder或StringJoiner的任何用法,這些用法可以用單個java.lang.String串聯來替換。使用字元串串聯可以使代碼更短、更簡單。 ...
  • JsonPath是一種能夠提取部分JSON文檔屬性、對象、數組的語法,支持條件過濾、數學運算、字元串處理等功能。JsonPath與JSON文檔就像 XPath 表達式與 XML 文檔結合使用一樣。 ...
  • 這段筆記詳細介紹了SpringMVC控制器開發的不同方面,主要圍繞控制器如何接收客戶端請求參數展開討論。它包括了不同接收請求參數的方式,從基於Servlet API的方式到簡單變數、POJO對象、一組簡單變數、一組POJO對象的接收方式,以及@RequestParam註解的使用方法。還涉及了中文請求... ...
  • 今天我們學習了網路編程和多線程技術的寫法區別。我們主要關註了在Java中使用socket和多線程結合實現伺服器處理多個客戶端連接的阻塞IO的方法,以及在Python中使用multiprocessing模塊創建多線程的方式。通過一個實例來說明瞭這些概念,並指出了需要註意的問題。其實瞭解了這些基本用法後... ...
  • Autofac是一個功能強大的依賴註入容器,它提供了一種簡單和靈活的方式來管理對象之間的依賴關係。下麵是Autofac的一些優點: 簡單易用:Autofac提供了一種直觀和簡潔的方式來註冊和解析依賴項。它的API設計得非常易於理解和使用,使得開發人員可以輕鬆地配置和管理依賴關係。 靈活性:Autof ...
  • 引言 如題,在VS中如何調試 .Net 源碼呢? 一般來說,VS2022,都是預設啟用 F12 轉到定義能夠看到源碼,如果大家發現自己無法使用 F12 查看源碼,可以在 "工具" -> "選項" -> "文本編輯器" -> "C#" -> "高級" -> "轉到定義",勾選所有選項就對了。 但是光以 ...
  • SqlSugar是一個輕量級ORM框架,專門用於.NET平臺,可以簡化資料庫操作,提高開發效率。它支持多種資料庫,包括MySQL、SqlServer、Oracle等,提供了豐富的功能和靈活的配置選項。 下麵將詳細介紹SqlSugar的使用方法及其相比其他ORM框架的優點。 一、SqlSugar的安裝 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...