第 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)脚本,并尝试在所有可执行文件中更正解释器指令。当遇到带有模糊的解释器指令的 Python 脚本时,BRP 脚本会生成错误,例如 #!/usr/bin/python
或 #!/usr/bin/env python
。
您可以修改 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 脚本,以便它们符合预期格式。