GLEP 42:重要的新闻报道

作者 夏兰McCreesh的 斯蒂芬·班尼特 ,ZAC法医学 乌尔里希·穆勒
类型 标准轨道
状态 最后
4
创建 2005-10-31
上一次更改 2019年11月7日
发布历史 2005-11-01,2005-11-05,2005-11-07,2005-12-11,2005-12-13,2005-12-18,2006-01-05,2006-03-02,2006- 03-06,2006-06-12,2006-09-05,2016年3月10日,2017年11月27日
GLEP源 GLEP-0042.rst

抽象

这个GLEP提出通知用户重要的更新和新闻的新方法 相关树。

动机

虽然大多数软件包更新是干净的,几乎不需要用户操作, 偶尔升级需要用户干预。最近的例子 后者包括 GCC-3.4 稳定的 86的mysql-4.1 数据库格式变化。

目前有提供重要的新闻项目的几种方法我们 用户,他们没有特别有效:

  • G恩至o周报新闻
  • G恩至o的公告, G恩至o的用户G恩至o的开发 邮件列表
  • G恩至o论坛
  • 主要G恩至o的网站
  • G恩至o的新闻RSS订阅
  • einfoEWARN 在消息 pkg_setup 要么 pkg_postinst

获得关键更新的消息出来给用户更可靠的方法是必需的 到各种现有升级的惨败的避免重复。这个GLEP提出了 基于解决方案围绕推动新闻条目出用户通过 rsync的 树。

重要

这个GLEP不寻求更换或修改 einfo 消息 这显示后期安装。这是这是处理一个单独的问题 通过 ELOG [2].

要求

适当的解决方案必须满足以下要求:

先发制人
用户应该被告知的变化 之前 他们打破一个系统,而不是后 伤害已经完成。理想情况下,系统管理员会 给予充分的警告计划难以升级和变化,而不是仅 被告知之前的行动是必要的。
无需用户签约
它已经被证实 [6] 很多用户不 阅读 G恩至o的公告 邮件列表或 RSS 饲料。一个解决方案, 需要订阅拥有超过目前的方法没有任何优势。
无需用户监控
它已经被证实 [6] 很多用户不 阅读新闻条目张贴到巴布亚网站,或者不念新闻条目 直到为时已晚。其依赖于一个的主动监测的溶液 特定的源拥有超过目前的方法没有任何优势。
相应
谁不使用一个特定的包不应该给系统管理员 阅读影响纯粹是包装的新闻项目。一些新闻项目可能的 相关性大部分或所有用户,但那些不是不应该被强迫 在用户不必要的。
轻量级
这是不合理的期望所有的用户有一个MTA,网络浏览器,电子邮件 客户端,cron的守护程序或文字处理套件的系统上可用。 用户不得强制安装不合理额外的软件,以便能够 阅读新闻条目。
没有侵犯隐私
该解决方案的用户不应该被要求提供有关信息 他们的系统(例如,IP地址或安装的软件包)。
多种递送方法支持
有些用户可能希望通过终端通过电子邮件浏览新闻,和一些 一些通过网络浏览器。一个解决方案要么支持所有的这些 方法或(更好),使简单的写客户端显示 以不同的方式新闻项目。

以下特点将是可取的:

internationalisable
能够以多种语言提供的信息可能是有益的。
品质管制
应该有一些方法,以确保写的不好的或不相关的消息 不受经验的开发人员或那些发出去,例如 英语语言技能是低于标准杆。
简单开发商
发布新闻项目应尽可能简单,是合理可行的。
简单的用户
阅读相关新闻项目应尽可能简单,是合理可行的。
与现有的和未来的新闻源的兼容性
一个新闻系统从理论上是能够与现有的新闻整合 来源(例如,论坛,周报,主要G恩至o的网站),而不 过度的困难。同样,易互通未来的任何消息 来源不应该被排除。

规范

概观

新闻项发布并交付给用户,如下所示:

  1. 新闻项目被写入。所使用的格式进行说明。
  2. 新闻项目进行审查,在描述的过程以下 新闻项目的质量控制.
  3. 新闻项目是一家致力于VCS库。 从这里,它合并了rsync的的树。这是在所描述 新闻项目 分配.
  4. 用户在同步获取新闻。这确保了在新闻项目 问题都推到用户的用户不小心让一个前 不需要改变。不被需要对现有rsync的的过程中的变化 这个GLEP。
  5. 包管理器过滤的新闻条目,如果是相关的,痕迹 阅读新闻条目。包管理器还应该显示的通知 通知有未读新闻项目的用户。
  6. 新闻条目是由用户选择新闻条目读者的处理。看到 新闻 项目客户.

需要搬运增强

以下扩展搬运是必需的:

  • 每一个仓库(包括覆盖)将需要一个唯一的标识符。它是 假定的标识符将是一个字符串的字符组成从 az, AZ, 09, + (加), - (连字符) _ (下划线)。
  • 搬运必须提供一种方式,外部程序来获取所有的列表 存储库标识符给定系统。假定这将是 一个形式 搬运q 命令(例如 搬运q get_repo_ids)。
  • 搬运必须提供一种方法用于外部程序以获得用于所述基本路径 给定ID的存储库。假定这将是形式 a 搬运q 命令(例如 搬运q get_repo_root G恩至o的86)。
  • 搬运必须扩展 搬运q has_version 要支持限制到 定的存储库ID。
  • 搬运必须扩展 搬运q 实现返回命令是否 或者没有用于给定库标识的轮廓是完全指定的配置文件 (例如。 搬运q profile_used 默认的Linux / SPARC / SPARC64 / 2004.3 G恩至o的86)。

这些扩展以下说明书中假定。

新闻项目标识

每条新闻都有一个唯一的标识符。该标识符将在 形成 YYYY-MM-DD-短名,其中 YYYY 是一年(例如 2005毫米 是月(01 通过 12)和DD是该月的一天 (01 通过 31)。该 简称 是描述一个很短的名字 新闻项目(例如 yoursql-更新),仅由字符 A-Z, 0-9, + (加), - (连字符)和 _ (下划线)。虽然没有 上的长度硬限制 简称,将其限制为20个字符 强烈推荐。

新闻项目目录

每条新闻将由一个目录名来表示是一样的 新闻项目的标识符。

该目录将包含一个名为 YYYY-MM-DD-短名称.恩.txt, 哪一个 包含新闻条目的文字,英文,下面描述的格式。

新闻项目的任何翻译将在其他文件中提供。其 名称 YYYY-MM-DD-短名称.lang.txt 从原始文件名取得 通过更换 另一个IETF语言标签 [1]。然而,只有 新闻项目的英文版本为准。这angloc恩tricity是 通过合理的先例 [9].

新闻项目文件

新闻项目文件是文本文件,并使用UTF-8编码 [14] 对于 且适用于同样的理由,现有G恩至o文档兼容性 [3] 和树 [8].

新闻项目文件的内容将包括一个RFC 822风格的头的 [13] 接着将消息作为纯文本的主体。这个GLEP定义 各种可选的和强制性头。未来gleps可以提出新的标题 - 工具处理这些新闻条目必须忽略任何不认识的头。

注意

这个GLEP的先前版本曾要求新闻项目必须 可以用一种超然的Op恩PGP签名。这被认为是不再 移动新闻项目的git仓库与提交签字后必要的, 每GLEP 74全树验证的部署 [11].

新闻项目标题

下面的标题描述的目的和新闻条目的格式:

标题:
一个短的(最大50个字符)描述性标题。强制性的。
作者:
作者的姓名和电子邮件地址,形式 真正的名字 . 强制性的;多个作者头可能在适当指定。
翻译:
经过翻译的新闻,译者的姓名和电子邮件地址。多 翻译头可能合适的话被指定。
内容类型:
只有在新闻条目格式 1.0,它是强制性的,必须是 纯文本/.
发布:
发布日期,在 YYYY-MM-DD 格式(例如2005-12-18),用于 与GLEP 45兼容性 [10]。翻译应使用日期 原新闻项目。强制性的。
修订:
1.首先应每递增一个变化的消息作出时间 项目。新闻项目的需要一个变化重读(即大部分的变化 未拼写或格式相关的)应该使用一个新的新闻 项目。强制性的。
新闻条目格式:
已知的格式 1.02.0。未来版本的格式 可递增用于向前兼容的改变次编号(即, 仍然允许旧的工具来处理新的格式),或主要 进行大的变动数。

下面头被用于过滤:

显示-如果安装的:
一个程序包相关规范(例如, >=sys-devel/gcc-5 要么 WWW的服务器/阿帕奇)符合EAPI 0 [18] 在新闻项目 格式 1.0 或EAPI 5在格式 2.0。如果用户有 包中指定从仓库中安装了该新闻项目 获得应该显示的新闻项目。
显示-如果关键字:
关键字 [7] 名称,例如 MIPS 要么 86的FBSD。如果 用户是有问题的关键字,应该显示的新闻项目。
显示如果轮廓:
一个配置文件路径,例如 缺省的/ LINUX / SPARC / 13.0。如果 用户使用有问题的确切轮廓,新闻项目应 显示。此报头可以被用来代替 已过时 在文件 未来。在新闻条目格式 2.0中,终端星号立即 以下斜线作为通配符任何进一步的路径构件, 例如 default/linux/*.

注意

执行包移动时,开发商还必须更新任何 相应 显示如果安装 标题新闻的文件。

所使用的算法来确定一条新闻是“相关”是 如下:

  • 每个 显示如果 - 其中发生至少一次报头类型:
    • 新闻内容是不相关的,如果没有这种类型的标题是 成功匹配。
  • 否则新闻项目是相关的。

特别是,如果没有 显示如果 - 头指定,一条新闻会 适用于所有用户。

之所以选择这个算法,因为它使条件像“显示此消息 对于项目 yoursql 谁是用户 SPARC 要么 86的实测值 相对 简单的指定 - 据信,这些种类的条件是更加 可能不是出现“使用显示这个人的新闻项目 yoursql, 要么 对于人 SPARC 要么 86的实测值“或”显示这些新闻项目 谁使用人 yoursql 谁是两个 SPARC86的实测值”。

新闻项目正文

标题部分后面必须跟一个空行,然后的主体 文本。

文本正文应在72个字符被包裹。没有花哨的格式或标签 文字应当使用 - 新闻条目可直接显示给 终奌站。段应以一个空行分开。

超链接可以被用于指代的进一步信息(例如,升级 指南)。然而,新闻项目的主体应该是描述性的,而不是 一个简单的“阅读链接”的文字。假设用户将有机会获得 网页浏览器 某处,但不一定在包装盒上正在被 给予 - 这将是在多台服务器和路由器,例如情况。

例如新闻项目

这个假设的新闻项目 可用于升级到 yoursql 数据库格式打破向前兼容性。

新闻项目的质量控制

已经有一些关于升级的可理解性投诉 通知和过去的新闻项目。这是可以理解的 - 不是每个巴布亚 开发商讲英语作为第一语言。然而,为了清晰起见, 专业性和避免使我们看起来像普拉斯,它是任何重要 在最终用户造成一条新闻之前,语言的问题得到纠正。

因此,至少72小时建议的新闻项被提交之前,它必须是 发布到 G恩至o的开发 邮件列表和 抄送:教育署 pr@g恩至o.要么g (例外情况可以在特殊情况下进行)。任何投诉 - 为 例如关于措辞,清晰度和准确性 - 必须 之前得到解决 新闻项目正式上线。

新闻项目只能是 重要 的变化,可能会导致严重升级 或兼容性问题。普通的升级信息和非关键新闻项目 应保持在 einfo 注意事项。该消息的重要性,其 目标受众应与建议是合理的。

重要

所述过滤系统的装置,它是适合于发出 它的目的是一种罕见的包或架构的用户新闻。 因此,该理由应该在形式“此消息是重要 yoursql用户,因为......“,而不是‘yoursql是因为重要的......’。

新闻项目分布

服务器端

新闻项目都可以通过标准的rsync的树提供。这消除 任何需要的远程源的轮询。

新仓库将新闻条目创建。类型(CVS或颠覆), 这个库位置和访问控制超出这个范围 GLEP。

注意

这个GLEP的原草案代替主 G恩至o的86 树。这是改变以下从基础设施的建议 [12]。这两种解决方案具有相同的最终结果。

这个资料库的内容会自动与主rsync的的合并 树,将在项目 元数据/消息/ 目录。用于该方法 合并这些项目,并在其发生的频率超出范围 这个GLEP的;类似的设置已经被用于合并glsas到的rsync的 树。

客户端

每当发现相关的未读消息的物品,包管理器会创建一个 文件命名 /var/lib/g恩至o/新闻/新闻 - $ {} repoid .unread (如果它不 已经存在)和追加的新闻项目标识(如 2005-11-01 - yoursql-更新)在新的一行。

所有的新闻项目有关的文件应该属于root用户,并在 搬运 组 与该组写(和,对于目录,执行)的位。新闻文件应 是世界可读的。

通知新的相关新闻项目将通过显示 出现 工具以类似的方式,以现有的“配置文件需要 更新”的消息:

*重要:有5个未读的新闻项目。
*类型出现--help新闻学会如何阅读新闻的文件。

应显示为新的新闻消息的检查:

  • 出现同步
  • 出现 - 假装
  • 之前 出现 (其也可以包括红色警告消息)

包管理器并不需要知道如何启动用户的选择 新闻客户端。这是与方式配置文件更新是一致的 处理。

包管理器可以使用时间戳检查文件,以避免必须处理 新闻条目不必要的。

包管理器必须跟踪已经被添加新闻项目 未读列表,以避免重复标记删除新闻项目。这可能 通过处理 新闻 - $ {} repoid .skip 包含新闻条目的ID文件 已经被添加到 新闻 - $ {} repoid .unread 文件,但这个 不受此GLEP所需的方法。

用户谁真的不关心新闻项目可以使用 rsync的_excludes中设定 至 滤除 元数据/消息/ 目录。

新闻项目客户

一旦一个新闻条目被标记为阅读,第三方工具(或传统的核心 Unix工具),可以用来显示和查看新闻的文件。

当读取一个新闻条目,其名称应予以除名 新闻 - $ {} repoid .unread 文件。如果一个新闻客户端作为一个读者互动 而不是一个网关,它应该然后将名称添加到 新闻 - $ {} repoid .read 文件具有相同的文件格式相同的目录。

一个 E选择 [4] 模块应当作为“建议的”显示被创建 工具;其他的显示工具(例如,新闻电子邮件转发,这将 是理想的谁在同步用户 cron的)留为那些选择谁 希望他们。

新闻项目拆除

新闻的,可以删除(通过从主目录树中的新闻文件)时 他们不再是相关的,如果它们是由未来的新闻或过时 之后的很长一段时间。这是相同的用于该方法 更新 条目。

与现有系统集成

这将是简单的将这些新闻条目转换为用于新闻的格式 G恩至o的网站上的项目或职位的 G恩至o的公告 邮件列表。

有一个现有的自动化工具 [5] 张贴glsas到 论坛。类似的工具可用于这些新闻。

向后兼容性

向后兼容性是不是在这里关心的问题。现有的工具将完全忽略 该 新闻/ 目录。

参考实现

所需的软件包管理器支持的参考实现,可以发现 在paludis [15]连同作为实现的参考新闻阅读器 E选择模块 [16].

学分

通过后面搬运通知新闻更新的用户的想法来自于斯图亚特 赫伯特 [17].

由于枪艾伯森,斯蒂芬·班尼特,甄子丹berkholz,授予固特异, 布莱恩·哈林,马吕斯锚赫,丹梅尔策,杰森拔,保罗·德·vrieze和亚历克 华纳输入。一些在这里提出的观点是他们的,别人说去吧 完全违背他们的建议。

示例文件

例如,新闻item.txt
一个例子新闻条目。

引用

[1]BCP 47:“标签用于标识语言”, //至ols.ietf.要么g/rfc/bcp/bcp47.txt
[2]Bugzilla错误11359 “[新的特征] pkg_postinst / pkg_preinst EWARN / einfo记录”, //bugs.g恩至o.要么g/show_bug.cgi?id=11359
[3]巴布亚XML引导中,Daniel Robbins等, //www.gen至o.要么g/doc/恩/xml-guide.xml
[4]E选择模块化框架,用于配置和 管理实用程序, //www.gen至o.要么g/proj/恩/E选择/index.xml
[5]论坛用户GLSA, //对于ums.g恩至o.要么g/profile.php?mode=viewprofile&u=55648
[6](1, 2) 论坛主题“巴布亚Apache2的配置变化白痴”, //对于ums.g恩too.要么g/view至pic-t-384368.html
[7]GLEP 22:“新的‘关键字’系统,包括各种 用户层/粒/ archs”,授予固特异, //www.g恩至o.要么g/glep/glep-0022.html
[8]GLEP 31:“字符集的P要么tage树项目”,夏兰 McCreesh的, //www.g恩至o.要么g/glep/glep-0031.html
[9]GLEP 34: “每类的metadata.xml中的文件”,夏兰McCreesh的, //www.g恩至o.要么g/glep/glep-0034.html
[10]GLEP 45: “GLEP日期格式”,亨里克·安德森糖度, //www.g恩至o.要么g/glep/glep-0045.html
[11]GLEP 74:“验证使用清单文件全树”, 米哈尔戈尔诺 - 罗宾·休·约翰逊,米勒乌尔里希, //www.g恩至o.要么g/glep/glep-0074.html
[12]“回复:[沙巴体育的开发] GLEP ??:关键新闻报道”, 喷枪艾伯森,消息ID 436b721c.20203@g恩至o.要么g, //archives.gentoo.要么g/G恩至o的开发/message/4204839d4091758c3bad1dbd18ed16f7
[13]RFC 822“标准ARPA Internet文本消息的格式”
[14]RFC 3629: “UTF-8,ISO 10646的变换格式” //www.ietf.要么g/rfc/rfc3629.txt
[15]paludis主页, //paludis.berlios.de
[16]news.E选择, //svn.berlios.de/svnroot/repos/paludis/trunk/eselect/news.E选择
[17]“有利于自动消息机制”,司徒赫伯特 //stu.gnqs.要么g/diary/g恩too.php/2005/10/28/favouring_an_au至matic_news_mechanism
[18]//wiki.g恩至o.要么g/wiki/project:package_manager_specification