Chinaunix首页 | 论坛 | 博客

分类: C/C++

2009-02-10 14:19:09

  一般 Tarball 套件安装的建议事项( 如何移除?升级? )

  或许您已经发现了也说不定,那就是为什么前一个小节里面, Tarball 要在 /usr/local/src 里面解压缩呢?呵呵!基本上,在预设的情况下,原本的 Linux distribution 释出安装的套件大多是在 /usr 里面的,而使用者自行安装的套件则建议放置在 /usr/local 里面。这是考量到管理使用者所安装套件的便利性。

  怎么说呢?我们晓得几乎每个套件都会提供线上说明的服务,那就是 info 与 man 的功能。在预设的情况下, man 会去搜寻 /usr/local/man 里面的说明文件, 因此,如果我们将套件安装在 /usr/local 底下的话,那么自然安装完成之后, 该套件的说明文件就可以被找到了。此外,如果您所管理的主机其实是由多人共同管理的, 或者是如同学校里面,一部主机是由学生管理的,但是学生总会毕业吧? 所以需要进行交接,如果大家都将套件安装在 /usr/local 底下,那么管理上不就显的特别的容易吗?!

  所以啰,通常我们会建议大家将自己安装的套件放置在 /usr/local 下,至于原始码( Tarball )则建议放置在 /usr/local/src( src 为 source 的缩写 )底下啊。

  再来,让我们先来看一看 Linux distribution 预设的安装套件的路径会用到哪些?我们以 apache 这个软体来说明的话( apache 是 WWW 伺服器软体,详细的资料请参考伺服器架设篇。 您的系统不见得有装这个套件 ):

  * /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 当中,那么您的档案目录就会变成:

  * /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 搜寻的路径当中啊!

  除此之外, Tarball 在升级的时候也是挺困扰的,怎么说呢?我们还是以 apache 来说明好了。WWW 伺服器为了考虑互动性,所以通常会将 PHP+MySQL+Apache 一起安装起来( 详细的资讯请参考伺服器架设篇 ),果真如此的话,那么每个套件在安装的时候‘ 都有一定的顺序与程序!’因为他们三者之间具有相关性, 所以安装时必需要三者同时考虑到他们的函式库与相关的编译参数。那么如果今天我只要升级 PHP 呢?有的时候因为只有涉及动态函式库的升级,那么我只要升级 PHP 即可!其他的部分或许影响不大。但是如果今天 PHP 需要重新编译的模组比较多,那么可能会连带的,连 Apache 这个程式也需要重新编译过才行!真是有点给他头痛的!没办法啦!使用 tarball 确实有他的优点啦,但是在这方面,确实也有他一定的伤脑筋程度。

  由于 Tarball 在升级与安装上面具有这些特色,亦即 Tarball 在反安装上面具有比较高的难度( 如果您没有好好规划的话~ ),所以,为了方便 Tarball 的管理,通常我们会这样建议使用者:

  1. 最好将 tarball 的原始资料解压缩到 /usr/local/src 当中;

  2. 安装时,最好安装到 /usr/local 这个预设路径下;

  3. 考虑未来的反安装步骤,最好可以将每个套件单独的安装在 /usr/local 底下:
  例如安装 rp-pppoe-2.6.tar.gz 时,则可以指定该套件需要安装于 /usr/local/rp-pppoe 当中,如此一来,该套件会将所有的资料都写入 /usr/local/rp-pppoe 当中,因此,未来如果要移除该套件,只要将该目录删除即可视为成功的移除了!

  4. 加上 man path
  不过单独安装某个套件在某一特定路径下的作法,会导致当有 man page 的时候,使用预设的 MANPATH 会找不到相关的说明档案内容。这个时候就必须要将 man page 的路径加到 /etc/man.config 档案中了!否则使用 man 也查询不到指令的使用方法的。以上面的例子为例,如果是安装了 /usr/local/rp-pppoe 当中,通常 man page 会放在 /usr/local/rp-pppoe/man 当中,所以,您就必需要在 /etc/man.config 里面差不多 40~50 行左右的地方,加入底下这一行:

  MANPATH /usr/local/rp-pppoe/man
  这样就可以使用 man 来查询资料啰!

阅读(1640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~