套件庫與訂閱提醒:安裝後的第一個意外
全新安裝後,更新會因驗證錯誤而失敗,但其實什麼都沒壞:預設的套件庫是付費的那一個。本條目說明各個套件庫、它們之間真正的差異,以及論壇上流傳的那行危險指令。
AtlasPVE ·
本條目涵蓋以下問題
- proxmox enterprise 套件庫 錯誤
- proxmox no-subscription 套件庫
- proxmox 更新 401 錯誤
- proxmox 訂閱提醒
- proxmox 如何更換套件庫
安裝完成後,任何人第一件會嘗試的事就是更新,而得到的回應是一個驗證錯誤。什麼都沒有壞:預設的套件庫是付費的那一個,它需要訂閱金鑰。
三個套件庫,三種用途
企業版套件庫。付費,提供經過最長時間測試的套件。擁有訂閱的安裝使用這個套件庫。
免訂閱套件庫。免費,提供相同的套件。差異不在內容,而在等待時間:套件會更早進入這裡,也就是說執行過它們的人比較少。
測試套件庫。尚未正式發行的套件。它的存在是為了試用,而不是給承載實際工作的機器使用。
這裡最常見的誤解是:免費套件庫並不是變通辦法,而是 Proxmox 官方正式提供的選項。差異不在授權,而在成熟所需的時間。
該選哪一個
對於真正承載工作的機器,有兩個誠實的選項:不是使用企業版套件庫,就是使用免費套件庫並自己養成等待的習慣。後者的意思是不在套件一出現就立刻安裝,而是等幾天、閱讀版本說明。在付費這一邊,供應商所販售的內容中,很大一部分正是這段等待期。
真正的危險是混用套件庫
同時啟用穩定版與測試版套件庫,會從非預期的系列拉取套件,而要退回原狀很困難。啟用套件庫時該問的不是能不能用,而是這是否等於決定這台機器從此由哪個系列供應套件。
訂閱提醒
開啟面板時出現的提醒只是提醒,而不是限制。沒有任何功能被關閉,也沒有任何東西變慢。或許會覺得它很煩,但它沒有任何功能上的影響。
⚠️ 論壇上流傳的那行指令
網路上流傳著一行現成的指令,用來讓那則提醒消失,切勿執行。原因經過實際測量:
那行指令試圖修改介面函式庫中的一個條件判斷。但在它所使用的正規表示式語法中,管線字元代表的是邏輯上的或,而不是普通字元。當 JavaScript 的雙管線原樣寫入時,兩個或運算子之間出現的是一個空的替代分支,而空的替代分支會在檔案中的每一個位置都比對成功。在真實檔案的副本上實際嘗試,結果是:26458 行中有 26458 行被修改,檔案中 false 的出現次數從 558 變成 26458。也就是說,執行那行指令的管理員會毀掉整個介面函式庫。
除此之外,目標條件甚至不在同一行;Proxmox 把它分散在六行之中。所以那個以行為單位的指令,從一開始就不可能找到正確的位置。
一般性的教訓更深一層:從論壇複製的指令,會以執行者自己的權限在自己的機器上執行,而且沒有人會檢查結果。如果看不懂它在做什麼,就不要在承載實際工作的機器上執行它。
Atlas 的做法
Atlas 可以從面板更換套件庫,因此不必編輯檔案,就能決定機器由哪個系列供應套件。
讓訂閱提醒消失與恢復顯示的功能也在面板中,這項工作建立在三件事之上。所使用的模式對空白字元寬容,但對條件本身要求精確:如果 Proxmox 改變了格式,它仍然能比對成功;如果 Proxmox 真的改變了條件,它就不會比對成功,此時不會做任何事。寫入之後,檔案會被重新讀回並驗證;如果預期的結果不在其中,就會還原備份。而替換進去的文字帶有一個標記,因此這台機器是否已修補的問題,能得到精確的答案,而不是靠猜測。
這三個步驟,全都是在測量過上述單行指令的危險之後才加入的。
資料來源
Proxmox 官方文件。內容為英文,且在此主題上以官方文件為準。