转一篇文章
在Windows下安装软件时,只需运行软件的安装程序(setup、install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall、unware、“卸载”等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击“下一步”就可以了。
而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观。其实在Linux下安装和卸载软件也非常简单,同样也有安装向导或解压安装的方式,不相同的只不过是除了二进制形式的软件分发外,还有许许多多以源代码形式分发的软件包,下面就来详细地讲一讲这些软件的安装与卸载:
一、二进制分发软件包的安装与卸载
Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。
1、*.rpm形式的二进制软件包
安装:rpm -ivh *.rpm
卸载:rpm -e packgename
说明:RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作,安装简单,而卸载时也可以将软件安装在多处目录中的文件删除干净,因此推荐初学者尽可能使用rpm形式的软件包。rpm的参数中-i是安装,-v是校验,-h是用散列符显示安装进度,*.rpm是软件包的文件名(这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件);参数-e是删除软件包,packgename是软件包名,与软件包的文件名有所区别,它往往是文件名中位于版本号前面的字符串,例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是软件包文件名,它们的软件包名称分别是apache和apache-devel。更多的rpm参数请自行参看手册页:man rpm。
如果你不喜欢在字符界面下安装或卸载这些软件包,完全可以在X-Window下使用图形界面的软件包管理程序,如glint、xrpm这样的图形接口,或者是KDE的kpackge等,这样对软件包的安装、升级、卸载、验证和查询就可以通过点击鼠标来轻松完成。
2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2
卸载:手动删除
说明:*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除(稍麻烦),想知道解压时向系统中安装了哪些文件,可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压,x是解包,v是校验,f是显示结果,y是调用bzip2解压,t是列出包的文件清单。更多的参数请参看手册页:man tar。
如果你更喜欢图形界面的操作,可以在X-Window下使用KDE的ArK压缩档案管理工具。
3、提供安装程序的软件包
这类软件包已经提供了安装脚本或二进制的安装向导程序(setup、install、install.sh等),只需运行它就可以完成软件的安装;而卸载时也相应地提供了反安装的脚本或程序。例如SUN公司的StarOffice办公软件套件就使用名为setup的安装程序,而且在软件安装后提供反安装的功能,目前这种类型的软件包还比较少,因其安装与卸载的方式与Windows软件一样,所以就无需多讲了。
二、源代码分发软件包的安装与卸载
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。
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 zxvf *.tar.gz 或 tar yxvf *.bz2 先解压
然后进入解压后的目录:
./configure 配置
make 编译
make install 安装
卸载:make uninstall 或 手动删除
说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure --prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最难的,它适合于使用Linux已有一定经验的人,一般不推荐初学者使用。
关于Linux下软件的安装与卸载已经讲了这么多,但可能还会有人问怎么知道一个tar.gz/bz2包是二进制文件包呢还是源代码包?如果你用过压缩工具就会明白,压缩包未必就是软件,它也可能是备份的许多图片,也可能是打包在一起的普通资料,要分辨它到底是什么最好的办法就是查看包里的文件清单,使用命令tar ztvf *.tar.gz / tar ytvf *.bz2或者在X-Window下使用图形化的ArK压缩档案管理工具都可以,源代码包里的文件往往会含有种种源代码文件,头文件*.h、c代码源文件*.c、C++代码源文件*.cc/*.cpp等;而二进制包里的文件则会有可执行文件(与软件同名的往往是主执行文件),标志是其所在路径含有名为bin的目录(仅有少数例外)。
简单总结:两种 安装卸载
rpm包
用rpm命令安装
rpm -i 安装
rpm -e 卸载
rpm -q 查询
rpm -V 验证
原码
找到configure
# ./configure
# make
# make install
linux最流行的包管理方式除了rpm之外就是debian的deb格式了。
目前采用deb管理方式的主流操作系统主要有debian和ubuntu系列。和rpm包管理方式不同的是,虽然debian也有包含所有软件包的诸多iso光盘。但debian使用者更习惯于直接从网络上通过源get软件包
目前rpm也有apt-get的port,但还是不够完善,rpm使用者一般是通过yum或光盘寻找软件
简单总结一下debian下管理软件常用的操作
1.首先需要设置source,默认设置文件是/etc/apt/sources.list
在里面写source地址,例如
deb
ftp://ftp.linuxforum.net/debian/
testing main contrib non-free
testing是debian的测试版本,其他可选项是stable和unstable,testing的软件最新,但要承担风险
main contrib non-free是源下面不同的目录,每个目录放一类软件
除了手工设置source之外,还能通过apt-spy工具自动生成sources.list, 例如
apt-spy -d testing -a Asia,则在亚洲范围内搜索所有源,找到最快的映像自动写入sources.list文件
2.在设置好源之后获取软件列表
apt-get update
3.列表获取之后,如果知道有哪些软件能装
apt-cache search [keyword]
将列出软件包的名字
4.下载并安装软件
apt-get install [packet]
支持断点续传,实际软件的deb包被下载在缓存里,默认会进行安装若加参数-d,仅下载软件包,不安装
这种情况下通过dpkg -i *.deb能安装下载到的软件包
一般apt-get会自动帮你解决依赖关系。
如果系统报依赖关系错误,那是因为某个依赖的包在你的源里没有找到。这种情况非常少见。
如果出现了,能在网上搜搜是否需要其他特别的源,或是你用的源没有和总部良好的同步
5.怎么知道系统中安装了哪些软件
在rpm中能通过rpm -qa来查看
在debian中,通过dpkg -l 来查看,能加参数限定名字
6.怎么知道系统安装了哪些文件,装在什么位置
dpkg -L [packet]
7. 怎么卸载文件
apt-get remove [packet]或dpkg -r 或dpkg -P(清除设置文件)
8.怎么升级软件
在升级软件前首先更新软件列表apt-get update
然后apt-get upgrade则会提醒哪些软件有新版本出现
能apt-get upgrade [packet] 单个包升级
apt-get dist-upgrade 升级整个系统
也能不加参数全部升级
9. 清除下载的软件源安装包
apt-get clean将清除缓存
10. 怎么下载源码包
apt-get source [packet] ,前提是得设置deb-src源
加-b参数,能自己编译下载到的源码包
11.怎么查询某个文件属于哪个程式包
dpkg -S [filename]
12. rpm包和deb包之间怎么转换
alien命令实现多种包格式转换除了命令行形式的apt系列和dpkg之外,debian还提供了给予ncurse的aptitude界面和基于X的synaptic
二者都是对dpkg和apt的封装
debian下软件包管理工具apt-cache的介绍
apt-cache是一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件。通过它我们可查询软件包的状态信息。
apt-cache show package_name
显示软件的信息,包括版本号,安装状态和包依赖关系等。
apt-cache search package_name
搜索软件包,可用正则表达式。
apt-cache showpkg package_name
显示软件包的依赖关系信息。
apt-cache policy package_name
显示软件包的安装状态和版本信息。
apt-cache depends package_name
显示指定软件包所依赖的软件包。
apt-cache rdepends package_name
显示软件包的反向依赖关系,即有什么软件包需依赖你所指定的软件包。