什么是更好的从* .tar.gz的存储库或安装下载库

时间:2010-08-28 12:05:06

标签: c linux fedora

  

gcc 4.4.4 c89 Fedora 13

我想知道什么是更好的。为您提供示例编译: apache runtime portable log4c

我的fedora存储库中的apr版本是1.3.9。 apr网站上最新的稳定版本是1.4.2。

问题

  1. 从网站下载并安装或使用yum安装会不会更好?
  2. 当您从yum安装时,它可以将内容放在许多目录中。从tarball安装时,您可以将包含和库放在您想要的位置。
  3. log4c的版本是相同的,因为这是一个旧项目。
  4. 我使用yum下载了log4c。我将所有包含和库复制到我的开发项目目录中。
  5. 即。

    project_name/tools/log4c/inc
    project_name/tools/log4c/libs
    

    但是,我注意到我必须在/usr/include目录中查找一些标题。

    非常感谢任何建议,

4 个答案:

答案 0 :(得分:4)

如果您的发行版的软件包存储库中的版本足够新,请使用它。

优点是通过您的分发自动更新,轻松快速的安装(包括自动获取和安装依赖项!)和轻松删除软件包。

如果你自己安装.tar.gz的东西,你必须自己发布 - 跟踪安全问题和错误。

使用分发包,您也会关注安全问题,但是经销商会为您做很多工作(比如开发补丁,重新打包,测试和捕获严重的东西)。当然,每个经销商都有一个策略如何处理不同包存储库的不同类别的问题。但是对于你自己的.tar.gz安装,你没有任何关系。

答案 1 :(得分:2)

我认为这是一个古老的问题。并且它在所有Linux发行版中都是一样的。

包裹是由某人创造的 - 该人对于应该去哪里有意见。您可能不同意 - 但是通过使用软件包,您可以不遗余力地追查编译和安装软件所需的所有依赖项。

因此,为了完全控制:自己动手 - 但要为可能的工作做好准备 否则使用包裹。

我的观点: 使用包直到不可能这样做(冲突,需要编译参数,......)。我宁愿花时间让软件为我工作,也不愿花时间编译。

答案 2 :(得分:1)

如果你想构建一些必须与Fedora中包含的Apache一起工作的东西,那么最好在Fedora中使用apr版本。这样您就可以获得自动安全更新等。如果您想自己开发新内容,那么跟踪上游可能会很有用。

此外,通常你的发行版提供的标题应该由gcc& amp;合。无需复制它们,因此yum / rpm存储它们的位置并不重要。

答案 3 :(得分:1)

我通常使用我的发行版提供的软件包,如果它们是足够新的版本。这有两个原因:

1)如果发现旧的软件包中的安全漏洞,有人会确保我获得新的软件包。

2)它节省了我的时间。

当我设置开发项目时,我从不创建自己的include / lib目录,除非项目本身是我放在那里的相关文件的授权源。

我使用pkg-config提供必要库的位置并将文件包含到我的编译器中。 pkg-config使用一些.pc文件作为关于事物应该在何处的信息的来源,并且这些文件由为您的发行版创建包的人员维护。有些库不提供此文件,而是提供替代的“-config”脚本。我将提供两个例子:

我没有运行Fedora 13,但是Ubuntu 10.04的一个例子就是;

*)安装liblog4c-dev

*)命令“log4c-config --libs”返回“-L / usr / lib -llog4c”......

*)命令“log4c-config --cflags”返回“-I / usr / include”

对于使用pkg-config的示例(我将使用SDL作为示例):

*)安装libsdl1.2-dev

*)命令“pkg-config sdl --libs”返回“-lSDL”

*)命令“pkg-config sdl --cflags”返回“-D_GNU_SOURCE = 1 -D_REENTRANT -I / usr / include / SDL”

...因此,即使另一个发行版决定将内容放在不同的路径中,也有一些脚本可以为您提供可靠的答案 - 因此可以在大多数发行版上构建内容。 Autotools(automake,autoconf等)和amd cmake非常有助于确保您不必处理这些问题。