如何獲取用於建構基礎 alpine linux docker 鏡像的原始碼?
為什麼我想知道這個:
目前,我使用 apt-get source 來獲取基於 Debian 的 docker 鏡像中所有包的原始碼,以在分發 docker 鏡像時遵守 GPL。
現在有幾個 docker 鏡像,我想使用基於 alpine 的 docker 鏡像,但我不知道如何獲取用於在這些 docker 鏡像中建構包的原始碼。
到目前為止我發現了什麼:
如果有 apt-get source for alpine linux 的等價物,這不是問題(文件沒有提到 apk 的源選項)
Github 頁面僅包含腳本和更新檔,但不包含確切的原始碼,但建構腳本似乎只是從上游獲取原始碼。
他們必須在某個地方提供原始碼,因為他們肯定會在 docker 鏡像中分發一些 GPL 許可的二進製文件。
如何(準確地)獲取用於建構 alpine docker 映像包的原始碼?
Alpines 包管理器
APK
沒有與dpkg
源命令 (apt-get source <PACKAGE_NAME>
) 等效的功能。要獲得與 alpine linux 上已安裝軟體包匹配的確切原始碼,您可以使用
apk
和alpine-sdk
命令的組合。在 alpine linux 上獲取已安裝軟體包的確切原始碼的步驟:
- 獲取所有已安裝軟體包的列表:
apk info
- 安裝 alpine-sdk(更多資訊請閱讀 alpine wiki):
apk --update add alpine-sdk
- 從 aports 複製您目前的 alpine 版本:
git clone --depth 1 --branch v3.13.1 git://git.alpinelinux.org/aports
遍歷已安裝的包並在 aports 文件夾中找到正確的文件夾(注意您可以獲得的包版本
apk version <PACKAGE_NAME>
等於<PACKAGE_NAME>-<PACKAGE_BUILD_VERSION>-<PACKGAE_RELEASE_VERSION>
)。獲取包原始碼(包括 alpine 特定的更新檔文件和配置文件)
(可選)您可以為源文件設置自定義目標,
export SRCDEST="/path/to/my/custom/src/destination"
否則將在目前封包件夾中創建一個 src 文件夾在與包名稱匹配的文件夾中(例如
aports/main/git
,對於git
包)abuild -F fetch verify
以 root 或abuild fetch verify
普通使用者身份執行(這將獲取APKBUILD
腳本中引用的源文件)包含 GPL 許可程式碼的包:要遵守,
GPL
您必須提供獲取的源文件和APKBUILD
腳本本身。您還必須為腳本變數中APKBUILD
列出的包提供源文件和腳本(大多數情況下,這些包是執行時依賴項的子包(見第 6 點),例如)請參閱有關和建構依賴項的問題。makedepends``APKBUILD``openssl-dev``openssl``GPL
並非每個包在 aports 中都有自己的文件夾,因為有時列出的包
apk info
將是另一個包的子包。在這種情況下,您必須獲取
.PKGINFO
文件中源變數中引用的包的原始碼,您可以使用apk fetch <sub-packagename>
命令獲取該原始碼。