我应该把想要编译的源代码放在哪里?

以下是情景描述;我已经下载了一个tarball。我已经将其中包含的所有源代码提取到我的主文件夹"/home/zolomon/SourceCode"中。但是当我想要编译它时,应该把SourceCode目录及其内容放在哪里?这有关系吗? 在大多数情况下,安装时它会自动将文件安装并放置在正确的位置吗?

在这种情况下,我正在谈论RubyGems


1你知道吗,你只需安装rubygems包就行了。 - dv3500ea
1不,如果我希望安装Rails 3(但那是另一回事!)? - Zolomon
1我确认Rails 3与Ubuntu当前的gem包不兼容。虽然它没有直接回答你的问题,但我建议你使用rvm。我刚刚使用它进行了干净的Ruby/Rails 3安装,在Ubuntu 10.04上正常运行。http://rvm.beginrescueend.com/ - Olivier Lalonde
2个回答

目录下的文件/usr/local/不受Debian软件包管理系统控制。因此,将程序的源代码放在/usr/local/src/是一个好的做法。例如,您可以将名为"foo.tar"的软件包文件提取到目录/usr/local/src/foo中。编译完成后,将可执行文件放在/usr/local/bin/,库文件放在/usr/local/lib/,配置文件放在/usr/local/etc/
如果您的程序和/或文件确实必须放在其他目录中,仍然可以将它们存储在/usr/local/中,并从所需位置建立适当的符号链接到/usr/local/的位置,例如,您可以创建以下链接:
 ln -s /usr/local/bin/foo /usr/bin/foo

无论如何,如果您获得的软件包具有允许再分发的版权,您应该考虑制作一个Debian软件包,并将其上传到Debian系统中。成为软件包开发者的指南包含在Debian政策手册中。
来源:http://www.debian.org/doc/FAQ/ch-compat.en.html

2我从来不喜欢那个选项,因为它要求我在所有文件的创建、修改等操作中使用root权限。 - levesque
太棒了,谢谢!不过,我需要了解一下在Ubuntu中哪些文件被归类为二进制文件、库文件和配置文件——我刚意识到自己对它们的区别一无所知! - Zolomon
1我认为那些建议是错误的或过时的。一般来说,源代码应该只存在于你的主目录中。/usr/src/和/usr/local/src/目录大多属于过去的时代。 - Colin Watson
@Zolomon 我知道这是老问题了,但对于那些需要关于“什么是二进制/库/配置”的信息的人来说,我还是解释一下吧。-- 二进制:可执行文件,可以运行(例如,ls 是一个二进制文件,因为它是编译代码)-- 库:依赖项,被 #include(或等效方式)引用 -- 配置:配置文件告诉程序“嘿,按照这样做”或“嘿,在这里而不是那里做这个”(对程序进行配置)。 - 0xLogN

是的,您可以将源代码放在任何地方。在安装过程中,它会将所有文件放置在正确的位置。在您的情况下,您的源代码位于/home/zolomon/SourceCode,所以您可以从那里编译它。这不是一个问题。