Linux系统下 源码软件最简单的安装方法,linux源码


在linux下的很多软件都是通过源码包方式发布的,而常见的二进制包,比如rpm和deb,软件开发者必须为每种特定的平台定制好专门的软件包,但是源码软件安装起来挺麻烦的,下面我们一起来看看源码软件最简单的安装方法

在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包,不同的最终用户经过编译就可以正确运行,这也是非常符合c语言的设计哲学的,一次编写,到处编译么,而常见的二进制包,比如rpm和deb,软件开发者必须为每种特定的平台定制好专门的软件包,这个通过rpm文件的后缀名就可以初见端倪,比如ppc,sparc,i386之类,在这里不做过多的陈述,其实源码安装软件远没有很多朋友想象的那么复杂,下面我在这里尽可能详细的做一些陈述,如有谬误,欢迎朋友们拍砖!

安装的具体步骤:

___FCKpd___0nbsp;tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2)___FCKpd___0nbsp;cd XXXX___FCKpd___0nbsp;./configure___FCKpd___0nbsp;make# make install
___FCKpd___1nbsp;make clean

安装完成后用来清理临时文件

# make uninstall

复制代码

用来卸载软件

解压:
        最常见源码包的就两种(XXXX.tar.gz or XXXX.tar.bz2),其实这些源码包都是由2个工具压缩而成的,tar.gz结尾的文件用到的工具是tar和gunzip,而tar.bz2结尾的文件所使用的工具是tar和bzip2,之所以这样做是因为,tar仅仅能够打包多个文件但是没有压缩的功能,而gz和bz2却刚好相反,仅能够压缩单个文件,这样我们常见的源码包实际上是通过tar先将不同的源文件打包,然后再通过gunzip或者bzip2压缩后发布的,当然这两个步骤可以通过一条命令实现:

___FCKpd___2nbsp;tar zcvf XXXX.tar.gz XXXX(or tar jcvf XXXX.tar.bz2 XXXX)

复制代码

解压的相关命令如下:

___FCKpd___3nbsp;tar zxvf XXXX.tar.gz___FCKpd___3nbsp;tar jxvf XXXX.tar.bz2

复制代码

./configure:


        解压完成就正式开始安装了(补充一点,开始configure之前,如有必要,请使用patch工具为源码打上相应的补丁),首先跳转到源码的解压目录,众所周知,开始configure前还是应该仔细阅读源码目录下的README或者INSTALL文件,好多安装中的注意事项在这里都有所罗列,configure实际上是一个脚本文件,在当前目录中键入"./configure",shell就会运行当前目录下的configure脚本,有一点必须说明,在整个configure过程,其实编译尚未进行,configure仅仅是做编译相关的准备工作,它主要对您当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在,如果在检测的过程没有任何错误,你很幸运,configure脚本会在当前目录下生成下一步编译链接所要用到的另一个文件Makefile,当然configure支持及其丰富的命令行参数,可以键入"./configre --help"获取具体的信息,最常用的恐怕就是:

___FCKpd___5nbsp;./configure --prefix=/opt/XXX

它用来设置软件的安装目录. 

make:
        如果configure过程正确完成,那么在源码目录,会生成相应的Makefile文件,Makefile文件简单来说包括的是一组文件依赖关系以及编译链接的相关步骤,事实上真正的编译链接工作也不是make所做的,make只是一个通用的工具,一般情况下,make会根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序:

___FCKpd___6nbsp;make


make install:
        当上面两个步骤正确完成,代表着编译链接过程已经完全结束,最后要做的就是将可执行程序安装到正确的位置,在这个步骤,普通用户可能没有相关目录的操作权限,临时切换到root是一个不错的选择,"install"只是Makefile文件中的一个标号,"make install"代表着make工具执行Makefile文件中"install"标号下的所有相关操作,如果在configure阶段没有使用"--prefix=/opt/XXX"指定应用程序的安装目录,那么应用程序一般会被默认安装到/usr/local/bin,如果/usr/local/bin已经存在于您的PATH中,那么安装已经基本结束:

#make install


make clean:
make uninstall:
        这两个步骤只是安装的后续操作,有一点必须注意,"clean"和"uninstall"也是Makefile文件中相应的两个标号,执行这两个步骤的时候Makefile文件必要保留,"make clean"用来清除编译连接过程中的一些临时文件,"make uninstall"是卸载相关应用程序,与make install类似,make uninstall也需要切换到root执行,不过"uninstall"标号在好多Makefile中都被省略掉了,朋友们完全可以自己在相应的Makefile文件一探究竟.

Why?
        在这里我尝试着解释一下上面这些步骤存在的理由,从C语言的角度来说,一个程序从源码到正确生成相关的可执行文件,下面这些部分必不可少:源文件,编译器,汇编器,连接器,依赖库,通过上面几个步骤,朋友们应该已经知道,真正执行编译链接操作的步骤只有一个(make),那其他步骤存在的理由何在?
        有一点是肯定的,我在自己的电脑上使用C语言写一些自娱自乐的小程序,也没有用到"configure or make install"之类的命令,顶多自己写个Makefile管理源文件的依赖关系,可是软件开发者不同,他必须考虑到软件的可移植性,他开发的软件不能仅仅就在他自己的pc上跑吧?不同的平台可能连硬件体系结构都不同,这样就导致了Makefile的不可移植性,为了解决这个问题,开发者通常使用autoconf之类的工具生成相应的configure脚本,而configure脚本就是用来屏蔽相应的平台差异,从而正确生成Makefile文件,然后make再根据configure的劳动成果(Makefile)完成编译链接工作.        
        至于"install or clean or uninstall",也只是对应着Makefile文件中不同的规则,关于Makefile的详细信息,朋友们可以自行查阅相关的文档.

一个例子
        下面是我在自己的pc机上源码安装tar工具的过程,权当做是上面这些步骤的一个具体事例吧:

[root@localhost ~]# head -n 1 /etc/issueCentOS release 5.4 (Final)[root@localhost ~]# uname -srLinux 2.6.18-164.el5[root@localhost ~]# gcc --versiongcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)Copyright (C) 2006 Free Software Foundation, Inc.

这个是我的系统信息。

[root@localhost tools]# pwd/root/tools[root@localhost tools]# lstar-1.23.tar.bz2[root@localhost tools]# tar jxvf tar-1.23.tar.bz2......[root@localhost tools]# lstar-1.23  tar-1.23.tar.bz2[root@localhost tools]# cd tar-1.23[root@localhost tar-1.23]# lsABOUT-NLS     build-aux   configure     gnu      Makefile.am  po       srcacinclude.m4  ChangeLog    configure.ac  INSTALL  Makefile.in  README   testsaclocal.m4    ChangeLog.1  COPYING       lib      Make.rules   rmt      THANKSAUTHORS       config.h.in  doc           m4       NEWS         scripts  TODO

解压原文件包,可以发现其中包括了configure脚本和README文件。

[root@localhost tar-1.23]# mkdir -v ~/tarmkdir: 已创建目录 “/root/tar”[root@localhost tar-1.23]# ./configure --prefix=/root/tar......[root@localhost tar-1.23]# echo $?

建立软件安装目录,并configure,检查configure返回结果,为0代表运行成功.

[root@localhost tar-1.23]# ls -FABOUT-NLS     ChangeLog.1     configure.ac  m4/          po/       tests/acinclude.m4  config.h        COPYING       Makefile    README    THANKSaclocal.m4    config.h.in     doc/          Makefile.am  rmt/      TODOAUTHORS       config.log      gnu/          Makefile.in  scripts/build-aux/    config.status*  INSTALL       Make.rules   src/ChangeLog     configure*      lib/          NEWS         stamp-h1

复制代码

可以看到Makefile文件已经被成功建立.

[root@localhost tar-1.23]# less Makefile | grep install:           || { echo "ERROR: files left after uninstall:" ; install: install-recursiveuninstall: uninstall-recursive

在建立的Makefile中存在install和uninstall标号

[root@localhost tar-1.23]#make......[root@localhost tar-1.23]#echo &?

0

make成功

[root@localhost tar-1.23]#make install......[root@localhost tar-1.23]# ls /root/tarbin  libexec  sbin  share[root@localhost tar]# cd /root/tar/bin[root@localhost bin]# lstar[root@localhost bin]# ./tar --help......[root@localhost tar-1.23]#echo &?

0

安装并简单测试成功。


Linux下怎安装程序?

很多新手对linux下的软件安装存在误解,现在简单解释一下:这类源代码包需要解压后(tar.gz的用tarzxvf解压,tar.bz2的用tarjxvf解压),进入解压目录,一般都有一个INSTALL的文本文件,里面一般都是安装的详细说明,可以用vi、nano、pico或X下面的文本编辑器(如gedit,gvim,kedit等)打开查看,安装一般就是三个步骤:1、configure,这一步一般用来生成Makefile,为下一步的编译做准备,你可以通过在configure后加上参数来对安装进行控制,比如代码:./configure--prefix=/usr上面的意思是将该软件安装在/usr下面,执行文件就会安装在/usr/bin(而不是默认的/usr/local/bin),资源文件就会安装在/usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定--sys-config=参数进行设定。有一些软件还可以加上--with、--enable、--without、--disable等等参数对编译加以控制,你可以通过允许./configure--help察看详细的说明帮助。2、make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果在make过程中出现error,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交bugreport(一般在INSTALL里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。3、makeinsatll,这条命令来进行安装(当然有些软件需要先运行makecheck或maketest来进行一些测试),这一步一般需要你有root权限(因为要向系统写入文件)。安装完毕后你就可以删除解压目录了。采用源代码编译方式来安装软件是Linux系统下最常见的安装软件方法,而且这种方法使你可以更加自由地控制安装细节,所以提倡大家多使用该方法安装软件。PS:对于bin类型的安装文件,一般给该文件加上可执行权限,再运行之即可,如:代码:
 

linux下怎安装程序

【分享】linux下安装程序

很多初学者都不知道如何在linux下安装程序,下面简单说一下
在Linux系统中,安装软件最常见的有两种:
一种是软件的源代码,您需要自己动手编译它。这种软件安装包通常是用gzip压缩过的tar包(后缀名为.tar.gz)。
  另一种是软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(RedHat Linux Packet Manager,就是RedHat的软件包管理器),后缀名是.rpm。 当然,也有用RPM格式打包的源代码、用gzip压缩过的可执行套装程序。只要您理解了以下的思路,这两种形式的安装包也不在话下了。

源代码编译安装

Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制码并进行安装。其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境;缺点是难度较大,一般不适合初学者使用。

  各个软件的源代码包一般都在各个软件项目的主页中提供下载,例如:www.apache.org等。

  1.*.src.rpm形式的源代码软件包

  安装:

  rpm -rebuild *.src.rpm

  cd /usr/src/dist/RPMS

  rpm -ivh *.rpm

  卸载:

  rpm -e packgename

  说明:rpm --rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的RPM软件包,然后再安装该二进制包即可。Packgename如前所述。

  2.*.tar.gz/*.tgz/*.bz2形式的源代码软件包

  以tar.gz或tgz或tar.bz2等格式结尾的软件包一般都是以源代码方式发布的软件,安装这类软件首先需要对软件进行解压:

  # tar zxvf filename.tar.gz

  # tar xvfz filename.tgz

  # tar xvf j filename.tar.bz2

  解压以后,就可以进入解压后的目录:

  # cd filename/

  对于这类文档,常见的安装步骤是:配置、编译和安装3步,其中最麻烦的就是配置,因为所有和软件安装相关的配置都是在这一步指定的:比如软件安装位置等。

  配置:./configure

  编译:make

  安装:make install

  卸载:make uninstall 或手动删除

  说明:建议解压后先阅读说明文件(ReadMe和Install),了解安装的需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make uninstall命令来进行卸载,如果不提供此功能,则软件的卸载必须手动进行。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure --prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其他安装方式相比,需要用户自己编译安装是最难的,它适合于使用Linu......余下全文>>