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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...