首页 / 操作系统 / Linux / Ubuntu编译安装软件就那么简单
编译软件 Ubuntu仓库有着成千上万的软件,如果加上第三方的仓库,你可以得到更多!然而,有些情况下,可能需要你通过源码来编译安装软件(相关指导请移步Compiling Easy How To ):1、仓库中的软件包不可用;2、仓库中的软件包太旧了;3、仓库中的软件包,因某些原因导致程序的个别功能不可用;4、仓库中的软件包可能有些bug被所有者修复了;5、你想通过测试来帮助作者修复某些bug;6、或者只是你想从头开始,试试手动编译一个程序;环境 你需要根据写成相关程序的语言,来编译软件。被要求编译的应用程序通常是由C和C++写成的,在这种情况下,你需要安装编译器gcc,可以通过安装build-essential软件包来获取。通常情况下,你需要下面的命令操作来实现:sudo apt-get install build-essential为了能够运行configure和autogen.sh文件,需要更多的程序:sudo apt-get install automake最后,需要CheckInstall安全的将程序装载到你的系统中:sudo apt-get install checkinstall如果程序是由java写成的,那么你还需要一个java run-time和compiler。你可以根据java页的说明来安装java。有时候需要一个基于构建工具ant的java,软件包可以从ubuntu仓库获得:sudo apt-get install gcj如果程序是由解释语言写成的,比如python和perl,那么你仅仅需要一个解析器,这个是ubuntu默认安装的,你可以直接运行程序,绝大多数情况下,你可以直接从ubuntu仓库中安装那些为了运行程序而必须的python和perl程序。更多解释语言的情报请参考文章结尾!你真的需要编译吗? 如果你编译软件只是因为软件仓库里的不可用,那么请在Ubuntu Package Search中搜索软件包!很多作者同时也制作了他们自己的PPA,它们也可以被添加到你的软件源里。许多作者制作的PPA源的地方是Launchpad ,你也可以通过命令行,使用下面的命令搜索相关软件的keyword(当然了,请使用实际术语代替keyword)!apt-cache search <keyword>获取源 通常,源码包会以作者自己网站的某种形式来提供!通常的格式是tar.gz和tar.gz2或者zip。你可以使用文件解压缩工具,通过下面的命令来解压他们:tar -xvf file.tar.gz tar -xvf file.tar.bz2 unzip file.zip有时候,也需要使用CVS剪切边缘代码,你可以通过sudo apt-get install cvs 来安装 CVS 。例如,检索 NetworkManager的源码,写出下面的命令: cvs -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome logincvs -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome co NetworkManager如果 你是从 CVS 安装,请参阅文章最后的介绍。 很多软件包 ,可以使用 Bazaar ( sudo apt-get install bzr )从 upstream 获取当前的代码,而无需手动查找版本控制位置。例如: bzr get lp:network-manager三步编译 绝大多数 linux 上需要源码安装的程序可以通过 ./configure ; make ; make install 这三步来实现安装,而最困难的一步往往都在 ./configure 这一步,那后面的几步是可以很轻松的完成的。 Configure configure 是用来做下面这些事的一个脚本: 1、用以检查计算机建立 包所必须的完整性; 2、帮助你根据需要改变默认 的路径; 3、用以激活 / 禁用编译程序 中的各种选项; 4、用以改变程序将要被安装 的路径; 你可以通过执行下面的命令来查看特定 configure 脚本所提供的选项个功能: ./configure --help | less例如 ,默认的 configure 脚本会指定安装到 /usr/local 下面,如果你想改变路径,可以执行下面显示的 configure 脚本命令: ./configure --PREFIX=/opt如果 你真的想从零开始编译,可以认真研读一下 README 或者 INSTALL 文件。你会看到需要什么样的软件碎片,比起在包系统中,在这些文件中他们通常有着不一样的名字。接下来,可以通过使用 apt-cache工具 来寻找相应的包。如果你已经通过仓库中编译包,那么还有一个诀窍,就是通过下面的命令来安装包的依赖: sudo apt-get build-dep <package>这可以确保所有所需的包以来都可以被安装,以期 configure 不会由于过旧的依赖包而报错,否则你将不得不继续编译相关的依赖。 寻找 并修复 configure 的故障 恰巧 在下面这几种情况下, configure 可能会失败: 1、编译 的时候需要 -dev 包; 2、要编译 GNOME 应用那么需要相应的 gnome-level ;而编译 KDE 应用则需要 kde-level ; 3、C 和 C++ 库的名称总是以 lib 开头,因此,如果 ./configure 报错说丢失了库 foo ,那么你需要安装 libfoo-dev 包; 4、如果 configure 说要“ X includes” ,那么你可能需要安装下面这些包“ xlibs-dev,xlibs-static-dev,x-window-system-dev”, 注意,有时候,仅仅需要 xorg-dev和 x-dev 就可以了。 -Racecar56 Under Jaunty则需要安装 xorg-dev和libx11-dev。5、查看哪些包被需要的技巧,可以使用auto-apt工具或者apt-file工具(auto-apt可能更快一些):sudo apt-get install auto-aptsudo auto-apt updateauto-apt search missing-file.h使用auto-apt和上面是一样的,如果把auto-apt替换成auto-apt!6、如果编译软件禁用失败的选项,可以使用./configure –disable-FEATURE选项。7、如果你自己没能修复你遇到的问题,你也可以寻求ubuntu官方的帮助哦。 如果根本不存在configure的文件,那么最好查看一下configure.ac文件(有必要认真阅读一下INSTALL和README文件),如果configure.ac文件存在,那就是开发者忘记创建最终configure文件了,你可以自己创建,不过需要autoconf包:sudo apt-get install autoconf安装成功之后,键入:autoconf如果幸运的话,一个可工作的configure文件应该被创建了。编译 可喜可喝,configure步骤已经完成了,真正的编译安装可以开始了。非常简单:make现在如果一切顺利的话,你应该的到了一个可工作的程序copy在你的源目录下,你可以运行下面的命令来试用一下:src/program_name如果程序这一步失败了,那么就有可能是程序的bug,这时候你最好联系一下作者,告诉他程序的问题。安装软件包如果一切进展顺利的话,你可以键入下面的命令来安装程序:sudo checkinstall使用CheckInstall可以创建一个.deb包,这货稍后可以很容易被移除哦!然而,由于某些原因,你不想使用CheckInstall,这是安装的最后方法(不推荐):sudo make install注意:1、如果程序是内核的一个组件,那么还需要gcc-3.4(on breezy)和kernel-headers,他们稍后可以使用sudo apt-get install gcc-3.4 linux-headers-$(uname -r) 来安装。请注意,每内核升级后,那么内核组件也必须重新编译,而新的 header 也必须重新下载。要编译完整内核,请参见 KernelCompile。2 、如果你想重新编译已经存在的 debian 的软件包,可以使用 dpkg-buildpackage -rfakeroot ,如果个别包丢失了, build script 会告诉你包的名字! 3 、如果你从 revision control (CVS, Bazaar, 等.)进行编译,通常需要获取revision control的源码,之后增加一个步骤,运行autogen.sh脚本,为你生成configure脚本。解释语言 通常解释语言在必须组件未安装的情况下会运行失败。1、perl组建通常类似于foo::bar(例如xml::parser),然而,它的包为称为ibfoo-bar-perl(libxml-parser-perl),通过apt-cache搜索可以帮助找到名称稍许变化的文件,例如:apt-cache search foo | grep bar apt-cache search xml | grep parser2、python组件被称作python-module,因此python mysql组建被称作python-mysqldb,映射在这里少有一致,apt-cache可以给一些帮助!像这样搜索一下:apt-cache search python | grep mysql通常所需帮助文档在被要求安装的组件当中!3、ruby组件的命名和perl有些类似,因为activesupport是libactivesuport-ruby [1.8 |1.9 ](如果没有特别要求,默认是1.8)。当然了,你也可以安装ruby包管理平台rubygems ,然而, debian/ubuntu 关闭了一些升级功能,确保 rubygems 可以使用 apt 正常工作 。如果你想保持 ruby 的最新版本,可以看一下 RubyOnRails。 apt-cache search ruby | grep activesupport评论 为了找到更好的技巧 ,你可以考虑在 CompilingEasyHowTo获取更加有好 的帮助。 而且 ,你会发现 CheckInstall也是很有帮助的 : 1 、 checkinstall 不是文档中描述的默认方法?有些人刚开始编译的时候不喜欢使用 checkinstall ,有原因吗? 修改每一页 ,我都是相当的谨慎,我希望大家都能同意! 2 、 file-roller不能用来解压文件 ?没有人必须要记住 “-jxvf”!请介绍一些尽可能简单的操作工具,高级用户可以在数百万的网络文档里找到命令行的捷径,“ this” 文档应该只提供明了的方法,这样可以让大家更注重其 ubuntu 来,而且也可以更容易的运行那些鲜为人知的软件包! 实际上 , “tar xf file”已经足够 了, GNU tar已经可以自动探测 并解压缩它们了。如果用户想要详细的输入信息,则可以使用 "tar xvf file" 。 要是 shell 中编译的最后几步在提供一个 GUI 步骤,可能导致更为严重的问题! 这则指导说明是给开发者的还是用户的? 原文地址:点击浏览 更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2本文永久更新链接地址
收藏该网址