
Apache Airflow Livy Provider 从源码安装的官方流程签名校验、PyPI 制品验证与构建细节【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow本文围绕 Apache Airflow 仓库中apache.livyprovider 的官方文档 installing-providers-from-sources.rst 展开讲清楚如何从 Apache 官方下载站获取apache-airflow-providers-apache-livy的源码包source/sdist/whl如何用 PGP 签名与 SHA512 校验确认发布物的完整性如何验证 PyPI 上发布的.whl包与官方发布物一致并结合仓库源码说明该 provider 包的构建系统与打包内容帮助你在对供应链可信度有要求的场景中安全地安装和复核 Airflow provider 包。文档来源与适用范围该文档本身是一个薄包装providers/apache/livy/docs/installing-providers-from-sources.rst 全文只有一行 RST include 指令真正的正文来自所有 provider 共享的模板 installing-providers-from-sources.rst。模板中使用package_name、package_version等 Jinja 变量由文档构建扩展在渲染时注入当前 provider 的实际值变量定义可参考 provider_conf.py。对于 Livy provider当前仓库中 providers/apache/livy/pyproject.toml 给出的包名为apache-airflow-providers-apache-livy版本为4.6.1因此本文所有示例均基于该版本。官方下载基址为https://downloads.apache.org/airflow/providers模板变量base_url镜像加速地址为https://www.apache.org/dyn/closer.lua/airflow/providers模板变量closer_lua_url见 provider_conf.py 中第 244~249 行的定义。三类官方发布包source、sdist 与 whl共享模板将可下载发布物分为两类来源读者需要理解它们的定位差异Source package源码包Apache 软件基金会ASF的官方发布物。适合希望自己从源码构建包、并确认包内容确实来自仓库源码的用户可以对其校验和与签名进行完整验证。Livy 所在发布批次的源码包形如apache_airflow_providers-release-date-source.tar.gz附.asc签名与.sha512校验文件。sdist / whl 包便捷包从同一源码构建出的预发布物仍然可以校验来源、校验和与签名。对 Livy 4.6.1 而言具体产物为sdistapache_airflow_providers_apache_livy-4.6.1.tar.gzwheelapache_airflow_providers_apache_livy-4.6.1-py3-none-any.whl两者均提供.ascPGP 签名与.sha512摘要附属文件。除官方下载站外模板同时说明该 provider 与大多数 Python 包一样可以通过pip install apache-airflow-providers-apache-livy从 PyPI 安装并通过下拉框选择其他历史版本。Livy provider 对 Airflow 的最低版本要求为2.11.0完整依赖见 providers/apache/livy/docs/index.rst 中的 Requirements 表格PIP package版本要求apache-airflow2.11.0apache-airflow-providers-http6.0.1apache-airflow-providers-common-compat1.12.0aiohttp3.14.0模板最后提示如果你希望直接从源码安装可下载上文 source 链接其中包含INSTALL文件给出构建和安装该 provider 的详细说明本仓库根目录的 INSTALL 即对应文档入口。发布物完整性验证Release integrity模板强调必须用 PGP 或 SHA 签名验证下载文件的完整性并且建议从主分发目录而非镜像获取 KEYS 与.asc签名文件。导入发布者的 PGP 公钥官方 KEYS 文件位于https://downloads.apache.org/airflow/KEYS。模板给出三种导入方式gpg -i KEYS或pgpk -a KEYS或pgp -ka KEYS验证签名下载相应发布物的.asc文件后按以下方式验证gpg --verify apache-airflow-providers-********.asc apache-airflow-*********或pgpv apache-airflow-providers-********.asc或pgp apache-airflow-providers-********.asc模板中给出的实际示例变量渲染后即为 Livy 包$ gpg --verify apache-airflow-providers-apache-livy-4.6.1.tar.gz.asc apache-airflow-providers-apache-livy-4.6.1.tar.gz gpg: Signature made Sat 11 Sep 12:49:54 2021 BST gpg: using RSA key CDE15C6E4D3A8EC4ECF4BA4B6674E08AD7DE406F gpg: issuer kaxilnaikapache.org gpg: Good signature from Kaxil Naik kaxilnaikapache.org [unknown] gpg: aka Kaxil Naik kaxilnaikgmail.com [unknown] gpg: WARNING: The keys User ID is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: CDE1 5C6E 4D3A 8EC4 ECF4 BA4B 6674 E08A D7DE 406F模板对此输出的解读值得注意Good signature from ...表示签名正确not certified with a trusted signature警告无需担心——发布经理release manager使用的证书大多是自签的因此会出现该警告。由于你上一步已从KEYS页按 ID 导入了对应公钥即可确认这是一个有效签名。验证 SHA512 摘要下载对应的.sha512文件后执行shasum -a 512 apache-airflow-providers-******** | diff - apache-airflow-providers-********.sha512文件中计算的SHASUM应与.sha512文件中提供的值一致。以 Livy 4.6.1 sdist 为例变量渲染后shasum -a 512 apache_airflow_providers_apache_livy-4.6.1.tar.gz | diff - apache_airflow_providers_apache_livy-4.6.1.tar.gz.sha512验证 PyPI 上发布的 wheel 包如果你最终选择从 PyPI 安装pip install的实际路径模板提供了一段脚本先通过 pip 下载 PyPI 上的包再从 Apache 官方目录下载同一版本的.asc签名与.sha512文件放在一起供你按前文流程核对PyPI 制品 官方签名制品。模板变量渲染后的完整脚本如下#!/bin/bash PACKAGE_VERSION4.6.1 PACKAGE_NAMEapache-airflow-providers-apache-livy provider_download_dir$(mktemp -d) pip download --no-deps ${PACKAGE_NAME}${PACKAGE_VERSION} --dest ${provider_download_dir} curl https://downloads.apache.org/airflow/providers/apache_airflow_providers_apache_livy-4.6.1-py3-none-any.whl.asc \ -L -o ${provider_download_dir}/apache_airflow_providers_apache_livy-4.6.1-py3-none-any.whl.asc curl https://downloads.apache.org/airflow/providers/apache_airflow_providers_apache_livy-4.6.1-py3-none-any.whl.sha512 \ -L -o ${provider_download_dir}/apache_airflow_providers_apache_livy-4.6.1-py3-none-any.whl.sha512 echo echo Please verify files downloaded to ${provider_download_dir} ls -la ${provider_download_dir} echo按发布物完整性验证一节的命令核对该临时目录下的 whl、asc、sha512 三个文件后删除临时目录即可。从源码构建的仓库级细节以上流程是官方文档给出的标准动作以下两点结合当前仓库源码帮助你把从源码安装落到可执行的层面。构建系统flit 后端Livy provider 的 providers/apache/livy/pyproject.toml 声明了构建后端[build-system] requires [flit_core4.0.2] build-backend flit_core.buildapi并声明了显式的 sdist 内容第 121~129 行[tool.flit.sdist] include [ docs/, provider.yaml, src/airflow/__init__.py, src/airflow/providers/__init__.py, src/airflow/providers/apache/__init__.py, tests/, ]从源码结构看sdist 的打包范围是显式列出的而非依赖 VCS 信息——文件中的注释明确说明这是为了适配 flit 4.0 默认不再使用 VCS 的行为。[tool.flit.module]指定模块名为airflow.providers.apache.livy[project.entry-points.apache_airflow_provider]则声明 provider 信息入口为airflow.providers.apache.livy.get_provider_info:get_provider_info第 113~114 行。这意味着下载 sdist 后用pip install sdist构建得到的正是由这份pyproject.toml约束的包依赖表apache-airflow2.11.0等会在安装时被强制满足。版本与发布节奏模板中 source 包的文件名使用providers_release_date即各 provider 按发布批次统一打一个源码快照而单个 provider 的 sdist/whl 使用自己的package_version本例4.6.1。这一差异从 provider_conf.py 的变量注入可以看出package_name_underscores由包名连字符替换为下划线生成对应 wheel/sdist 文件名规范。小结需要审计发布物来源时下载 source/sdist/whl 三类官方包导入 KEYS 后用gpg --verify验证.asc签名用shasum -a 512 | diff核对摘要选择 PyPI 安装时用模板给出的脚本把 PyPI 制品与官方.asc/.sha512放在一起比对确认两者一致需要自行构建时以 providers/apache/livy/pyproject.toml 为构建契约flit 后端、显式 sdist 清单安装方式即标准的pip install sdist|whl更完整的构建说明见源码包中的INSTALL文件仓库根目录 INSTALL 为同一入口。本文所有事实均基于当前仓库中 providers/apache/livy/docs/installing-providers-from-sources.rst、devel-common/src/sphinx_exts/includes/installing-providers-from-sources.rst、provider_conf.py 与 providers/apache/livy/pyproject.toml 的实际内容GPG 示例输出沿用原文档示例用于说明如何判读Good signature与自签警告。【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考