linux(Centos)下软件安装的方式总结

  linux下安装及卸载软件是比较头疼的事,不想windows下那样方便,总的来说有以下几种:

  1. tarball

  所谓的 Tarball 文件,其实就是将软件的所有原始码文件先以 tar 打包,然后再以压缩技术来压缩,通常最常见的就是以gzip 来压缩了。因为利用了 tar 与 gzip 的功能,所以 tarball 文件一般的扩展名就会写成 *.tar.gz 或者是简写为 *.tgz 罗!不过,近来由於 bzip2 的压缩率较佳,所以 Tarball 渐渐的以 bzip2 的压缩技术来取代 gzip 罗!因此档名也会变成 *.tar.bz2 之类的哩。所以说, Tarball 是一个软件包, 你将他解压缩之后,里面的文件通常就会有:

原始程序码文件;

侦测程序文件 (可能是 configure 或 config 等档名);

本软件的简易说明与安装说明 (INSTALL 或 README)。

  其中最重要的是那个 INSTALL 或者是 README 这两个文件,通常你只要能够参考这两个文件, Tarball 软件的安装是很简单的啦!

  OK!我们底下约略提一下大部分的 tarball 软件之安装的命令下达方式:

./configure
这个步骤就是在创建 Makefile 这个文件罗!通常程序开发者会写一支 scripts 来检查你的 Linux 系统、相关的软件属性等等,这个步骤相当的重要, 因为未来你的安装资讯都是这一步骤内完成的!另外,这个步骤的相关资讯应该要参考一下该目录下的 README 或 INSTALL 相关的文件!

make clean
make 会读取 Makefile 中关於 clean 的工作。这个步骤不一定会有,但是希望运行一下,因为他可以去除目标文件!因为谁也不确定原始码里面到底有没有包含上次编译过的目标文件 (*.o) 存在,所以当然还是清除一下比较妥当的。 至少等一下新编译出来的运行档我们可以确定是使用自己的机器所编译完成的嘛!

make
make 会依据 Makefile 当中的默认工作进行编译的行为!编译的工作主要是进行 gcc 来将原始码编译成为可以被运行的 object files ,但是这些 object files 通常还需要一些函式库之类的 link 后,才能产生一个完整的运行档!使用 make 就是要将原始码编译成为可以被运行的可运行档,而这个可运行档会放置在目前所在的目录之下, 尚未被安装到预定安装的目录中;

make install
通常这就是最后的安装步骤了,make 会依据 Makefile 这个文件里面关於 install 的项目,将上一个步骤所编译完成的数据给他安装到预定的目录中,就完成安装

  让我们先来看一看 Linux distribution 默认的安装软件的路径会用到哪些?我们以 apache 这个软件来说明的话:

/etc/httpd

/usr/lib

/usr/bin

/usr/share/man

  我们会发现软件的内容大致上是摆在 etc, lib, bin, man 等目录当中,分别代表『配置档、函式库、运行档、线上说明档』。 好了,那么你是以 tarball 来安装时呢?如果是放在默认的 /usr/local 里面,由於 /usr/local 原本就默认这几个目录了,所以你的数据就会被放在:

/usr/local/etc

/usr/local/bin

/usr/local/lib

/usr/local/man

  但是如果你每个软件都选择在这个默认的路径下安装的话, 那么所有的软件的文件都将放置在这四个目录当中,因此,如果你都安装在这个目录下的话, 那么未来再想要升级或移除的时候,就会比较难以追查文件的来源罗! 而如果你在安装的时候选择的是单独的目录,例如我将 apache 安装在 /usr/local/apache 当中(可以通过这种方式设置:./configure --prefix=http://www.likecs.com/usr/local/apche --enable-all-clocks --enable-parse-clocks),那么你的文件目录就会变成:

/usr/local/apache/etc

/usr/local/apache/bin

/usr/local/apache/lib

/usr/local/apache/man

  呵呵!单一软件的文件都在同一个目录之下,那么要移除该软件就简单的多了! 只要将该目录移除即可视为该软件已经被移除罗!以上面为例,我想要移除 apache 只要下达『rm -rf /usr/local/apache』 就算移除这个软件啦!当然罗,实际安装的时候还是得视该软件的 Makefile 里头的 install 资讯才能知道到底他的安装情况为何的。因为例如 sendmail 的安装就很麻烦......

  这个方式虽然有利於软件的移除,但不晓得你有没有发现,我们在运行某些命令的时候,与该命令是否在 PATH 这个环境变量所记录的路径有关,以上面为例,我的 /usr/local/apache/bin 肯定是不在 PATH 里面的,所以运行 apache 的命令就得要利用绝对路径了,否则就得将这个 /usr/local/apache/bin 加入 PATH 里面。另外,那个 /usr/local/apache/man 也需要加入 man page 搜寻的路径当中啊!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfdpf.html