热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Debian和Gentoo包管理机制比较及延伸

Debian和Gentoo包管理机制比较及延伸--Linux发行版技术-Debian信息,下面是详情阅读。
  如果你现在想安装一套Linux,又不想随着Linux发行版本的版本号,不停的格式化系统,重新安装,或者升级安装。那么,最适合你的只有LFS、Debian和Gentoo。

  本文尝试对Debian、Gentoo的包管理机制进行比较,并由此得出了几个有趣的结论。本文对于Debian、Gentoo的包管理,主要谈缺陷和不足,并且尝试提出解决方法。最后,本人水平有限,失误、不足之处在所难免,还望大家批评指正。

  Debian是老牌的发行版本,有人甚至认为Debian就是GNU/Linux本身,但是,据Debian自己的了解。它只是碰巧通过Linux实现了而已。(Debian,似乎是一种思想?一种生活方式?)

  Gentoo是新生的,成长迅速的发行版本。说他成长迅速,不仅在于它提供了主流和非主流的基于各种硬件的Linux的实现,更在于,它还同时提供*bsd、MacOSX、Sun Solaris(就在Sun开放Solaris之后不久)版本的portage。(最初认识Gentoo,是在QQ上与OpenQ的创始人PuzzleBird聊天,他把Gentoo形容成是下一代的Debian。于是偶相信了,开始了艰难的安装。 不过,还是感谢PuzzleBird,是他让我看到rpm之外的世界,之前偶都是用基于rpm版本的发行版的)

  典型的Debian提供一种基于i386编译的二进制deb包,采用了一套完整有效的工具指令集来保证整个系统软件包的完整、清洁和有效。

  Gentoo的传统上,虽然也提供二进制包,但是,大家意义上的Gentoo,更在于通过源码编译属于自己的系统。通过USE的各个级别(配置文件级别、命令行级别)的设置,Gentoo能够让你轻松得到完全属于自己的,独一无二的Linux系统。

  比较:由于软件包提供的格式不同(一种是二进制文件,一种是源码)。Debian与Gentoo相比,有着更快的系统安装效率。同样的网络情况下,安装Debian要比Gentoo节省更多的时间,通常只需要几个小时,你就可以得到一套完成的Debian系统(包含KDE等等完整的桌面环境)。但是,在我看来,Debian的缺点在于,Debian基于deb的依赖性审查过于严格。也许是因为直接提供的二进制包的缘故。Debian对于同一套软件的细微不同版,也认为是完全不同的。

  ibqt3-mt-dev对下面两个有依赖,可是下面两个已经有firefly补丁的版本了。

  提示:
  libfreetype6-dev: Depends: libfreetype6 (= 2.1.7-2.3)
  but 2.1.7-2.3firefly is to be installed
  libxft-dev: Depends: libxft2 (= 2.1.2-6)
  but 2.1.2-6firefly is to be installed
  Depends: libfontconfig1-dev but it is not going to be installed

  同样的一个软件包,只是由于编译时的小补丁的不同,就完全不能满足Debian要求的依赖关系。只能推倒,重建系统。

  同样的情况,在Gentoo中完全可以通过同一套源码,配置不同USE来实现。也就是说,在Gentoo中,由于个人USE的设置的不同,上面的Debian的两个包,在Gentoo看来就是一个包,只是配置时候的打了不同的补丁。因此,没有所谓的因为依赖而不能安装的问题。

  举例:假设该软件包有两个不同USE,一个是common,一个是firefly,那么对于Gentoo,只要你设定了是采用USE="common"编译,还是采用USE="common, firefly"编译,系统在编译软件包的时候,就会自动决定究竟是否打上firefly的patch。也就是说,在Gentoo中,允许同时存在来自同一源码的,编译时配置不同的二进制文件的存在,而Gentoo在处理依赖时候,除非是的确找不到依赖的文件。否则,Gentoo不会提示出依赖错误(因为确实没有错误)。而Debian在这一点上是过于严格了。

  Gentoo的包管理的主要缺点在于采用源码编译,不能够满足快速安装系统的需要。同时,一旦系统的基准USE发生了变化(这经常发生,尤其是你还是Gentoo新手的时候,你很可能因为不知道哪个软件包采用那种USE才好,而在基准中加入了过多的USE),虽然可以采用emerge --new-use world进行对新USE的编译,但是,这时的Gentoo的依赖的包的编译顺序有时会有问题,而导致编译失败。(这个其实是一个依赖的问题,明明正常是1、2、3的顺序可以编译成功的,但是--new-use之后,emerge可能会错误的安排成了2、1、3的顺序,而导致编译失败)。

  综上,Debian的问题在于依赖的过于严格。对于依赖的问题,可以采用的方法主要有。

  1 强制安装。这是最下策,也是最麻烦的方法。(因为下次遇到同类的问题,还得强制安装,尤其是升级的时候)。

  2 修改依赖关系。虽然我不知道debian的依赖要在哪里改,但是这的确是一条路。不过,这个也不轻松,因为每次都需要手工修改依赖关系。

  3 欺骗Debian,直接将修改过的软件包,以debian原名的形式发布,这样可以解决依赖问题。但是,如果采用了debian的source.list中,如果开启了安全站点检验,这一步就无法通过。

  4 系统推倒重建,安装Debian的官方版本。OK,如果你对中文显示要求不高,可以采用这个办法。不过,这样的话,就没有中文的粗体和斜体,同时,我觉得看起来也不怎么舒服。

  5 就用非官方的版本,不轻易升级。本着够用就好的原则,期待别人解决问题。我,无语。(Hiweed用户适用。向Hiweed致敬)。

  6 构建一套大系统,包含了所有由于补丁的问题所造成的问题的补丁。也就是大量的非官方的补丁。例如构建一套超大的,可以解决所有依赖问题的中文Debian,不妨叫大Hiweed。费时,费力,难与官方发布同步。

  7 为什么不直接将中文补丁提交到Debian官方,或者对应软件开发的官方,这样软件就是Native Chinese Support。岂不是很好?(强烈赞同这个观点,这个应该是最终的解决之道)。

  8 当然,也可以建议Debian修改它的依赖的检测方式。提供一些的灵活的,tiny的版本号,认为也是同样兼容的。

  Gentoo的解决之道:
  Gentoo虽然依赖的问题解决得很好,但是,Gentoo编译时间太长。虽然,你可以采用某些方法(比如,设定最简单的系统,设定复杂的USE,去除编译多余的Locale)来确保系统不编译多余的东西。也可以采用打开ccache的方法,建立数据库来加速c程序的编译。但是,Gentoo的安装时间长(通常桌面是几天,采用kde或gnome的情况),频繁升级的话,更是费时费力。

  虽然我们不能解决升级时的编译问题。但是,我们至少可以解决安装的时间过长的问题。我们的希望来自教主的homeking的ibox,ibox采用livecd的方式,提供给大家一套完整的Gentoo中文解决方案。新版本的ibox将采用kde做为默认,同时提供迅速的安装到硬盘功能。

  Gentoo的未来,在于随着计算机系统性能的不断提高,从源码编译软件的时间成本将会原来越低。同时,如果你有多台电脑,gentoo支持多台电脑采用并行的方式为同一台电脑编译软件。这也可以大大加快编译的时间。

  有人认为Gentoo编译的系统,要比Debian要快。我觉得这不是一个事实。因为大多数的Gentoo的用户不懂得如何去最优化自己的系统。因此,编译出来的系统,优化也是有限的。这就给了Debian很大的机会。另外,USE参数设置的过多,也使得自己的系统多了好多自己不需要的功能。这也是一个原因。

  Debian还有一个缺点,就是虽然Debian安装之后很小。但是如果你需要编译程序的时候,你就会发现Debian还要安装各种各样的headers或source,这些,对于Gentoo则是不需要的,因为Gentoo本身就是从源码编译过来的。不缺少那些东西。
推荐阅读
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Kali Linux 简介
    KaliLinux是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所 ... [详细]
  • scrcpy通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何ro ... [详细]
  • 本文摘自JavaGuide。1、简单易学;2、面向对象(封装,继承,多态);3、平台无关性(Java虚拟机实现平台无关性);4、可靠性;5、安全性;6、支持多线程(C++语言没有内 ... [详细]
  • 安卓及谷歌官网不容易上,在此整理好下载地址,这样就可以直接用迅雷下载了。Eclipse最新Mars版Eclipse(暂时还没被墙)Mac版:http:www.eclipse.org ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
  • 这么多流媒体服务器?你怎么技术选型?
    在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别?下面就来探讨下常见的SFU开源解决方案,当然,你也可以自己实现SFU流媒体服务器 ... [详细]
  • ZOC7 for Mac 7.25.6 好用的终端仿真器
    zoc7mac破解版是一个专业的SSH和Telnet客户端和终端模拟软件,以出色的配置和用户界面而闻名。凭借其令人印象深刻的仿真和功能,通过使用选项卡式会话,键入命令历史记录,回滚 ... [详细]
  • windows平台使用NSP拦截具体进程的域名解析过程(xFsRedir的代理功能之域名代理)
    byfanxiushu2022-10-17转载或引用请注明原始作者。xFsRedir软件其中之一的功能就是实现了全方位的网络代理,从主机代理,到本地代理 ... [详细]
  • 编写健壮且高性能的网络服务需要付出大量的努力。提高服务性能 ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • 是时候做出改变了。当你在选购电脑的时候,你可能会在Windows和macOS之间犹豫,但是可能基本不会想到Linux。尽管如此,这个名气没那么大的操作系统仍然拥有庞大而忠诚的粉丝。 ... [详细]
  • 下载地址http:www.kbengine.org这货不错安装在Linux上安装(CentosDebianUbuntuetc.)服务端,请在终端输入:pythonkbenginek ... [详细]
author-avatar
手浪用户2602884673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有