3 个版本 (破坏性更新)

0.155.0 2024年6月8日
0.154.0 2023年11月26日
0.148.0 2023年5月23日

12#fix 中排名

Download history 152/week @ 2024-06-08 3/week @ 2024-06-15

每月下载量 139

GPL-2.0+

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 和测试套件使用。设置为 allowdisallow
  • OPINIONATED:设置为 yesno。如果设置为 no,则修复程序不需要在不存在明显单一正确修复的情况下进行更改。

对于用Python编写的修复器,可以使用lintian_brush.fixer模块方便地访问这些变量。

修复器应在标准输出中写一段简短的描述,说明它所做的更改;这将用于提交信息。

它可以在输出中包含可选的元数据:

  • Fixed-Lintian-Tags:后跟一个用逗号分隔的lintian标签列表,该列表声明已修复。这将使lintian-brush包含有关已修复lintian标签的文档链接。将来,它也可能支持构建软件包以验证lintian标签是否确实已解决。

  • Certainty:后跟certainconfidentlikelypossible,表示修复器有多大的把握认为修复是正确的。

默认的最小确定性级别是“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