*****************************************************************************
本文由正泰linux http://linux-down.kmip.net 搜集,整理,如需转载,请注明出处!
本站有大量的linux电子教程,软件,技术文档,欢迎大家访问!站长阿泰qq:253222170
******************************************************************************
--------------------------------------------------------------------------------
对于Linux初学者来说,安装一个很小的软件恐怕都是一件很让人头疼的事,因为在Linux下安装软件不像在 Windows中那样简单。在Linux中大多数软件提供的是源代码,而不是现成的可执行文件,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。多数初学者往往不知道该如何进行配置和编译就盲目地运行一些有执行属性的文件或者机械地运行“make”、“make install”之类的命令。结果呢?是软件没装成,自己急出一身汗,后果严重的还会破坏系统的稳定性。下面笔者将安装软件方面的一些规律写出来与大家分享。
目前流行的软件包有两种比较常见的形式,一种是RPM包的形式,另一种是压缩成*.tar.gz的形式。本文将讨论这两种形式的软件包在文本环境和图形环境(X Window)下不同的安装方法。
文本环境下的软件安装
一、安装简便的RPM包
RPM是RedHat Package Manager的缩写,它只能使用在安装了RPM软件的系统中,RedHat Linux和Turbo Linux中已经使用了它。这种结构的包使用起来还是很方便的,只要记住几条简单的命令和参数就可以方便地使用:
#〉rpm [options] filename.rpm
其中常用的options包括:
-i: 安装软件
-e: 卸载软件
-q:查看软件安装的信息和状态
-U: 升级现有软件
例如安装软件时,可以使用如下命令:“rpm -i filename.rpm”,软件安装在什么地方、是怎么安装的都不需要用户操心,RPM可以帮助用户管理。由于RPM使用方便,很多软件都有RPM版本。如果想使用RPM形式的软件就要首先下载一个RPM管理软件。在ftp://ftp.rpm.org/pub/rpm/dist/rpm- version网站可以下载最新的版本——rpm-3.-.4.i386。该软件有RPM包和.tar.gz包两种形式,如果你的系统中已经有了RPM管理软件,你可以下载RPM形式的包来升级现有软件,否则就必须了解.tar.gz包的安装方法。
*****************************************************************************
本文由正泰linux http://linux-down.kmip.net 搜集,整理,如需转载,请注明出处!
本站有大量的linux电子教程,软件,技术文档,欢迎大家访问!站长阿泰qq:253222170
******************************************************************************
二、安装需要编译的.tar.gz包
由于RPM包使用的局限性(必须安装RPM),目前更多的软件使用的是源代码形式的.tar.gz包。这种软件的安装通常要经过解压缩、软件配置、软件编译及安装的过程。
解压缩通常有两种命令方法:一种是“gunzip filename-VERSION-OS.tar.gz | tar xvf -”,它实质是两条命令“gunzip filename-VERSION-OS.tar.gz”和“tar xvf filename-VERSION-OS.tar”;另一种是“tar xzvf filename-VERSION-OS.tar.gz”。 一般来说在软件解压缩后会生成一个目录filename-VERSION-OS。
软件的配置、编译、安装是最让初学者望而生畏的事了,但笔者认为掌握一些规律还是不难的。一般来说,在解压缩生成的目录中都会有名为Readme、 Rnstall或Readme.install之类的文件。这些文件通常会对软件的功能、特性、版权许可、安装以及相关知识加以介绍,并且会提到关于安装的方法和步骤。举例来说:在apache_1.3.6的install文件中说明了如下内容(此处只列出总的条目,具体内容省略):
Installing the Apache 1.3 HTTP server with APACI
==============================
1.Overview for the impatient(概括说明配置的全过程)
$./configure--prefix=PREFIX
$make
$make install
$PREFIX/bin/apachectl start
2.Requirements(需要的条件)
3.Configuring the source tree(配置的参数说明)
4.Building the package(编译软件的方法)
5.Installing the package(安装软件的方法)
6.Testing the package(软件测试)
理解并能熟练使用这些说明文件后,就可以利用一些规律来安装大多数的软件。对于那些没有说明文件的软件(当然这种情况比较少见),这些规律通常也是适用的。一般来说,与安装软件有直接关系的文件只有两个:configure 、Makefile。
其中,configure文件具有可执行的属性,是用来配置软件的,它的参数比较多,用法也比较灵活。当然,不同的软件参数也不相同,这时候就需要借助它的help参数,运行下面的命令就会让你感到豁然开朗:
#〉 ./configure -help
Usage: configure [options]
Options: [defaults in brackets after descriptions]
General options:
--quiet, --silent do not print messages
--verbose,-v print even more messages
--sha [=DIR] switch to a shadow tree (under DIR) for building
Stand-alone options:
--help,-h print this message
--show-layout print installation path layout (check and debug)
Installation layout options:
--with-layout=[F:]ID use installation path layout ID (from file F)
--target=TARGET install name-associated files using basename TARGET
……
接下来,就可以运行“./configure [options]”来配置该软件。注意,命令行中的“./”非常重要,它告诉系统要运行的命令就在当前目录下(否则系统就会到$path变量指定的路径下去执行命令)。执行命令后可以生成Makefile文件或者修改已有的文件配置。
Makefile文件通常是用来编译和安装软件的。运行make命令时系统会自动根据Makefile文件中的设置对软件进行编译和安装。make命令有时还可以带一些参数,如: all、build、config、install等。具体要带哪个参数可以参看Makefile文件。在Linux中绝大部分文件是文本文件, Makefile就是一个shell程序(Linux中shell程序与DOS中的批处理文件有很多相似之处,当然功能要强得多),很容易读懂,尤其是编译时可带的参数都会明确写出,例如:
##========================
## Targets
##========================
# default target
all: build
##------------------------
## Build Target
##------------------------
# build the package
build:
……
# the non-verbose variant for package maintainers
build-quiet:
@$(MAKE) -f $(TOP)/$(MKF) $(MFLAGS) $(MFWD) QUIET=1 build
# build the additional support stuff
build-support:
……
##------------------------
## Installation Targets
## -----------------------
# the install target for installing the complete Apache
# package. This is implemented by running subtargets for the
# separate parts of the installation process.
install:
……
# the non-verbose variant for package maintainers
install-quiet:
@$(MAKE) -f $(TOP)/$(MKF) $(MFLAGS) $(MFWD) QUIET=1 install
# create the installation tree
install-mktree:
……
上面这段代码是apache_1.3.6的Makefile文件的一部分,从这段程序可以看出all参数表示完全编译(缺省参数)。此外,编译时还可以带 build、build-quiet、build-surpport等参数;安装时可以带install、install-quiet、install- surpport等参数。它们的功能分别在“#”表示的注释中进行了说明。需要额外说明的是,有些软件(例如Linux的内核升级程序)不用 configure命令来配置软件,而是用make config来完成这项工作,所以,具体使用哪种方法要具体问题具体分析。
图形界面下的软件安装
在图形环境下,同样可以弹出一个仿真终端以文本的方法来安装软件,但那样就太笨了,因为在X Window中有一些简单的方法可以帮您完成软件安装。下面笔者以RedHat 6.0为例做介绍。
一、图形界面下安装.tar.gz包
在X Window下,安装这种形式的包简化程度并不大,只是在解压缩软件时方便一些。用鼠标左键双击要安装的软件包,系统就会自动生成一个目录—— filename.tar.gz#utar,在这个目录下就有你要解压缩的内容——filename目录。将该目录拷贝到你要解压缩的目录下,解压缩的工作就这样简单地完成了。不过,剩下的工作还要弹出一个仿真终端以文本的方法来完成。
二、图形界面下安装RPM包
在X Window中你要安装、升级、卸载和查询一个RPM软件包实在是太容易了。以Redhat 6.0为例,它的X Window中有一个Gnome RPM软件可以完成上面提到的一切工作。
点击“Start”→“System”→“GnomeRPM”,可以运行该软件。它将安装好的RPM包形式的软件按照功能分在Amusements、 Application、Development、Document、Extension、Extentions、Networking、System Environment、UserInterface、X11等几个树形目录中,每个目录中有相应的文件图标和名称。要安装或升级软件,只要点击工具栏的相应按钮就会弹出打开文件的对话框,选中你要安装的RPM文件,单击“OK”按钮,一切大功告成;卸载软件时,需要根据分类找到该软件的图标,点击右键,选Uninstall就可以了。如果你会在Win 95/98中查找文件的话,在Linux中查找已经安装的软件也就不难了。这个软件可以到下面的站点下载: ftp.gnome.org/pub/GNOME/stable/
sources/gnorpm。
几点注意事项
一、安装方法的适用范围
上面提到的软件安装方法并不是在任何版本的Linux上都适用。笔者认为,.tar.gz包的安装方法适用于各种版本的Linux,而RPM包则有一定的局限性。
目前常见的各种Linux发行版本中,如:Redhat 6.0、Turbo Linux 3.0.2、Xteam 3.0等都支持RPM包。如果你想知道你使用的Linux是否支持RPM包,只要运行一下“rpm --help”命令就知道了。不过,对于不支持RPM包的版本,可以安装一个RPM管理软件。
二、容易出现的问题
在安装软件时,一定要保证你对用到的软件包有访问权限。当然如果你是root就没问题了。但如果你真的是root你就需要注意另一个问题,由于root的权限过高,所以在安装软件时,要防止对系统其它软件造成误操作(在使用rm 等“危险”命令时,尤其要注意)。
另一个容易出现的问题是,在卸载RPM包的软件时要慎重,因为很多软件之间是相互关联的,你卸载的软件很可能是其它软件要用到的,要防止由于卸载了一个软件而影响另一个软件的正常使用。所以笔者建议,初学者对于与系统运行有关的软件尽量不要删除(对于游戏、应用软件一类的软件不必有太多顾虑)。等你成为一名经验丰富的系统管理员时,你就能灵活地处理这些问题了。
代码:
1、源代码包的安装
gzip -d apache_1.3.20.tar.gz (解压)
tar xvf apache_1.3.20.tar (解包)
cd apache_1.3.20
./configure (配置) ----./configure --help(查看configure选项)
make (编译)
make install (安装)
make clean (卸载)
注:典型的源代码包可以这样安装,但不都是这样,如webmin
要执行其目录下./setup.sh进入交互式配置安装
卸载用uninstall程序
具体如果不清楚看要安装的包下的README文件
2、RPM包的安装
RPM软件包的一个例子:
foo-1.0-1.i386.rpm
其中包括软件包的名称(foo),版本号(1.0),发行号(1),和硬件平台(i386)。
(1)安装
# rpm -ivh foo-1.0-1.i386.rpm
foo
#######################
A. 软件包已被安装
# rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
如果你仍旧要安装该软件包,你可以在命令行上使用--replacepkgs 选项,这将忽略该错误信息。
B. 文件冲突
如果要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
要想让RPM 忽略该错误信息, 请使用--replacefiles 命令行选项
C.未解决依赖关系
RPM软件包可能依赖于其它软件包, 在安装了特定的软件包之后才能安装该软件包。
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
你必须安装完所依赖的软件包,才能解决这个问题。如果想强制安装 (但是,这样安装后的软件包未必能正常运行),请使用-nodeps 命令行选项。
(2) 卸载
# rpm -e foo
注意:这里使用软件包的名字foo,而不是软件包文件的名字“foo-1.0-1.i386.rpm”.
如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息。如:
# rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
要想RPM忽略该错误信息继续卸载的话 (但是,依赖于该软件包的程序可能无法运行), 请使用-nodeps 命令行选项。
(3)升级
# rpm -Uvh foo-2.0-1.i386.rpm
foo
###############################
当使用旧版本的软件包来升级新版本的软件时,会产生以下错误信息:
# rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
要使RPM 坚持这样“升级”,可使用--oldpackage 命令行参数。
(4)查询
# rpm -q foo
foo-2.0-1
软件包指定选项:
-a 查询所有已安装的软件包.
-f <file> 将查询包含有文件<file>的软件包
-p <packagefile>
查询软件包文件名为<packagefile>的软件包
信息选择选项:
-i 显示软件包信息,如描述, 发行号, 尺寸, 构建日期, 安装日期, 平台, 以及其它各类信息。
-l 显示软件包中的文件列表。
-s 显示软件包中所有文件的状态。
-d 显示被标注为文档的文件列表(man 手册, info 手册, README's, etc).
-c 显示被标注为配置文件的文件列表。这些是要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。
对于那些要显示文件列表的文件,可以增加-v 命令行选项以获得如同 ls -l 格式的输出。
(5)验证
验证软件包是通过比较软件包中安装的文件和软件包中的原始文件信息来进行的。除了其它一些东西,验证主要是比较文件的尺寸, MD5 校验码, 文件权限, 类型, 属主和用户组等。
rpm -V命令用来验证一个软件包,如
rpm -V foo
验证包含特定文件的软件包:
rpm -Vf /bin/vi
验证所有已安装的软件包:
rpm -Va
根据一个RPM来验证某个软件包:
rpm -Vp foo-1.0-1.i386.rpm
如果你担心RPM数据库已被破坏,就可以使用这种方式。如果一切校验均正常将不会产生任何输出。如果有不一致的地方,就会显示出来。
输出格式是8位长字符串,c 用以指配置文件,接着是文件名. 8位字符的每一个用以表示文件与RPM数据库中一种属性的比较结果。“.” (点)表示测试通过。
以下字符表示某种测试的失败:
5 MD5 校验码
S 文件尺寸
L 符号连接
T 文件修改日期
D 设备
U 用户
G 用户组
M 模式e (包括权限和文件类型)
如果有信息输出,应当认真加以考虑,是删除,重新安装,还是修正出现的问题。
(6)RPM应用的几个例子
A. 如你误删了一些文件, 但是不能肯定到底删除了哪些文件。如果你想验证一下整个系统看看都丢失了哪些文件的话,可以键入:
rpm –Va
B.若是一些文件丢失了或已被损坏, 就可以重新安装或先卸载再安装该软件包。如果碰到了一个自己不认识的文件,要想查处它属于哪个软件包,可以输入以下命令:
rpm -qf /usr/X11R6/bin/xjewel
而输出的结果会是:
xjewel-1.6-1
C. 如果发生综合以上两个例子的情况,如文/usr/bin/paste出了问题。你想验证一下拥有该文件的软件包,可又不知道软件包的名字,这时可以简单的键入:
rpm -Vf /usr/bin/paste
这样相应的软件包就会被验证。
D. 如果你想了解一个正在使用的程序的详细信息,可以键入如下命令来获得拥有该程序的软件包中的文档信息:
rpm -qdf /usr/bin/ispell
输出结果为:
/usr/man/man4/ispell.4
/usr/man/man4/english.4
…………………………………………………………
E. 如果你发现了一个新的koules RPM,但是不知道它是什么东西,可以键入如下命令:
rpm -qip koules-1.2-2.i386.rpm
F. 现在你想了解koules RPM 所安装的文件。可以键入:
rpm -qlp koules-1.2-2.i386.rpm
图形管理工具:kpackage
3、shell或java脚本安装
基于图形界面的安装,一般基于SHELL或Java语言编写,主要应用于一些办公软件和制图软件及安装程序,如staroffice、oracle的安装,很容易,和windows一样
*****************************************************************************
本文由正泰linux http://linux-down.kmip.net 搜集,整理,如需转载,请注明出处!
本站有大量的linux电子教程,软件,技术文档,欢迎大家访问!站长阿泰qq:253222170
******************************************************************************