发布网友 发布时间:2022-02-26 14:33
共1个回答
热心网友 时间:2022-02-26 16:02
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下使用图形界面的软件包管理程序。现在这些做的非常好了。 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. 如果你更喜欢图形界面的操作,可以到Ubuntu上看看他的包管理,超级方便。 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 软件目录名"命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最麻烦的,其实我个人认为,以后会越来越少人用这种方法。因为现在的 硬件发展到没有必要多这少量的性能,来浪费这么多时间。 三。使用yum和apt-get.软件管理方法的升级。 看过上面的介绍。大家一定会感觉,太麻烦了,下面这个是先进的linux才有的功能,这个实在太方便了,比windows还人方便,要是你用过Ubuntu的apt-get你会感觉爽极了的。那个方便。 1. 我们来先讲Redhat的yum这种高级的包管理。 用YUM安装删除软件 装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。 安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。 删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 用YUM安装软件包 命令:yum install 用YUM删除软件包 命令:yum remove 2.用YUM查询软件信息 我 们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于是我们可能得到 gaim,kopete等等,并从中选择。 有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。 使用YUM查找软件包 命令:yum search 列出所有可安装的软件包 命令:yum list 列出所有可更新的软件包 命令:yum list updates 列出所有已安装的软件包 命令:yum list installed 列出所有已安装但不在 Yum Repository 内的软件包 命令:yum list extras 列出所指定的软件包 命令:yum list 2.讲讲Ubuntu中的高级包管理方法apt-get 除了apt的便捷以外,apt-get的一大好处是极大地减小了所谓依赖关系恶梦的发生 几率(dependency hell),即使是陷入了dependency hell,apt-get也提供了很好的 援助手段,帮你逃出魔窟。 通常 apt-get 都和网上的压缩包一起出没,从互联网上下载或是安装。全世界有超 过200个 debian 官方镜像,还有繁多的非官方软件包提供网站。你所使用的基于D ebian的发布版不同,你所使用的软件仓库可能需要手工选择或是可以自动设置。你 能从Debian官方网站得到完整的镜像列表。而很多非官方网站提供各种特殊用途的 非官方软件包,当然,使用非官方软件包会有更多风险了。 软件包都是为某一个基本的Debian发布版所准备的(从unstable到stable),并且划 分到不同类别中(如 main contrib nonfree),这个是依据 debian 自由软件纲领而 划分的(也就是常说的dfsg),因为美国*加密软件出口,还有一个non-us类别。 常用的APT命令参数 apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = --fix-missing" sudo apt-get remove package 删除包 sudo apt-get remove package - - purge 删除包,包括删除配置文件等 sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 sudo apt-get dselect-upgrade 使用 dselect 升级 apt-cache depends package 了解使用依赖 apt-cache rdepends package 是查看该包被哪些包依赖 sudo apt-get build-dep package 安装相关的编译环境 apt-get source package 下载该包的源代码 sudo apt-get clean && sudo apt-get autoclean 清理无用的包 sudo apt-get check 检查是否有损坏的依赖