steamos

標籤:steamos

Steam OS 內建 podman DNS 問題解決方法

潮流特區
MacauYeah ・2024-12-20

前幾天筆者在介紹SteamDeck 內建的podman時,沒有測試得很清楚。在長期使用下,的確有些問題需要進一步處理,這裏就補充一下解決方法。 我們前一篇介紹的 Steam Deck 內建 podman ,配上再自行安裝 podman-compose 有時會出現warning :`WARN[0002] aardvark-dns binary not found, container dns will not be enabled`。這不單影響到沒有在 service 之間自動産生 DNS 記錄,還會令互聯網功能失效,因為它會是整個 DNS 解釋功能丢失了,只是在 service 中定義 DNS 的地址並不會解決問題。筆者亦測試過,照著原本的 docker 思路,使用最傳統的做法,自己起 network ,自己起 container ,然後再串連在一起,依然會出現問題:`Error: "slirp4netns" is not supported: invalid network mode`。所以根源問題應該不在 podman-compose 上,而是在內建的 podman 依賴上。 緊急的解決方案,我們需要用到 "network_mode: host" 的方式去解決。例如以下例子 "network_mode: host" 的主要作用,就是讓 container 直接在主機的網段上執行。上面的例子中的 postgres 資料庫,它預設使用5432端口,我們並不需要再獨立宣告,即使在 container 內外,都可以直接使用 localhost:5432 溝通。而使用了主機的網段後,DNS 也可以正常運作。但這個做法的缺點就是 container 內的所有 port 都自動佔用了 host 上的使用,有時候那怕我們並不需要,它也會被暴露在外。更可能的是增加了不同 container 之間的 port 衝突。不過筆者要用於開發環境,所以這並不會是很太大的問題。

steam deck 辦公用途工具資訊 2024/12更新

潮流特區
MacauYeah ・2024-12-17

購入steam deck 已經有一年多的時間,之前亦發過一些安裝教學。適逢筆者系統重裝,又有機會重新檢視工具的可用性。 Podman / Distrobox 一項很重要的更新,Steam OS已經有預安裝podman,不需要經home brew安裝。但預裝的podman 沒有內置DNS,可能會對K8S等進階應用有影響,不過筆者只作為單機測試用,普通的podman compose沒有問題。 另一項很重要的更新,就是 distrobox,它可以經 podman 讓大家方便地執行不同的 linux 版本,想在Steam OS上使用Ubuntu?沒問題,開箱即用;想用VScode官方維護版本,沒問題,安裝指定Linux再按裝VScode就好。 詳見上一期的介紹。Steam OS 3.5更新,內建 podman, distrobox 中文輸入法 我們不需要再安裝Fcitx5 + Rime,如果大家在遊戲模式下,已經設定好中文輸入法,那麼在輸到桌面模式下,照樣以Steam Button + X Button的方式,打開內鍵輸入法。你會見到有虛擬鍵盤彈出,它會覆寫桌面模式的。此時,即使你關掉虛擬鍵盤,並用實體鍵盤,中文輸入法都會保留。不過大家要確認,彈出當下必需要是【中文】。 若然你彈出的虛擬鍵盤是英文,請按【地球】轉換到【中文】後,關掉虛擬鍵盤,再重來一次(重按Steam Button + X Button),確保彈出的時候是經【中文】覆寫。 Discovery Discovery 是 Steam OS 預設用來安裝第三方程式的地方,它經 flathub / flatpak 存取程式。但筆者一定要先強調,它提供的第三方程式,並不一定會得到原開發者的支援,它屬於打包移植之類。 例如 flathub 中可以找到 Google Chrome (https://flathub.org/apps/com.google.Chrome) ,但它實際是經過一個github 專案移植過去的 (https://github.com/flathub/com.google.Chrome)。它有提供持續更新,但筆者不保證當中有沒有任何被植入過任何不正當軟件。 相反,flathub中有一些程式是經過原開發者支援的,例如 Firefox (https://support.mozilla.org/en-US/kb/install-firefox-linux), Gnome Boxes (https://gitlab.gnome.org/GNOME/gnome-boxes), Gimp (https://www.gimp.org/downloads/) ,這類可以比較放心使用。 筆者過去使用 Discovery ,的確有遇到一些權限問題,但最後估計應該是筆者安裝 Homebrew 所影響。筆者在重裝 Steam OS 後,直接使用 Discovery,就沒有問題。過去需要經 Homebrew 安裝的東西,現在經 podman , distrobox 或 Gnome boxes 就可以了,不再需要經Homebrew去折騰一輪。而且Homebrew也不是萬能的,因為Steam OS有限制一些套件的事用,即使安裝Homebrew也解決不了。若想要完全開放套件限制或解決依賴問題,還不如直接開啟Steam OS覆寫權限,轉用Arch Linux的安裝包。

Steam OS 3.5更新,內建 podman, distrobox

潮流特區
MacauYeah ・2024-12-10

之前筆者有介紹過如何在Steam OS上安裝podman,但都必需要自行折騰一番,特別是遇到一些依賴缺失時,還要逐個除錯。在Steam OS 3.5更新之後,官方已經有預安裝的 podman,筆者建議,如果有機重刷OS,就直接使用預安裝版本就好。更重要的是,不但有預設podman,連另一個神器distrobx,也在Steam OS 3.5之後引入。 podman-compose Steam OS 3.5,雖然已經有預安裝 podman ,但在實際環境下,多安裝一個 podman-compose 可以更方便地一體化操作。 我們可以經 python 安裝。 剛安裝 podman-compose ,會出現在自己的 home 目標的隱藏目錄。最後一步就是要加到自己的 PATH 環境變數裏面。 修改保存後,就重啟。之後 podman-compose 的指令就可以任意存取了。 要補充一點,就是官方預安裝的 podman 還是缺少了一些 DNS 的元件,大家會看到 warning 提示。不過在筆者單個 container 的使用情境下,並不受影響。之後要在其上二次引用的 distrobox 也可以順利執行。 神器 distrobox 在 Steam OS 3.5 中,除了 podman 外,還有預裝 distrobox 。 distrobox 其實是基於 container 技術的擴展應用,它目標是讓用經過 container 就可以輕鬆使用到不同 linux 的發佈版本。例如我想在 Steam OS 中使用 Ubuntu ,經過 distrobox 就可以用到。道理上, distrobox 基於 container (podman) 操作的,所以它能做到的,其實自己手動經 podman 也是可以做到。但若果大家想使用跨 Linux 版本的 GUI 程式,筆者還是建議優先使用 distrobox 。因為 distrobox 預設已為不同版本的 Linux 的 Image (來源影像檔) 加入部份調整,在運行時亦有x11等互通,指令也較為簡單。 以下做來例子,示範在 Steam OS 中就執行 Ubuntu 版本的 vscode。 註: Distrobox 也不是萬能的,例如它的 Ubuntu 版本內沒有 snap ,所以不能執行 Ubuntu 版本的 Firefox。 snap will not works (firefox not works)