MAD*_*ppy 7 apt docker alpine-linux
为什么我想知道这个:
目前,我使用 apt-get source 来获取基于 Debian 的 docker 镜像中所有包的源代码,以在我分发 docker 镜像时遵守 GPL。
现在有几个 docker 镜像,我想使用基于 alpine 的 docker 镜像,但我不知道如何获取用于在这些 docker 镜像中构建包的源代码。
到目前为止我发现了什么:
如果 alpine linux 的 apt-get 源有等价物,这不会是问题(文档没有提到 apk 的源选项)
在Github的页面只包含脚本和补丁,但没有确切的源代码,但随后的构建脚本似乎只是从上游获得源代码。
他们必须在某处提供源代码,因为他们肯定会在 docker 镜像中分发一些 GPL 许可的二进制文件。
如何获取(准确)用于构建 alpine docker 镜像包的源代码?
Alpines 包管理器APK
没有与dpkg
source 命令 ( apt-get source <PACKAGE_NAME>
)等效的命令。
要获得与 alpine linux 上安装的软件包匹配的确切源代码,您可以使用apk
和alpine-sdk
命令的组合。
在 alpine linux 上获取已安装软件包的确切源代码的步骤:
获取所有已安装软件包的列表:
apk info
Run Code Online (Sandbox Code Playgroud)
安装 alpine-sdk(有关更多信息,请阅读 alpine wiki):
apk --update add alpine-sdk
Run Code Online (Sandbox Code Playgroud)
从 aports 克隆当前的 alpine 版本:
git clone --depth 1 --branch v3.13.1 git://git.alpinelinux.org/aports
Run Code Online (Sandbox Code Playgroud)
遍历已安装的软件包并在 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
作为根或abuild fetch verify
作为普通用户(这将取在引用的源文件APKBUILD
脚本)
包含 GPL 许可代码的包:为了遵守,GPL
您必须提供获取的源文件和APKBUILD
脚本本身。您也可以提供源文件,并APKBUILD
在列出的软件包脚本makedepends
中的变量APKBUILD
脚本(大多数时候这些软件包例如openssl-dev
是子包(见的运行时依赖如6点)openssl
)看到了这个问题有关GPL
,并构建依赖关系。
并非每个包在 aports 中都有自己的文件夹,因为有时列出的包apk info
将是另一个包的子包。
在这种情况下,您必须获取.PKGINFO
文件中origin 变量中引用的包的源代码,您可以使用该apk fetch <sub-packagename>
命令获取该源代码。
归档时间: |
|
查看次数: |
2238 次 |
最近记录: |