3 个版本 (破坏性更新)
0.155.0 | 2024年6月8日 |
---|---|
0.154.0 | 2023年11月26日 |
0.148.0 | 2023年5月23日 |
12 在 #fix 中排名
每月下载量 139
235KB
6K SLoC
lintian-brush
此软件包包含一组脚本来自动修复 Debian 软件包中的一些常见问题。
运行 lintian-brush
只需运行:
lintian-brush
在您的 (版本控制) Debian 软件包的顶层。
.. _supported-tags
支持的标签
当前可用于修复问题子集的 lintian 标签集
- adopted-extended-field
- ancient-python-version-field
- ancient-standards-version
- autotools-pkg-config-macro-not-cross-compilation-safe
- build-depends-on-build-essential
- build-depends-on-obsolete-package
- built-using-field-on-arch-all-package
- carriage-return-line-feed
- comma-separated-files-in-dep5-copyright
- copyright-does-not-refer-to-common-license-file
- copyright-file-contains-full-apache-2-license
- copyright-file-contains-full-gfdl-license
- copyright-file-contains-full-gpl-license
- copyright-has-crs
- copyright-not-using-common-license-for-apache2
- copyright-not-using-common-license-for-gfdl
- copyright-not-using-common-license-for-gpl
- copyright-not-using-common-license-for-lgpl
- copyright-refers-to-symlink-license
- copyright-refers-to-versionless-license-file
- custom-compression-in-debian-source-options
- cute-field
- debhelper-but-no-misc-depends
- debhelper-tools-from-autotools-dev-are-deprecated
- debian-changelog-file-contains-obsolete-user-emacs-settings
- debian-changelog-has-wrong-day-of-week
- debian-changelog-line-too-long
- debian-control-has-empty-field
- debian-control-has-obsolete-dbg-package
- debian-control-has-unusual-field-spacing
- debian-pycompat-is-obsolete
- debian-pyversions-is-obsolete
- debian-rules-calls-pwd
- debian-rules-contains-unnecessary-get-orig-source-target
- debian-rules-missing-recommended-target
- debian-rules-not-executable
- debian-rules-parses-dpkg-parsechangelog
- debian-rules-sets-dpkg-architecture-variable
- debian-rules-uses-as-needed-linker-flag
- debian-rules-uses-special-shell-variable
- debian-rules-uses-unnecessary-dh-argument
- debian-tests-control-and-control-autodep8
- debian-tests-control-autodep8-is-obsolete
- debian-upstream-obsolete-path
- debian-watch-contains-dh_make-template
- debian-watch-does-not-check-openpgp-signature
- debian-watch-file-is-missing
- debian-watch-file-pubkey-file-is-missing
- debian-watch-file-uses-deprecated-githubredir
- debian-watch-uses-insecure-uri
- debug-symbol-migration-possibly-complete
- declares-possibly-conflicting-debhelper-compat-versions
- dep5-file-paragraph-references-header-paragraph
- desktop-entry-contains-encoding-key
- desktop-entry-file-has-crs
- dh-clean-k-is-deprecated
- dh-quilt-addon-but-quilt-source-format
- dm-upload-allowed-is-obsolete
- empty-debian-tests-control
- excessive-priority-for-library-package
- executable-desktop-file
- extended-description-contains-empty-paragraph
- extended-description-is-empty
- faulty-debian-qa-group-phrase
- field-name-typo-in-dep5-copyright
- font-package-not-multi-arch-foreign
- global-files-wildcard-not-first-paragraph-in-dep5-copyright
- homepage-field-uses-insecure-uri
- homepage-in-binary-package
- initial-upload-closes-no-bugs
- insecure-copyright-format-uri
- installable-field-mirrors-source
- invalid-short-name-in-dep5-copyright
- invalid-standards-version
- libmodule-build-perl-needs-to-be-in-build-depends
- license-file-listed-in-debian-copyright
- maintainer-also-in-uploaders
- maintainer-script-empty
- maintainer-script-without-set-e
- malformed-dm-upload-allowed
- malformed-override
- mismatched-override
- 缺少构建依赖项 - dh 插件
- 缺少构建依赖项 - dh_命令
- 缺少 Golang 包的构建使用字段
- 缺少 Debian 源格式
- 缺少 pyproject-backend 的先决条件
- 缺少 VCS 浏览器字段
- 拼写错误 - closes-bug
- 新包使用基于日期的版本号
- 缺少版权文件
- 缺少主页字段
- 缺少带有版本号的 debhelper 先决条件
- 过时的 Debian 监视文件标准
- dep5-copyright 中的过时字段
- 过时的运行时测试限制
- 包装中的过时 URL
- 过时的 Vim 插件管理器
- 旧的 dpmt-vcs
- 版权文件中的过时的 FSF 地址
- 旧的 papt-vcs
- 旧的源覆盖位置
- 较旧的 Debian 监视文件标准
- 较旧的源格式
- 过时的版权格式 URI
- 过时的标准版本
- 包包含 linda 覆盖
- 包使用已弃用的 debhelper 兼容版本
- 包使用旧的 debhelper 兼容版本
- 补丁文件存在但未在系列中提及
- 缺少 pkg-js-tools 测试
- closes 字段中可能缺少冒号
- priority-extra 已由 priority-optional 替换
- 本地包中的公共上游密钥
- 公共上游密钥不是最小化的
- 多个位置中的公共上游密钥
- pypi 主页
- Python 团队合并
- quilt 系列但没有构建依赖项
- quilt 系列没有尾部换行符
- 推荐字段
- 重命名标签
- 必填字段
- rubygem 主页
- 在需要 root 的规则上静默
- dep5-copyright 中的 std-shortname 有空格
- systemd 服务别名没有扩展名
- systemd 服务文件引用了过时的 bindto
- systemd 服务文件引用了过时的 target
- systemd 服务文件引用了 var-run
- systemd 服务文件关闭问题时
- 许可文本中的制表符
- team/pkg-perl/testsuite 没有测试套件标题
- team/pkg-perl/vcs 没有 git
- team/pkg-perl/vcs 没有团队 URL
- 尾随空白
- 过渡包不是 oldlibs-optional
- debhelper-override-target 中的错误
- 不必要的团队上传
- 不必要的测试套件 autopkgtest 字段
- cdbs 上的未使用构建依赖项
- dep5-copyright 中的未使用许可段落
- 未使用的覆盖
- 未版本化的版权格式 URI
- 孤儿中的上传者
- 缺少上游元数据文件
- 本地源中的上游元数据
- 上游元数据缺少错误跟踪
- 上游元数据缺少存储库
- 上游元数据不是 YAML 映射
- 上游元数据 YAML 无效
- 无用的 autoreconf 构建依赖项
- 使用 debhelper 兼容文件
- 使用已弃用的 adttmp
- VCS 字段损坏
- VCS 字段不匹配
- VCS 字段不是规范形式
- VCS 字段使用不安全的 URI
- VCS 字段使用不建议的 URI 格式
- Debian 基础设施中的 VCS 已过时
- 根据包名错误的节
.. _writing-fixers
编写新修复程序
有关更详细的说明,请参阅编写修复程序的指南。
理想情况下,修复程序针对一组特定的 lintian 标签。这不是强制性的,但可以使轻松找到可以应用特定修复程序的包变得容易。
每个修复程序都是位于 fixers
下的简单脚本。脚本应在该目录中的 index.desc
文件中注册。
修复程序在包的根目录中运行,它可以在其认为必要的情况下进行更改。如果修复程序不能提供任何改进,它可以简单地保留工作树不变 - lintian-brush 不会为它创建任何提交或更新更改日志。如果它以非零退出代码退出,它所做的任何更改都将被丢弃,修复程序将被报告为失败。
以下是一些额外的环境变量被设置
DEB_SOURCE
:正在编辑的源包的名称。CURRENT_VERSION
:正在编辑的包版本。COMPAT_RELEASE
:要兼容的 Debian 版本。通常当指定了 --modern 时为sid
,否则为当前稳定版本的名称。NET_ACCESS
:修复程序是否允许建立网络连接(例如发送 HTTP 请求)。由 --disable-net-access 和测试套件使用。设置为allow
或disallow
。OPINIONATED
:设置为yes
或no
。如果设置为no
,则修复程序不需要在不存在明显单一正确修复的情况下进行更改。
对于用Python编写的修复器,可以使用lintian_brush.fixer
模块方便地访问这些变量。
修复器应在标准输出中写一段简短的描述,说明它所做的更改;这将用于提交信息。
它可以在输出中包含可选的元数据:
-
Fixed-Lintian-Tags:
后跟一个用逗号分隔的lintian标签列表,该列表声明已修复。这将使lintian-brush包含有关已修复lintian标签的文档链接。将来,它也可能支持构建软件包以验证lintian标签是否确实已解决。 -
Certainty:
后跟certain
、confident
、likely
或possible
,表示修复器有多大的把握认为修复是正确的。
默认的最小确定性级别是“certain”;任何使用“certain”确定性级别做出的错误更改都至少被认为是普通严重程度的错误。
测试修复器最简单的方法是在tests/FIXER-NAME/TEST-NAME
下创建一个骨架的输入和输出源树。输入目录应包含运行修复器的树,输出目录包含运行后的目录。如果修复器只需要一个或两个控制文件,创建只包含这些文件的目录是可以的。要为单个修复器运行测试,可以使用“make check-fixer-$NAME”。
GitHub Action
如果您在GitHub上托管Git存储库,可以使用lintian-brush GitHub action自动运行lintian-brush。
依赖关系
~16–31MB
~513K SLoC