第 6 章 修改 Python 脚本中的解释器指令
在 Red Hat Enterprise Linux 10 中,可执行的 Python 脚本预计会使用解释器指令(也称为 hashbangs 或 shebangs),其明确指定最小主 Python 版本。例如:
#!/usr/bin/python3 #!/usr/bin/python3.12
#!/usr/bin/python3
#!/usr/bin/python3.12
构建任何 RPM 软件包时会自动运行 /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot 策略(BRP)脚本,来尝试更正所有可执行文件中的解释器指令。当遇到带有模糊解释器指令(例如 #!/usr/bin/python 或 #!/usr/bin/env python)的 Python 脚本时,BRP 脚本会产生错误。
您可以修改 Python 脚本中的解释器指令,以防止 RPM 构建时的构建错误。
先决条件
- Python 脚本中的一些解释器指令会导致构建错误。
流程
根据您的场景,执行以下步骤之一来修改解释器指令:
在
spec文件的%prep部分中使用以下宏:%py3_shebang_fix <SCRIPTNAME> …
%py3_shebang_fix <SCRIPTNAME> …Copy to Clipboard Copied! Toggle word wrap Toggle overflow SCRIPTNAME 可以是任何文件、目录或文件和目录列表。
因此,所有列出的文件和列出的目录中的所有
.py文件的解释器指令都已修改为指向%{python3}。将保留原始解释器指令的现有标记,并将添加%{py3_shebang_flags}宏中定义的其他标志。您可以在spec文件中重新定义%{py3_shebang_flags}宏,以更改将要添加的标记。- 修改打包的 Python 脚本,以便它们符合预期格式。