-- 本文摘抄至 《鸟哥的Linux私房菜基本篇》 --
基本的方法可以分为两大类:
1、直接以源代码透过编译来安装与升级(Tarball);
2、直接以编译好的binary program来安装与升级;
Red Hat系统(含Fedora/CentOS系统)发展的RPM软件管理机制与yum在线更新模式;
Debian系统(含Ubuntu/B2D系统)使用的dpkg软件管理机制与ATP在线更新模式;
一、使用Tarball来安装与升级管理软件
1、所谓的Tarball档案,其实就是将软件的所有原始码档案以tar打包,然后再通过压缩技术来压缩,所以Tarball档案一般的扩展名为
*.tar.gz(gzip)\*.tar.bz2(bzip2);
2、需要的基本软件,gcc、make、autoConfig,通常软件开发商会写一支侦测程序来侦测用户的作业环境,以及是否有所需要的相关性软件,侦测通过将建立Makefile文件(记录了源代码如何编译的详细信息),通常这支程序文件名为configure或者是config;
3、大部分Tarball软件安装的指令:
① ./configure ,侦测程序,--help 可用来查看可用参数,重要的参数有 --prefix=/usr/local/xxsoftware(程序单独目录安装)
② make,依据Makefile 当中的预设工作进行编译;
③ make install,将编译完成的档案放置到预定的目录,完成安装;
④ 如果安装在独立的目录,还需要手动将软件的 man page 写入 /etc/man.config 中(MANPATH /usr/local/xxsoftware/man);
4、Linux distribution释出安装的软件大多在 /usr 里面,而用户自行安装的软件建议放置在 /usr/local 里面;
单一软件的档案都在同一个目录下,虽然便于移除软件(如,rm -rf /usr/local/xxsoftware),但是执行软件的指令需要加入到PATH里面,否则就得使用绝对路径了,另外, /usr/local/xxsoftware/man 也需要加入 man page 搜寻的路径当中;
二、RPM与SRPM软件管理机制
1、RPM全名 RedHat Package Manager,是一种以数据库记录的方式来将软件安装到Linux系统的软件管理机制,释出的软件先编译过,再打包成为RPM机制的包装档案。RPM会依照软件里头的数据查询Linux主机的相依属性是否满足,若满足予以安装并将该软件的信息写入RPM数据库中( /var/lib/rpm/ )。
2、SRPM, Source RPM, 扩展名为 xxx.src.rpm ,这个RPM档案中含有原始码,同时也提供参数配置文件(configure与makefile),所以必须要先将软件以RPM管理方式编译,此时SRPM会被编译成RPM档案,再将RPM档案安装到系统中。
3、RPM 查询、安装、升级与移除
三、YUM在线升级
1、CentOS先将释出的软件放置到YUM服务器内,并生成软件相依属性列表清单,这些列表数据与软件所在位置可以称为容器(repository)。客户端先向容器获取软件相关列表清单,与本机RPM数据库已存的软件数据相比较,再获取需要安装的软件,然后透过RPM机制开始安装。
2、yum 容器网址配置文档 /etc/yum.repos.d/CentOS-Base.repo (其中一个容器配置档) , [ yum repolist all ] 可列出目前yum server所使用的容器;
3、yum 查询、安装、升级与移除功能
查询:yum [option] [查询工作项目] [相关参数]
option :-y 提供用户询问yes or no? ; --installroot=/some/path 将软件安装在该目录而不使用默认路径
查询功能 : yum [list|info|search|provides|whatprovides] 参数
list : 列出目前yum所管理的软件,类似 rpm -qa;
info : 查询软件详细功能,类似 rpm -qai;
providers : 从档案中搜寻软件, 类似 rpm -qf;
安装、升级与移除:yum [install | update | remove] 软件;
4、yum 软件群组功能, yum [群组功能] [软件群组]
grouplist : 列出所有可使用的套件组
groupinfo : 后面接group_name,了解group内含的所有套件名
groupinstall : 安装套件群组, 安装gcc等软件开发工具 [ yum groupinstall "Development Tools" ],
安装图形接口支持相关 [ yum groupinstall "X Software Development" ]
groupremove : 移除某个套件群组