LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1465|回复: 24

请就软件包管理工具发表您的意见

[复制链接]
发表于 2005-4-15 21:00:01 | 显示全部楼层 |阅读模式
我准备设计一个软件包管理工具。经过一系列的思考,我总结了一些特性。正如下面指出的,我希望这个管理工具只是一个普通的工具,最重要的是,让一个 LFS 用户觉得方便,但(至少在一定程度上)不会觉得因为使用了这个工具失去了 LFS 的自由。下面就是我的结果,请大家提出意见和建议。需要说明的是,有一些想法现在还没有成型,所以没有写出来。所以,只要大家指出希望一个“理想”的工具具有这里列出的其他特性就可以了。如果您反感安装这样一个包管理工具,就请您这样想(这也是我的初衷):有这样一个软件,就如同 gcc、make 一样,只不过它的功能是帮助人安装其他的软件。

设计原则

包管理工具应该仅仅提供给系统管理员安装、删除某一个软件的协助,由管理员来决定安装哪些软件、将软件安装到哪里和软件工作的方式。同时,包管理工具也应当作为一个普通的软件,可以反复地被安装、升级和删除。

说明  这个工具应该保留 LFS 的自由特性,因而绝不应对软件包的安装方式有任何假设。由此得出的结论是,首先,这个包管理工具是独立于发行版的。其次,它对 LFS 的用户会很有帮助。一个期望的结果是,去除这个包管理工具后系统类似于一个 LFS 系统,并且去除的工作非常简单。

特性

下面列举了这个包管理工具具有的特性。

- 包管理工具完成任务的步骤完全是透明的。

说明  如果能够使使用这个包管理工具同执行 configure、make 和 make install 类似但又有所强化(在保证自由的前提下),将是非常完美的。

- 搜索、安装、删除和更新软件包都可以(但不是只能)用一个命令来完成。

- 保存管理员对安装时软件包配置的要求,尽可能自动配置每个软件包。

说明  这个特性的目的是实现类似于 Gentoo 中 USE 变量的功能。这是一个非常值得实现的功能,因为对于追求完美的人来说,这通常能够减少软件安装时仔细查看 ./configure --help 的输出的时间。

- 能够统一更新系统上的每个软件包。

- 能够真正干净地删除一个软件包中的所有内容。这要求安装时记录每个软件包的内容。

- 具有安装历史。安装完一个软件包后,可以(但不是必须)指出安装的原因。同时,可以在安装完一批软件包后定义一个时间戳,将在此以后安装的软件同先前的软件区分开来。能够用灵活的方式查询这个历史从而最大限度地提供系统上有哪些无用软件包的信息。

说明  由于不准备提供依赖性问题的解决方案,删除软件将会是一件痛苦的事。但是,如果管理员对系统上安装的软件非常了解,有了安装历史的帮助这会轻松很多。如果上一点,“能够真正干净地删除一个软件包中的所有内容”被实现,就能够做到不必重新安装来更换系统里的一大堆软件。

- 可以将系统上已安装的软件打包。

说明  这类似于 Gentoo 中的 quickpkg。由于最大的可能是从源代码安装软件,这个功能对于在同一台机器上重新安装系统时很有帮助。

- 尽最大可能提供对二进制包的支持(这个功能可能会引起大多数 LFS 用户的反感──不必担心,这不是必须使用的功能,因此只要不用它就可以认为没有这个功能)。

- 提供编译时间的信息(SBU)。
发表于 2005-4-16 23:42:01 | 显示全部楼层
如果这两点做好了,就是我想要的那种包管理软件。

- 搜索、安装、删除和更新软件包都可以(但不是只能)用一个命令来完成。
- 能够真正干净地删除一个软件包中的所有内容。这要求安装时记录每个软件包的内容。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-17 12:33:27 | 显示全部楼层
Post by performcanhe
如果这两点做好了,就是我想要的那种包管理软件。

- 搜索、安装、删除和更新软件包都可以(但不是只能)用一个命令来完成。
- 能够真正干净地删除一个软件包中的所有内容。这要求安装时记录每个软件包的内容。

这正是我要实现的核心内容:工具仅仅帮助管理员,而不是强迫管理员使用它。这几天我的思路有了些变化,我尽力使这个工具能够这样使用:

- 最基本的,管理员可以认为没有这个工具。也就是说,安装软件和 LFS 里一样,解开源代码,configure,make,make install。但是这样也不会得到因为使用工具而带来的任何好处。
- 或者,可以加上一点协助:使用被改写了的命令,过程是解开源代码,xconfigure,xmake,xmake install。假设 xconfigure、xmake 是被修改了的命令,这样能够使用包管理工具的功能,但管理员仍然知道他在做什么。(我希望这样可以使这个工具对于管理员来说是透明的,而不是尽力隐藏可能比较复杂的细节。)
- 最后,如果没有时间,可以完全使用工具,用一个命令来安装软件。

不过,当我深入到问题内部后,发现有些特性处理起来比较困难。所以我不保证我能在很短的时间内完成。但还是谢谢您的回复,我会首先完成上面这两个功能(这似乎是 LFS 用户最需要的功能。其他的,呵呵,系统都是自己造的,还有什么困难的呢?)。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 08:50:31 | 显示全部楼层
关注,呵呵!^_^
回复 支持 反对

使用道具 举报

发表于 2005-4-18 09:25:39 | 显示全部楼层
记录软件包内容挺麻烦的,印象里除了package user方法外,其他的都不完善。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 10:01:50 | 显示全部楼层
其实我也早就有这个想法,一个包管理软件对于一个系统是绝对必要的,只要你想要长期的使用一个系统,而不是只是玩一下,你就必须处理包的问题。同时我认为你不处理依赖关系的话,会让你的软件失色很多。当然,如果只是玩一下,那么就无所谓。我一直在找同道中人,可以写一个像你说的这样的包管理软件不过要包括依赖关系,有空可以聊一聊。

从我的角度,我认为应该有两套记录,一套是包本身的,一套是系统的。应该利用Linux下数据库的强大功能来实现。就我而言,没有多少系统管理员不会愿意去使用一个完美的包管理系统。只不过现存的包管理系统都有这样那样的缺陷,所以才会逼使大多数人不得不独自面对这样的现状。一个很好的起点是ALFS。如果谁有兴趣,我们应该可以讨论一下。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 10:31:08 | 显示全部楼层
希望你能实现这个功能:

假设,我要安装stardict-1.0.0-xxxyyyzzz.xxx,同时附带一大堆可能的依赖包,那么我要搜索并安装“星际译王 1.0”,而不是逐个安装那些用文件名来表示的包
回复 支持 反对

使用道具 举报

发表于 2005-4-18 12:12:24 | 显示全部楼层
如果要这种自动化的安装,其实Debian已经做得很好。不过我们可以做的,是给自己更大的选择权,不过要做到这些,工作量是非常大的。我认为至少要有一个四到五人为核心的小组才可能完成。就是说你可以定义你自己的依赖关系。然后告诉这个包管理器,就可以自动的去下载,安装完成。

我刚刚装Debian的时候,就是对那个讨厌的Exim4很反感,虽然可以修改。但始终是不爽,因为系统没有给你选择的权利。而LFS就是要给用户最大的灵活度。当然,风险是要有的。因为不可能进行这样的多样性测试。但是,跟所得到的好处比起来,我认为实在是不算什么。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 13:21:50 | 显示全部楼层
是否可以借鉴debian软件包的管理思路,而反其道而行之,即想 windows的注册表一样,用户可以随便安装软件,但是安装后,在你的管理工具中注册,以便以后的升级或者卸载,你以为这样怎么样?
我想如果能够做到这一点,Linux下的软件安装是一场革命.
回复 支持 反对

使用道具 举报

发表于 2005-4-18 13:28:57 | 显示全部楼层
LFS推荐的最强包管理是keep all in head
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表