「緯育 2026-0331」修訂間的差異

出自頂極製作所
(建立內容為「== 軟體套件及其相關的知識 == 本次於2026-03-31的講座系統性說明在Linux(並以Windows作對照)環境下的套件安裝觀念與實務,…」的新頁面)
 
 
行 88: 行 88:
** 示範一次可節省時間;若允許,於另一OS重做以體會套件管理器(apt/yum)與相依差異。
** 示範一次可節省時間;若允許,於另一OS重做以體會套件管理器(apt/yum)與相依差異。
[[檔案:2026-0331-02.png|800px]]
[[檔案:2026-0331-02.png|800px]]
=== 套件管理系統比較(YUM/DNF vs. APT) ===
* 介紹兩種主要系統
** 講師介紹了 Linux 中兩種常見的套件管理系統,分別是 Fedora 系列的 YUM 以及 Debian 系列的 APT。
** 講師強調,目前最常見的教學方式是使用套件管理員輔助安裝。
* 常用指令對照表
** 講師將 YUM 和 APT 的常用指令整理成兩張對照表,方便學員記憶與比較。
** 兩者主要差異在於 APT 多了一個 apt update 指令,用於更新套件庫的列表,而 YUM 沒有對應的單獨步驟。
** 其他功能如檢查更新、更新單一套件、全部更新、清理暫存等,兩者都有對應的指令。
=== YUM/DNF 套件管理(Fedora/CentOS 系列) ===
* 檢查可更新的軟體
** 使用 yum check-update 指令可以列出系統中所有可更新的軟體。
** 列表會顯示目前已安裝版本和可用的新版本。
* 更新指定套件
** 使用 yum update [套件名稱] 來更新特定的軟體。
** 講師以更新 vim-common 為例,指令為 yum update vim-common。
** YUM 會自動處理相依性,更新指定套件時,會一併更新其相依的其他套件。
* 更新所有套件
** 使用 yum upgrade 指令可以更新系統中所有可更新的套件。
** 講師提到,此操作會下載所有更新檔(範例中為 134MB),可能需要一些時間。
** 更新後,大部分情況下不需要重新開機。若需要重啟服務或系統,系統通常會提示。
* 清理暫存檔案
** YUM 在更新或安裝時會下載 RPM 套件暫存檔,這些檔案若累積過多會佔用硬碟空間。
** 指令 yum clean all 可以清除所有暫存的套件檔和快取。
** CentOS 7 及之前的版本,暫存目錄位於 /var/cache/yum/。
** CentOS 8 及之後的版本,由於改用 DNF,暫存目錄位於 /var/cache/dnf/。
** 講師建議直接使用 clean all 指令,而非手動刪除檔案。
* DNF(Dandified YUM)
** DNF 是 YUM 的新一代版本,為 CentOS 8 之後的預設套件管理器。
** 優點包括程式碼更精簡、執行效率更高、支援更多 API。
** DNF 的指令與 YUM 幾乎完全相同,僅需將指令開頭的 yum 換成 dnf(例如 dnf install)。
** 在新版系統中使用 DNF 指令(如 dnf check-update)可以展現使用者對新技術的了解。
=== APT 套件管理(Debian/Ubuntu 系列) ===
* 更新套件庫列表
** apt update 是 APT 系統特有的第一步,用於從伺服器獲取最新的軟體套件清單。此操作需要管理者權限。
* 檢查可更新的軟體
** 使用 apt list --upgradable 指令可以列出所有可更新的套件。
* 更新指定套件
** 使用 apt install [套件名稱] 來更新特定的軟體。
** 講師以更新 udev 套件為例,指令為 apt install udev。
** udev 是一個重要的系統服務,它會監控核心在 /sys 目錄下偵測到的硬體變化,並在 /dev 目錄下建立對應的裝置檔案。例如,插入 USB 隨身碟時,核心會在 /sys 中記錄,udev 則在 /dev 中建立對應的裝置節點。
** 更新時,APT 同樣會處理相依性問題。
* 更新所有套件
** 使用 apt upgrade 指令可以一次更新所有列出的可更新套件。
** 講師提到 Linux 系統的更新頻率通常很高,可能每兩三天就有新的更新。
* 清理暫存檔案
** APT 下載的 DEB 套件暫存檔位於 /var/cache/apt/archives/。
** 這些暫存檔在一段時間後或重開機時可能會被系統自動清除。
** 使用者可以手動備份這些 .deb 檔案,以供未來離線安裝使用。
** 使用 apt clean 指令可以清除此目錄下的所有暫存檔。
* apt-get-upgrade vs. apt-disk-upgrade
** apt upgrade 在遇到相依性問題時,會選擇不更新該套件。
** apt-disk-upgrade 在遇到相依性問題時,會嘗試解決衝突並進行更新,但可能存在風險。講師建議優先使用前者。
=== 套件管理器設定檔 ===
* 設定檔的重要性與罕用性
** YUM/DNF 和 APT 都有其設定檔,用於指定套件來源伺服器等資訊。
** DNF(CentOS 8+)的設定檔位於特定路徑,而舊版 YUM(CentOS 7-)則在另一路徑。APT 也有其設定檔。
** 講師強調,一般使用者幾乎不需要(可能五年都碰不到一次)去修改這些設定檔。
* 修改設定檔的極端案例
** 講師分享了一個十多年前的親身經歷:當時 Fedora 的官方套件庫伺服器遭駭客入侵,所有套件被刪除,並同步到全球的鏡像站。
** 這導致上課時無法透過 yum install 安裝任何軟體。
** Fedora 官方緊急建立了一個新的伺服器主機,並指導使用者修改設定檔,將套件來源指向新的主機位址。
** 這個案例說明了在極端情況下,了解如何修改設定檔是必要的。
[[檔案:2026-0331-03.png|800px]]

於 2026年3月31日 (二) 06:23 的最新修訂

軟體套件及其相關的知識

本次於2026-03-31的講座系統性說明在Linux(並以Windows作對照)環境下的套件安裝觀念與實務,統整三種安裝方式:原始碼編譯安裝、預編譯安裝、與預編譯輔助安裝,並深入示範原始碼編譯流程的完整實作與常見工具。內容涵蓋套件與相依性概念、編譯環境準備、不同作業系統(Ubuntu、CentOS/SamOS/SameOS)差異、版本匹配策略、資安事件下的更新流程、實務用語(如「Turbo安裝」)與常見打包格式(.tar、.tar.gz/.tar.q1/.tar.q2)。

講座以兩個範例說明編譯實作:單檔案的2048(以GCC直接編譯)與具完整流程的MyMan(含./configure偵測、make、make install),並示範將執行檔放入/bin或/sbin以成為系統可直接呼叫的指令,同時補充常見make操作(make、make install、make clean、make check)與授權注意事項(如GPL)。強調在職場需正確辨識版本、使用官方來源、以工具檢測與安裝、必要時以Root權限操作,並針對資安風險建立更新流程。

套件(package)基礎與內容構成

  • 定義與形式
    • Linux中的package相當於Windows的軟體,是整合的打包或壓縮檔;解包後取得執行檔、主態檔、函式庫(dependencies)、說明文件(man、README)等,以提供服務或指令。
  • man文件的動態性
    • 系統man頁並非全包;安裝對應套件後才會出現其man頁(如安裝Nginx後可查到man nginx)。
  • 編譯器與語言環境
    • 下載原始碼需備妥相對應編譯器與語言環境(如GCC、Python、Perl);此為原始碼安裝的前置難點。
  • 相依性套件(Dependencies)
    • 缺少相依項會導致安裝或執行失敗;Linux相依性管理是安裝流程核心。類比Windows中的DirectX。
  • 權限需求
    • 多數安裝需寫入系統目錄,通常需Root權限以降低阻礙。

三種套件安裝方式與適用情境

  • 原始碼編譯安裝
    • 流程:下載原始碼 → 準備編譯環境 → 編譯 → 安裝至指定目錄 → 設定與測試。
    • 優點:取得、指定與回溯任意版本;可審視與修改原始碼(開源特性)。
    • 缺點:需投入環境與相依處理;編譯耗用CPU/記憶體/磁碟,若只編一次可能資源浪費。
    • 適用:需「超新」或特定版本(系統庫無或版本落後)、需自訂修改。
  • 預編譯安裝
    • 定義:由作業系統或第三方在相同OS/版本編譯後打包,直接安裝。
    • 要點:需與OS及版本精準匹配(如Ubuntu 24.04使用對應包;CentOS/SamOS包不可在Ubuntu用)。
    • 優勢:省略編譯與環境準備;安裝包記錄路徑與檔案放置,自動處理。
  • 預編譯輔助安裝
    • 定義:在預編譯基礎上加入安裝前檢測與相依自動補齊(如apt、yum等)。
    • 行為:解包/安裝時檢測缺失並詢問或自動安裝相依;一行指令可能連帶安裝多個相依套件。
    • 缺點:便利但抽象化細節,教學常以一行指令略過脈絡。

作業系統差異與安裝策略

  • OS與版本差異
    • Ubuntu與SamOS/CentOS等在安裝方式、主態檔、設定與指令均有差異;需按系統選用正確來源與工具。
    • 相同套件在不同系統的版本不同(例:VI、nano),影響策略與選版。
  • 版本匹配策略
    • 預編譯安裝需精準匹配OS與版本;跨系統包通常不可用。
    • 套件管理工具預設裝最新版,若需舊版則改用預編譯包尋找歷史版本;若需最新版且庫未提供,改用原始碼編譯。

原始碼編譯安裝:概念、流程與工具

  • 概念與作者提供功能差異
    • 原始碼不可直接執行;作者可能提供或不提供環境偵測(./configure)、編譯(make)、安裝(make install)與主態檔。
  • 一般流程
    • 研究與選包:先評估專案來源、分支品質與維護狀態(GitHub常有多分支/派生)。
    • 下載與解包:wget下載 → tar解壓(-xvf;gzip壓縮加-z)。
    • 環境偵測:./configure檢查環境,期待OK,避免Fail/Error/No並依提示補齊。
    • 編譯與安裝:make → make install(建立目錄與放置檔案)。
    • 主態檔設定、執行與測試;必要時make clean清理、make check檢查。
  • 指令與工具
    • 下載:wget。
    • 解壓:tar -xvf、-xzvf(視壓縮格式)。
    • 編譯:make(依Makefile)。
    • 安裝:make install。
    • 清理/檢查:make clean、make check。

實作範例

  • 2048(單一C原始檔)
    • 編譯環境:Ubuntu以apt install gcc,CentOS/SameOS以yum install gcc。
    • 編譯與執行:gcc -o 2048 2048.c;以./2048在當前目錄執行。
    • 成為系統指令:將執行檔搬至/bin或/sbin,之後可直接輸入「2048」呼叫。
  • MyMan(小精靈,完整流程)
    • 下載與解壓:tar解包後進入目錄檢視內容。
    • 相依安裝:以apt或yum安裝make、gcc與其他需求(相依項較多)。
    • 流程:./configure → make(warning可忽略,error需處理) → make install。
    • 安裝後可於任意目錄直接輸入「myman」執行;初次啟動顯示版權資訊。
    • 常用維護:make clean清理、make check檢查;必要時重編。
  • PATH與系統路徑
    • ./ 程式名執行當前目錄;直接輸入程式名則需位於PATH目錄(如/bin、/sbin)或自行加入PATH。
    • /bin為共用指令,/sbin為系統管理指令;可將自編程式置於其下以便系統層級呼叫。
  • 授權與修改
    • GPL等授權需遵循散佈與二次開發規範;可在合規下調整顏色、字型等進行個人化或二次開發。

系統與套件更新流程(資安情境)

  • 事件識別與盤點
    • 遭遇資安新聞時,先盤點公司是否使用該套件與版本;再查官方公告或可信來源確認受影響版本與修補方案。
  • 更新與風險
    • 依官方指引更新;未更新將曝露於網路掃描與利用鏈(掃描→識別版本/服務→嘗試漏洞利用),需及時修補以降風險。

「Turbo安裝」與打包格式實務

  • 名詞與用法
    • 「Turbo安裝」實務上指原始碼編譯安裝;TAR為打包(不壓縮),「Turbo」意涵為「包起來」的檔案。
    • 職場常用語:「你就Turbo裝就好」、「去下載Turbo」=到官方下載原始碼打包檔。
  • 檔案尾綴
    • .tar(未壓縮)、.tar.gz/.tar.q1/.tar.q2(壓縮形式不同);解包後閱讀README與需求清單,作者通常不提供個別支援。

Windows對照(輔助理解)

  • 安裝方式對比
    • 官方網站、Microsoft/Windows Store或第三方集合站下載;型態包含安裝檔(向導)、免安裝、解壓後直接執行。
  • 相依性範例
    • DirectX支援圖形/音效/控制器;完整安裝會自動處理,相較手動/破解流程需自行補齊。

教材與課程節奏

  • 教材結構
    • 檔案與步驟對應兩套系統(CentOS與Ubuntu):單一原始碼到編譯器(2048)與完整流程,可擇一或兩者皆做以比較差異。
  • 操作建議
    • 示範一次可節省時間;若允許,於另一OS重做以體會套件管理器(apt/yum)與相依差異。

2026-0331-02.png

套件管理系統比較(YUM/DNF vs. APT)

  • 介紹兩種主要系統
    • 講師介紹了 Linux 中兩種常見的套件管理系統,分別是 Fedora 系列的 YUM 以及 Debian 系列的 APT。
    • 講師強調,目前最常見的教學方式是使用套件管理員輔助安裝。
  • 常用指令對照表
    • 講師將 YUM 和 APT 的常用指令整理成兩張對照表,方便學員記憶與比較。
    • 兩者主要差異在於 APT 多了一個 apt update 指令,用於更新套件庫的列表,而 YUM 沒有對應的單獨步驟。
    • 其他功能如檢查更新、更新單一套件、全部更新、清理暫存等,兩者都有對應的指令。

YUM/DNF 套件管理(Fedora/CentOS 系列)

  • 檢查可更新的軟體
    • 使用 yum check-update 指令可以列出系統中所有可更新的軟體。
    • 列表會顯示目前已安裝版本和可用的新版本。
  • 更新指定套件
    • 使用 yum update [套件名稱] 來更新特定的軟體。
    • 講師以更新 vim-common 為例,指令為 yum update vim-common。
    • YUM 會自動處理相依性,更新指定套件時,會一併更新其相依的其他套件。
  • 更新所有套件
    • 使用 yum upgrade 指令可以更新系統中所有可更新的套件。
    • 講師提到,此操作會下載所有更新檔(範例中為 134MB),可能需要一些時間。
    • 更新後,大部分情況下不需要重新開機。若需要重啟服務或系統,系統通常會提示。
  • 清理暫存檔案
    • YUM 在更新或安裝時會下載 RPM 套件暫存檔,這些檔案若累積過多會佔用硬碟空間。
    • 指令 yum clean all 可以清除所有暫存的套件檔和快取。
    • CentOS 7 及之前的版本,暫存目錄位於 /var/cache/yum/。
    • CentOS 8 及之後的版本,由於改用 DNF,暫存目錄位於 /var/cache/dnf/。
    • 講師建議直接使用 clean all 指令,而非手動刪除檔案。
  • DNF(Dandified YUM)
    • DNF 是 YUM 的新一代版本,為 CentOS 8 之後的預設套件管理器。
    • 優點包括程式碼更精簡、執行效率更高、支援更多 API。
    • DNF 的指令與 YUM 幾乎完全相同,僅需將指令開頭的 yum 換成 dnf(例如 dnf install)。
    • 在新版系統中使用 DNF 指令(如 dnf check-update)可以展現使用者對新技術的了解。

APT 套件管理(Debian/Ubuntu 系列)

  • 更新套件庫列表
    • apt update 是 APT 系統特有的第一步,用於從伺服器獲取最新的軟體套件清單。此操作需要管理者權限。
  • 檢查可更新的軟體
    • 使用 apt list --upgradable 指令可以列出所有可更新的套件。
  • 更新指定套件
    • 使用 apt install [套件名稱] 來更新特定的軟體。
    • 講師以更新 udev 套件為例,指令為 apt install udev。
    • udev 是一個重要的系統服務,它會監控核心在 /sys 目錄下偵測到的硬體變化,並在 /dev 目錄下建立對應的裝置檔案。例如,插入 USB 隨身碟時,核心會在 /sys 中記錄,udev 則在 /dev 中建立對應的裝置節點。
    • 更新時,APT 同樣會處理相依性問題。
  • 更新所有套件
    • 使用 apt upgrade 指令可以一次更新所有列出的可更新套件。
    • 講師提到 Linux 系統的更新頻率通常很高,可能每兩三天就有新的更新。
  • 清理暫存檔案
    • APT 下載的 DEB 套件暫存檔位於 /var/cache/apt/archives/。
    • 這些暫存檔在一段時間後或重開機時可能會被系統自動清除。
    • 使用者可以手動備份這些 .deb 檔案,以供未來離線安裝使用。
    • 使用 apt clean 指令可以清除此目錄下的所有暫存檔。
  • apt-get-upgrade vs. apt-disk-upgrade
    • apt upgrade 在遇到相依性問題時,會選擇不更新該套件。
    • apt-disk-upgrade 在遇到相依性問題時,會嘗試解決衝突並進行更新,但可能存在風險。講師建議優先使用前者。

套件管理器設定檔

  • 設定檔的重要性與罕用性
    • YUM/DNF 和 APT 都有其設定檔,用於指定套件來源伺服器等資訊。
    • DNF(CentOS 8+)的設定檔位於特定路徑,而舊版 YUM(CentOS 7-)則在另一路徑。APT 也有其設定檔。
    • 講師強調,一般使用者幾乎不需要(可能五年都碰不到一次)去修改這些設定檔。
  • 修改設定檔的極端案例
    • 講師分享了一個十多年前的親身經歷:當時 Fedora 的官方套件庫伺服器遭駭客入侵,所有套件被刪除,並同步到全球的鏡像站。
    • 這導致上課時無法透過 yum install 安裝任何軟體。
    • Fedora 官方緊急建立了一個新的伺服器主機,並指導使用者修改設定檔,將套件來源指向新的主機位址。
    • 這個案例說明了在極端情況下,了解如何修改設定檔是必要的。

2026-0331-03.png