我在用toast - 无包包管理器因为我没有root权限。 toast 查找软件包的网站之一是现已关闭的网站 freshmeat.net。
我尝试添加http://archive.ubuntu.com/ubuntu/pool/universe作为可能的来源,但 URL 格式不起作用。
哪些网站可以轻松添加到 Toast 中?
答案1
您的包管理器现在是一个已失效的 PerlScript。我引用:
什么,你害怕运行它?不用担心。这是无害的。事实上它不再做任何事情了。它曾经做了一些事情(如果你能告诉我是什么,可以给我 5 分),但后来就开始了。这个故事有一个寓意(值得 10 分)。
取自:吐司球网
请注意,我在这里并没有制定积分制度,但实质上是在回答 5 分问题。
我相信作者所指的 bitrot 是 freshmeat 上的这一点(引用):
- 由于流量较低,Freecode 站点已于 2014 年 6 月 18 日起转为静态状态,以便人们可以专注于比站点维护更有用的工作。
- 网站内容已保留在这种静态状态,作为访问链接软件的连续路径,其中大部分位于
自托管服务器上,否则很难找到。
完整条目请参见关于自由代码
推理
请注意从官方开发人员网站下载的最后一个官方软件包,版本 1.486,日期为 2012 年 7 月 15 日,以及手册页中包含的选项:
--findsites=站点列表
设置由 toast find 搜索尚未添加的包的网站或其他位置的列表。 SITELIST 是一个以空格分隔的 URL 和/或特殊单词列表,取自以下列表:freshmeat、googlecode、sourceforge、gnu、cpan 或 all(代表按给定顺序排列的所有前面的单词)。 * 字符将替换为包的名称,以查找它出现的位置。如果你想要一个字面的 * 字符,那就太糟糕了。默认值:全部。
请注意,默认列表包含 freshmeat 和 gnu。正常情况下gnu不应该消失,因为所有的linux都源自GNU软件,而且GNU软件基金会是一个法人实体。另一方面,Freshmeat 是一个项目托管网站,其中大部分现在托管在 SourceForge 或 GitHub 上。另一方面,开发人员已将该列表硬编码到他的 Perl 脚本中的某个位置,并且由于他选择不使用新站点更新该列表,因此当旧站点失效时,脚本将停止工作。
可能的解决方案
- 您将得到的最接近的结果是将 gnu 指定为 --findsites 选项中的唯一选项,即
--findsites=gnu
,但请注意,您无法添加特定于发行版的存储库,因为 perl 脚本仅理解 SITELIST 数组中可用的项目。 - 经过一番挖掘,我找到了 SITELIST 数组:(configure/toast 脚本的第 2,380 - 2388 行):
my(@sites) = ( "freshmeat" => "http://freshmeat.net/projects/$lcname", "googlecode" => "http://code.google.com/p/$lcname/downloads/list", "sourceforge" => "http://www.mirrorservice.org/sites/" . "download.sourceforge.net/pub/sourceforge/$sfname/", "gnu" => "http://ftp.gnu.org/gnu/$lcname/", "cpan" => "http://cpan.uwinnipeg.ca/module/$perlname", );
您可以从此数组中删除 freshmeat,但随后您需要更新处理程序(第 2,400 -2,494 行),删除 freshmeat 搜索,并为要添加的每个存储库类型添加搜索解析...这种方法很糟糕,因为 URL 的不能保证静态,但该数组是一组静态字符串。
5点问题: 用于安装软件包。 10 点问题(预感):现在比特旋转开始了,我意识到 URL 可以改变结构,或者消亡,道德是:当程序员无法控制字符串的方式时,他不应该依赖于搜索字符串格式化。