Apache Airflow HDFS Provider 4.13.0:从官方源码包安装与发布完整性验证
发布时间:2026/9/13 4:07:17 锦皓数字建站

Apache Airflow HDFS Provider 4.13.0从官方源码包安装与发布完整性验证【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow本文基于 Apache Airflow 仓库中 HDFS 提供商的安装文档 providers/apache/hdfs/docs/installing-providers-from-sources.rst完整讲解如何从 Apache 软件基金会官方发布渠道下载apache-airflow-providers-apache-hdfs的源码包、sdist 与 whl 三种制品如何用 PGP 签名与 SHA512 校验和验证其完整性以及如何对 PyPI 上的 whl 包做同样的端到端核验。读完后你能够独立完成该 Provider 包的官方渠道安装、发布溯源provenance验证与供应链安全检查。文档溯源这一页是如何从仓库模板生成的HDFS Provider 的 Installing from sources 文档本体只有一行有效内容——一个跨目录的 RST include.. include:: /../../../../devel-common/src/sphinx_exts/includes/installing-providers-from-sources.rst也就是说所有 Provider 共享同一份安装文档模板 devel-common/src/sphinx_exts/includes/installing-providers-from-sources.rst。模板中的下载链接、包名和版本号并不是写死的而是通过sphinx-jinja的official_download_page上下文在构建文档时动态填充。填充逻辑位于 devel-common/src/docs/provider_conf.pyofficial_download_page: { base_url: https://downloads.apache.org/airflow/providers, closer_lua_url: https://www.apache.org/dyn/closer.lua/airflow/providers, package_name: PACKAGE_NAME, package_name_underscores: PACKAGE_NAME.replace(-, _), package_version: PACKAGE_VERSION, providers_release_date: PROVIDERS_RELEASE_DATE, },其中PACKAGE_NAME由 HDFS Provider 的文档构建配置 providers/apache/hdfs/docs/conf.py 设置为apache-airflow-providers-apache-hdfsPROVIDERS_RELEASE_DATE则读取仓库根providers目录下的.last_release_date.txt路径定义在 devel-common/src/docs/provider_conf.py 中。因此渲染出的最终文档等价于把下面这些具体值代入模板模板变量HDFS Provider 的具体取值package_nameapache-airflow-providers-apache-hdfspackage_name_underscoresapache_airflow_providers_apache_hdfspackage_version4.13.0见 providers/apache/hdfs/pyproject.toml 与 providers/apache/hdfs/provider.yamlbase_urlhttps://downloads.apache.org/airflow/providerscloser_lua_urlhttps://www.apache.org/dyn/closer.lua/airflow/providers这种共享模板 Jinja 变量的组织方式意味着理解一份 Provider 的安装文档就理解了所有 Provider 的官方发布流程。已发布的官方制品三种下载形态及其来源文档明确指出已发布的包分为两类性质Source packages源码包Apache 软件基金会的官方制品。如果你希望自行从源码构建包并确保包的来源provenance经过验证、与仓库源码一致就应该使用这类制品——你可以逐一校验它们的校验和与签名。sdist与whl便捷包同样由同一份源码构建安装而来虽然更省事但同样可以在 Apache 官方下载渠道获取并验证其来源、校验和与签名。针对 HDFS Provider 4.13.0模板渲染出的具体下载项为均以base_url为主分布目录Providers 源码包包含本批次发布的全体 Providersapache_airflow_providers-providers_release_date-source.tar.gzSdist 包apache-airflow-providers-apache-hdfs-4.13.0.tar.gzWhl 包apache_airflow_providers_apache_hdfs-4.13.0-py3-none-any.whl每一项制品都附带两个校验文件*.asc—— GPG 签名文件*.sha512—— SHA512 校验和文件例如 sdist 对应apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.asc和apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.sha512。文档同时说明也可以像大多数 Python 包一样直接从 PyPI 安装该版本并在版本下拉框中选择其他历史版本。如果你要从源码构建文档指引你下载上面的 sources 包其中包含一份INSTALL文件详细说明如何构建和安装 Provider——仓库根目录同样维护着这份 INSTALL 文件可对照阅读。从源码看 sdist 是如何被打包的HDFS Provider 的构建配置 providers/apache/hdfs/pyproject.toml 使用 flit 作为构建后端[build-system] requires [flit_core4.0.2] build-backend flit_core.buildapi值得注意的是其[tool.flit.sdist]段providers/apache/hdfs/pyproject.toml显式列出了 sdist 需要携带的内容[tool.flit.sdist] include [ docs/, provider.yaml, src/airflow/__init__.py, src/airflow/providers/__init__.py, src/airflow/providers/apache/__init__.py, tests/, ]源码注释解释了动机这是为了构建不依赖 VCS 信息flit 4.0 起--no-use-vcs成为默认行为。换句话说你从 Apache 官方下载的 sdist 是自包含的解压后无需访问任何版本控制系统即可完成安装。该包的运行依赖同样在 providers/apache/hdfs/pyproject.toml 中声明安装前值得了解requires-python 3.10 dependencies [ apache-airflow2.11.0, apache-airflow-providers-common-compat1.12.0, hdfs[avro,dataframe,kerberos]2.5.4;python_version3.12, hdfs[avro,dataframe,kerberos]2.7.3;python_version3.12, fastavro1.10.0; python_version3.13 and python_version3.14, fastavro1.12.1; python_version3.14, pandas2.1.2; python_version 3.13, pandas2.2.3; python_version 3.13 and python_version 3.14, pandas2.3.3; python_version 3.14, ]可见hdfs、fastavro、pandas的版本下限都按 Python 小版本做了条件化裁剪Python 3.10 起受支持。包的安装入口点声明在 providers/apache/hdfs/pyproject.toml[project.entry-points.apache_airflow_provider] provider_info airflow.providers.apache.hdfs.get_provider_info:get_provider_infoProvider 的元数据名称、生命周期状态production、全部历史版本列表、集成的 hooks/sensors/logging 组件则集中在 providers/apache/hdfs/provider.yaml可作为核实你安装版本是否属于官方发布序列的参照。发布完整性验证Release integrityPGP 签名与 SHA512 校验文档强调必须使用 PGP 或 SHA 签名验证下载文件的完整性。签名验证需要两步先导入发布管理者的公钥再对制品本身验签。文档特别提示KEYS公钥文件与对应的.asc签名文件都应从主分布目录获取而不是从镜像站获取。第一步导入公钥从 PGP 签名 KEYS 文件导入KEYS随 Airflow 发布目录提供需自行下载gpg -i KEYS或使用其他等价工具pgpk -a KEYSpgp -ka KEYS第二步验证签名对下载好的制品与签名文件执行验证。以 HDFS Provider 的 sdist 为例文档给出的通用命令形式为gpg --verify apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.asc apache-airflow-providers-apache-hdfs-4.13.0.tar.gz其他工具的等价形式pgpv apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.ascpgp apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.asc解读验证输出文档附带的示例输出模板中的示例输出其签名者信息以你实际导入的KEYS为准$ gpg --verify apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.asc apache-airflow-providers-apache-hdfs-4.13.0.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警告大多数发布管理者的证书是自签的所以会出现此提示。由于你上一步已经从官方KEYS页按 ID 导入了该密钥就已经确认它是一把有效密钥。第三步SHA512 校验和比对下载对应的.sha512文件后执行shasum -a 512 apache-airflow-providers-apache-hdfs-4.13.0.tar.gz | diff - apache-airflow-providers-apache-hdfs-4.13.0.tar.gz.sha512文件实际计算出的SHASUM必须与.sha512文件中提供的值一致。对 whl 包同理将文件名替换为apache_airflow_providers_apache_hdfs-4.13.0-py3-none-any.whl即可。验证 PyPI 上的发布端到端核验脚本如果你最终从 PyPI 安装了该 Provider 的.whl包同样可以核验其官方性。文档提供的方法是本地用pip download拉取 PyPI 上的制品同时用curl从 Apache 主分布目录拉取该 whl 对应的.asc与.sha512文件然后按上一节的流程验证。将模板中的变量代入 HDFS Provider 后的完整脚本如下#!/bin/bash PACKAGE_VERSION4.13.0 PACKAGE_NAMEapache-airflow-providers-apache-hdfs 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_hdfs-4.13.0-py3-none-any.whl.asc \ -L -o ${provider_download_dir}/apache_airflow_providers_apache_hdfs-4.13.0-py3-none-any.whl.asc curl https://downloads.apache.org/airflow/providers/apache_airflow_providers_apache_hdfs-4.13.0-py3-none-any.whl.sha512 \ -L -o ${provider_download_dir}/apache_airflow_providers_apache_hdfs-4.13.0-py3-none-any.whl.sha512 echo echo Please verify files downloaded to ${provider_download_dir} ls -la ${provider_download_dir} echo脚本要点pip download --no-deps只下载 whl 本身不拉取依赖树保证被验证对象唯一.asc/.sha512一律来自 Apache 主分布目录downloads.apache.org/airflow/providers这正是文档KEYS 与签名文件应来自主分布目录而非镜像原则的落地下载完成后对临时目录中的 whl 执行PGP 验签 SHA512 比对两步见上一节验证通过后再删除临时目录。小结从源码到签名的一条溯源链把仓库证据与文档流程串起来HDFS Provider 的官方发布链路是清晰且可复核的构建源码位于 providers/apache/hdfs/ 目录由 flit_core 4.0.2 按 providers/apache/hdfs/pyproject.toml 构建sdist 内容清单显式声明、不依赖 VCS 信息发布以 Apache 软件基金会官方制品形式发布 providers source、sdist、whl 三类包每件附带.asc与.sha512文档各 Provider 的安装页由共享模板 devel-common/src/sphinx_exts/includes/installing-providers-from-sources.rst 加上 devel-common/src/docs/provider_conf.py 中的 Jinja 上下文渲染生成HDFS Provider 的具体取值包名、下划线包名、版本 4.13.0、主分布目录完全由仓库内配置决定验证无论走 Apache 官方下载还是 PyPI最终都以KEYS导入 gpg --verifyshasum -a 512 | diff同一套流程收口。适用前提提示本文所有包名、版本号与依赖约束均取自当前仓库快照中的 HDFS Provider 4.13.0 配置若切换其他 Provider 或其他版本只需按上文表格替换package_name、package_name_underscores、package_version三个变量流程与命令形态完全不变。【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。