个人工具

UbuntuHelp:CompilingEasyHowTo/zh

来自Ubuntu中文

Boluor讨论 | 贡献2008年4月30日 (三) 16:08的版本

跳转至: 导航, 搜索


让我们假定你是一个具有一定经验的Linux使用者,你想从Internet线下安装一个应用程序,但是没有能在你的系统上正常工作的软件包。大量用户,甚至具有相当经验的用户,从tarball(译者注:这里指用tar打包压缩的源码)到安装完毕的程序的过程中都会 遇到问题,仅仅是因为他们不了解完成这一任务的相当简单的几步。但是只有你已经知道如何去做,它才显得简单!所以,这里是一个 从开发者站点安装东西的快速指南。

第一步:为制作软件包准备系统

默认情况下,Ubuntu并不预装需要的工具。你需要安装build-essential包,以便处理大部分的软件包。既然你可能想要得到一些不提 供发行版的项目的代码,你应该同时安装cvs和subversion包————如果你觉得你需要它们。接着你应该为你自己建立一个普通的目录,你将在这个目录下制作软件包。我建议创建/usr/local/src,并运行sudo chown username /usr/local/src,以及 sudo chmod u+rwx /usr/local/src(后者只是出于安全考虑)。做完这个,你可以开始安装了,先设法获得你需要的程序(源码)。

第二步:獲得所需軟體

大多數你通常需要的軟體來自釋放的tarball。它們只是一些壓縮文檔,通常的格式為.tar.gz或.tar.bz2————好比Windows上的.zip 文件和MacOSX上的.sit(如果這樣的類比對你有幫助的話)。若你想裝的軟體的源碼是這種格式的話,宜將其下載到我們在第一步 里建立的/usr/local/src目錄。如果你的tarball是個.gz文件,運tar xzvf tarballname.tar.gz以解壓縮,對.bz2文件,使用類似的tar xjvf tarballname.tar.bz2命令。

在罕見的情況下,是從cvs或者subversion倉庫取得程式,一般開發者會在他們的網站上提供指導的。若已安裝第一步列出的軟體包,只需轉到 /usr/local/src目錄(cd /usr/local/src),運行列出的命令。具體的步驟因程式而異,所以這裡我沒法幫你,但是只要有上述軟體包,開發者提供的 指導應該能順利運行。

第三步:解决依赖性问题

现代Linux发行版有一个值得称道的地方,就是它们替用户处理依赖性问题。这就是说,如果你想安装程序,apt-get程序将确保在你安装的时候,安装 了所有需要的库以及其他依赖程序,安装一个程序再简单不过了,你永远只需要指定所要按照的程序,apt-get程序会完成剩下的工作。不幸的是, 处理tarball完全不是这回事,你得手工解决依赖性问题。正是这一阶段绊倒了一些相当有经验的使用者,他们常常由于无法搞清楚所需的依赖程序,而在 沮丧中放弃。

作为预备,安装apt-file包,接着运行sudo apt-file update。这将下载所有可用的软件包以及这些软件包所含的所有文件的列表,这可能是个大 家伙。apt-file有一些有趣的功能,最有用的两个是apt-file search(按文件名搜索)和apt-file list(列出给定的软件包中的所有文件)。

要检查你的出现的依赖性,转到你第二步里创建的目录(cd /usr/local/src)。解压缩tarball或者下载自cvs/subversion的文件,这会在 /usr/local/src下建立一个含有源码的子目录。这一新建目录会包含一个叫做"configure"的文件,那是一个确保程序可以在你的电脑上编译的脚本。 运行命令./configure来运行这个脚本[[FootNote(若不加任何参数运行 ./configure,你将使用程序的默认设置。大多数程序有一些你可以启用或禁用的设定,若对此感兴趣,察看README和INSTALL 文件,察看开发者的文档,许多情况下,./configure --help将列出一些可以修改的关键配置。一个非常常用的参数是./configure --prefix=/usr, 这将把你的应用程序安装到/usr,而不是如我的说明,装到/usr/local。)]]。这个命令会检查你是否有安装程序所需的所有程序————大多数情况下答案是否定的, 那它就会在运行中遇到错误,并提示需要某个程序。

如果上述情况发生了,输出的最后一行会类似下面的:configure: error: Library requirements (gobbletygook) not met,后面还有一些 我们不关心的废话。但就在上面它会列出找不到的文件名称,据我的经验,大多数情况下,会列出一个以".pc"结尾的文件。你接着要做的是运行 apt-file search 找不到的文件名称.pc,这会告诉你在哪个Ubuntu包里有缺少的文件。接下来,你只需sudo apt-get install 所需包安装 即可。接着再试试运行./configure,看看行不行。如果你得到一堆以config.status: creating Makefile结尾的文本,并且 config.status: creating Makefile后面明显没有错误信息,那你就可以进入一步了。

第四步:制作和安装

如果你已经到这里了,那你已经完成最艰难的部分了。现在你需要做的只是运行命令make,这会完成程序的实际制作(编译)。若程序很大或你的电脑非常 缓慢,去喝一杯咖啡之类的。完成后,运行sudo make install,它会为你完成最后阶段的安装。完成后(这该不会花多久),你的程序将被安装到 /usr/local/bin,你应该可以顺利地运行它。

Step 5:附言

如果这些对你而言太难了,别为此烦恼。毕竟你用的是Ubuntu Linux,它已经把所有你实际需要的软件打包了。如果还没有软件包,它认为,除了一些特殊情形,你并不真的需要这个软件,而且不管怎样,几个月内有人会为你打包的。事实上,你需要这样制作和编译的程序仅仅是那些新的(也许现在还不稳定或者还没为你的 桌面准备好)————若嫌此编译过程过难,好,也许你该重新考虑一下为什么你想这样做,然后只要等几个月以后的下一个稳定的发行版。


若所求软件包非常重要,并且你认为它值得适当地出现在Ubuntu中,也许你可以联系 Masters of the Universe,看看他们能否为你做这项艰难 的工作———— 如果他们将某个软件打包了,那任何人就不用编译即可安装了。但是,如果你可以顺利完成上面的编译,在通向专家级Linux用户的道路上,你将走的更好——-在你编译了几次后,你会为所有的这一切如此容易而感到惊讶的。祝你好运!

注:容易指“比你扯下头发,一边绕着屋子跑一边尖叫Linux多么糟糕容易“。并不是真的很容易。