開發(fā)工具(一)】Linux包管理器與軟件生態(tài)全解析:從國內(nèi)鏡像源到y(tǒng)um/apt實(shí)戰(zhàn))
目錄一、前言二、軟件包管理器1.什么是軟件包2.Linux軟件生態(tài)1.Linux下載軟件的過程Ubuntu、Centos、other2.Linux軟件包生態(tài)問題1. 操作系統(tǒng)自身內(nèi)核與基礎(chǔ)架構(gòu)2. 軟件體系應(yīng)用生態(tài)3. 官網(wǎng)文檔開發(fā)與使用指南4. 社區(qū)論壇用戶互助與氛圍5. 維護(hù)更新速度生命周期與信任度6. 富有針對性的客戶群體市場定位3.yum/apt的具體操作1.搜索軟件包2.安裝軟件包3.卸載軟件包4.軟件依賴問題?編輯4.安裝源提問在使用yum/apt安裝軟件時(shí)它們是怎樣找到目標(biāo)軟件包的具體位置的三、小結(jié)一、前言以下是?些國內(nèi)Linux軟件安裝源的官?鏈接[由?????成]1.阿?云官?鏡像站官?鏈接https://developer.aliyun.com/mirror/阿?云提供了豐富的Linux發(fā)?版鏡像包括CentOS、Ubuntu、Debian等??可以通過該鏡像站快速下載和更新軟件包。2.清華?學(xué)開源軟件鏡像站官?鏈接https://mirrors.tuna.tsinghua.edu.cn/清華?學(xué)鏡像站提供了多種Linux發(fā)?版的鏡像以及Python、Perl、Ruby等編程語?的擴(kuò)展包。該鏡像站還提供了豐富的?檔和教程幫助??更好地使?這些軟件包。3.中國科學(xué)技術(shù)?學(xué)開源鏡像站官?鏈接http://mirrors.ustc.edu.cn/中科?鏡像站提供了多種Linux發(fā)?版的鏡像以及常?的編程語?和開發(fā)?具。??可以通過該鏡像站?便地獲取所需的軟件包和?具。4.北京交通?學(xué)?由與開源軟件鏡像站官?鏈接https://mirror.bjtu.edu.cn/北交?鏡像站提供了多種Linux發(fā)?版的鏡像以及相關(guān)的軟件倉庫和?具。該鏡像站還提供了詳細(xì)的?檔和指南幫助??配置和使?這些軟件源。5.中國科學(xué)院軟件研究所鏡像站ISCAS官?鏈接http://mirror.iscas.ac.cn/ISCAS鏡像站提供了多種Linux發(fā)?版、編程語?和開發(fā)?具的鏡像。??可以通過該鏡像站快速獲取所需的軟件包和更新。6.上海交通?學(xué)開源鏡像站官?鏈接https://ftp.sjtu.edu.cn/上海交?鏡像站提供了豐富的Linux軟件資源包括多種發(fā)?版的鏡像和軟件倉庫。??可以通過該鏡像站?便地下載和安裝所需的軟件包。7.?易開源鏡像站官?鏈接http://mirrors.163.com/?易鏡像站提供了多種Linux發(fā)?版的鏡像以及相關(guān)的軟件倉庫和?具。該鏡像站還提供了便捷的搜索功能幫助??快速找到所需的軟件包。此外還有?些其他的國內(nèi)鏡像源如搜狐開源鏡像站等但可能由于時(shí)間變化或政策調(diào)整部分鏡像站的鏈接或狀態(tài)可能有所變動(dòng)。因此建議??在使?前訪問官??站或咨詢相關(guān)社區(qū)以獲取最新的信息和幫助。二、軟件包管理器1.什么是軟件包1.在Linux下安裝軟件, ?個(gè)通常的辦法是下載到程序的源代碼, 并進(jìn)?編譯, 得到可執(zhí)?程序但是這樣太麻煩了, 于是有些?把?些常?的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在?個(gè)服務(wù)器上, 通過包管理器可以很?便的獲取到這個(gè)編譯好的軟件包, 直接進(jìn)?安。2.軟件包和軟件包管理器, 就好? App 和 應(yīng)?商店 這樣的關(guān)系。3.yum(Yellow dog Updater, Modified)是Linux下?常常?的?種包管理器. 主要應(yīng)?在Fedora,RedHat, Centos等發(fā)?版上。4.Ubuntu主要使?aptAdvanced Package Tool作為其包管理器。apt同樣提供了?動(dòng)解決依賴關(guān)系、下載和安裝軟件包的功能。2.Linux軟件生態(tài)1.Linux下載軟件的過程Ubuntu、Centos、other2.Linux軟件包生態(tài)問題評判一個(gè)操作系統(tǒng)的好壞核心是看這個(gè)操作系統(tǒng)的生態(tài)是否完整。操作系統(tǒng)生態(tài)包含哪些部分1. 操作系統(tǒng)自身內(nèi)核與基礎(chǔ)架構(gòu)這是生態(tài)的基石。核心內(nèi)容內(nèi)核的穩(wěn)定性、性能、安全性、硬件兼容性驅(qū)動(dòng)支持、資源調(diào)度能力等。說明操作系統(tǒng)本身如果不穩(wěn)定、漏洞百出或?qū)τ布С謽O差整個(gè)生態(tài)就無從談起。它是支撐起上層建筑的地基。例如Windows的易用性、macOS的軟硬結(jié)合、Linux的開源與高度可定制構(gòu)成了各自生態(tài)的底色。2. 軟件體系應(yīng)用生態(tài)這是決定用戶是否愿意使用該操作系統(tǒng)的核心驅(qū)動(dòng)力。核心內(nèi)容辦公軟件、游戲、開發(fā)工具、行業(yè)專業(yè)軟件等。說明用戶買電腦/服務(wù)器不是為了用操作系統(tǒng)本身而是為了用上面的軟件。著名的例子是微軟的Windows Phone它失敗的核心原因就是軟件體系貧瘠缺少主流App導(dǎo)致用戶流失。反之Windows和Android之所以強(qiáng)大正是因?yàn)樗鼈儞碛泻A康能浖С帧?. 官網(wǎng)文檔開發(fā)與使用指南這是連接系統(tǒng)與開發(fā)者的橋梁。核心內(nèi)容API文檔、系統(tǒng)架構(gòu)說明、最佳實(shí)踐教程、故障排查手冊等。說明高質(zhì)量的官方文檔可以極大降低開發(fā)者的學(xué)習(xí)門檻吸引更多人基于該系統(tǒng)開發(fā)軟件從而反哺“軟件體系”。例如Apple和微軟的開發(fā)者文檔極其詳盡這保證了第三方開發(fā)者的開發(fā)效率。4. 社區(qū)論壇用戶互助與氛圍這是生態(tài)的活水與黏合劑。核心內(nèi)容開發(fā)者問答、用戶經(jīng)驗(yàn)分享、開源社區(qū)、Bug反饋、技術(shù)討論等。說明官網(wǎng)文檔通常是冰冷和官方的而社區(qū)如Stack Overflow、Reddit、國內(nèi)的各種開發(fā)者社區(qū)提供的是實(shí)戰(zhàn)經(jīng)驗(yàn)的交流。一個(gè)活躍的社區(qū)能快速解決問題甚至反向推動(dòng)系統(tǒng)迭代。Linux生態(tài)的繁榮很大程度上得益于其極其龐大和活躍的開源社區(qū)如Arch Wiki。5. 維護(hù)更新速度生命周期與信任度這是用戶和開發(fā)者安全感的來源。核心內(nèi)容系統(tǒng)補(bǔ)丁發(fā)布頻率、漏洞修復(fù)速度、大版本迭代節(jié)奏、長期支持LTS策略等。說明沒有絕對安全的系統(tǒng)只有不斷修補(bǔ)的系統(tǒng)。如果更新太慢會(huì)被黑客攻擊和拋棄更新太快則可能導(dǎo)致系統(tǒng)不穩(wěn)定或者讓開發(fā)者疲于適配。如何平衡“快速迭代”與“穩(wěn)定可靠”是操作系統(tǒng)維護(hù)的核心課題。6. 富有針對性的客戶群體市場定位這是生態(tài)的指路明燈。核心內(nèi)容定位目標(biāo)用戶如服務(wù)器運(yùn)維、游戲玩家、設(shè)計(jì)師、辦公白領(lǐng)、嵌入式設(shè)備等。說明沒有任何一個(gè)操作系統(tǒng)能滿足所有人。Windows主打大眾辦公與游戲macOS主打創(chuàng)意設(shè)計(jì)與開發(fā)者Linux主打服務(wù)器與極客鴻蒙HarmonyOS主打萬物互聯(lián)。精準(zhǔn)的客戶群體定位決定了系統(tǒng)該優(yōu)先發(fā)展什么軟件、提供什么樣的文檔、以及如何制定更新策略。3.yum/apt的具體操作1.搜索軟件包通過 yum list 命令可以羅列出當(dāng)前?共有哪些軟件包. 由于包的數(shù)?可能?常之多, 這?我們需要使? grep 命令只篩選出我們關(guān)注的包.Centosyum list | grep 包Ubuntuapt search 包# Centos $ yum list | grep lrzsz lrzsz.x86_64 0.12.20-36.el7 base # Ubuntu $ apt search lrzsz Sorting... Done Full Text Search... Done cutecom/focal 0.30.3-1build1 amd64 Graphical serial terminal, like minicom lrzsz/focal,now 0.12.21-10 amd64 [installed] Tools for zmodem/xmodem/ymodem file transfer $ apt show lrzsz Package: lrzsz Version: 0.12.21-10 Priority: optional Section: universe/comm Origin: Ubuntu Maintainer: Ubuntu Developers ubuntu-devel-discusslists.ubuntu.com Original-Maintainer: Martin A. Godisch godischdebian.org ...注意事項(xiàng):軟件包名稱: 主版本號.次版本號.源程序發(fā)?號-軟件包的發(fā)?號.主機(jī)平臺(tái).cpu架構(gòu)。x86_64 后綴表?64位系統(tǒng)的安裝包, i686 后綴表?32位系統(tǒng)安裝包. 選擇包時(shí)要和系統(tǒng)匹配。el7 表?操作系統(tǒng)發(fā)?版的版本. el7 表?的是 centos7/redhat7. el6 表? centos6/redhat6。最后?列, base 表?的是 軟件源 的名稱, 類似于 ??應(yīng)?商店, 華為應(yīng)?商店 這樣的概念。Ubuntu 有上述有詳細(xì)介紹。2.安裝軟件包# Centos$ sudo yum install -y 包# Ubuntu$ sudo apt install -y 包yum/apt 會(huì)?動(dòng)找到都有哪些軟件包需要下載, 這時(shí)候敲 y 確認(rèn)安裝。出現(xiàn) complete 字樣或者中間未出現(xiàn)報(bào)錯(cuò), 說明安裝完成。3.卸載軟件包# Centos1sudo yum remove [-y] 包# Ubuntusudo apt remove [-y] 包4.軟件依賴問題什么是軟件依賴一個(gè)程序很少是完全自包含的。它通常會(huì)調(diào)用系統(tǒng)提供的動(dòng)態(tài)鏈接庫Linux 下.soWindows 下.dll依賴某個(gè)運(yùn)行環(huán)境如 Python、Java、.NET依賴其他第三方庫如 OpenSSL、zlib、Qt甚至依賴特定版本的編譯器運(yùn)行時(shí)比如你在 Linux 上裝一個(gè)nginx它可能依賴libpcre、zlib、openssl等。如果這些庫沒裝或版本不對nginx就啟動(dòng)不了。包管理器yum、apt會(huì)自動(dòng)下載并安裝所有依賴還會(huì)處理版本沖突。4.安裝源提問在使用yum/apt安裝軟件時(shí)它們是怎樣找到目標(biāo)軟件包的具體位置的引出-配置文件安裝軟件前系統(tǒng)里已經(jīng)配置好了軟件倉庫repo。這些配置寫在yum/etc/yum.repos.d/下的.repo文件穩(wěn)定軟件源和拓展軟件源apt/etc/apt/sources.list和/etc/apt/sources.list.d/下的文件注意拓展軟件源默認(rèn)沒有安裝需要大家手動(dòng)安裝。三、小結(jié)到這里關(guān)于Linux軟件安裝與包管理器的內(nèi)容就告一段落啦回顧一下我們從國內(nèi)常用的鏡像源講起解決了“下載慢”的痛點(diǎn)接著弄懂了軟件包和包管理器的關(guān)系——yum和apt就像是Linux世界的“應(yīng)用商店”幫我們自動(dòng)解決依賴、下載和安裝。更重要的是我們深入探討了操作系統(tǒng)生態(tài)的六大核心部分明白了評判一個(gè)系統(tǒng)的好壞絕不僅僅是看內(nèi)核更要看軟件體系、社區(qū)、文檔等全方位的建設(shè)。最后我們還揭開了yum/apt“找包”的底層邏輯倉庫配置 元數(shù)據(jù)索引 相對路徑拼接 最終下載地址。當(dāng)然實(shí)戰(zhàn)部分也不能少。yum list | grep搜索、yum install -y安裝、yum remove卸載這些命令雖然簡單但卻是日常運(yùn)維中使用頻率最高的操作。如果這篇文章對你有幫助不妨點(diǎn)贊、收藏、關(guān)注三連支持一下你的鼓勵(lì)是我持續(xù)更新的最大動(dòng)力我們下篇見