Package-Management

優化向 USB 媒體添加額外軟體包以進行 alpine linux 離線安裝?

  • February 27, 2022

我們想為 Alpine Linux 製作一個自動安裝程序,以便在嵌入式 x86 pc 上執行我們自己的應用程序。我們的應用程序設置需要可下載媒體上不存在的包,我們需要它獨立執行並離線執行。我已經實現了我們需要的功能,但這需要 USB 記憶棒上存在“主”和“社區”儲存庫。

到目前為止,我已經解決了這個問題,方法是在 ISO 模式下使用 Rufus 將 ISO 映像刻錄到 USB 記憶棒(使其可寫),然後基本上將鏡像同步到 USB 記憶棒(到/media/usb/alpine)並手動將此目錄添加/etc/apk/repositories到需要。這很好用。

不幸的是,這是一個將近 20 GB 的下載量,這意味著在我現在可用的 USB 記憶棒上手動複製到 USB 記憶棒的步驟需要很長時間(目前為 2 小時)。SSD U 盤大約需要 20 分鐘。

因此,我一直在查看setup-apkcache並發現我們只需要不到 100 MB 的包,但從我的實驗中看來,setup-disk以“sys”模式(在後台執行lbu package -)安裝到本地硬碟並不使用這些包在記憶體中,但希望從/etc/apk/repositories.

使用apk記憶體是否可行?還是我在叫錯樹?

為了將來參考,我最終遇到了一種情況,即我們不得不在沒有 SSE 和 TSLIB 的情況下重新編譯 Qt5,因此我分叉了 Alpine Linux aports 儲存庫,並將我們的本地分支從 3.14-stable 分支中取出,以在 docker 映像中重建包。

事實證明,這個 docker 鏡像也非常適合建構 ISO。通過創建一個新的配置文件來根據需要scripts/mkimg.XXX.sh調整profile_extended和添加額外的包,$apks我們可以讓 Gitlab 在幾分鐘內使用我們修改過的包使用官方包儲存庫的凍結內部鏡像建構一個新的 ISO,並將其儲存為工件。這產生了一個 620 MB 的 ISO,它可以足夠快地用於我們的目的。

如果我們有更多的時間,我會根據我們需要的包創建我們的自定義有效負載作為 Alpine Linux 包,因此我們只需要在建構腳本中添加該包並且透明地拉入依賴項。我們也可以從擁有一個PXE netboot 版本也在開發過程中。下次…


編輯:Alpine 技術指導委員會於 2022 年 1 月決定“盡最大努力繼續使用 i586,指定平台必須正確實現 i586 才能得到支持(例如,沒有 Vortex86),如果上游僅支持 i686,某些軟體包可能需要 i686 (例如那些有 JIT 的人)。”。對於我們的特殊用法,這意味著我們需要繼續使用單獨的編譯樹。

https://gitlab.alpinelinux.org/alpine/tsc/-/blob/master/minutes/2022-01-11.md

引用自:https://unix.stackexchange.com/questions/668789