很多桌面版本的Linux系统在安装好了以后,其预置的软件已经能够满足我们的日常需求,但是我们也可能遇到一些需要自己额外安装的软件,这时候就需要用到Linux软件管理命令了。Linux系统中,软件通常以源代码或者预编译包的形式提供。由于Linux系统版本的多样性,软件安装的方式也不尽相同,常见的软件管理命令或方法分为软件源代码编译安装跟预编译安装,其中预编译安装又分为dpkg、rpm跟apt命令安装。
软件源代码需要编译为二进制的机器代码才能够使用,安装比较耗时,不过您可以自行调节编译选项,决定需要的功能或组件,或者针对硬件平台作一些优化。预编译的软件包,通常是由软件的发布者进行编译,您只要将软件拷贝到系统中就可以了。考虑到预编译软件包的适用性,预编译软件包通常不会针对某种硬件平台优化。它所包含的功能和组件也是通用的组合。
一、dpkg命令
Ubuntu 跟 Debian 系统中,软件通常以 deb 格式的包文件发布,它是一种预编译软件包。deb包中除了包含已编译的软件,通常还包括软件的拷贝路径、对其它软件包的依赖关系纪录、比较通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。
deb软件包命令遵行如下约定:soft_ver-rev_arch.deb。其中 soft 代表“软件包名称”, ver 代表“软件版本号”,rev 代表 “Ubuntu修订版本号”, arch 代表“目标架构名称”。例如:tomboy_1.8.0-1ubuntu1_i386.deb。
您需要使用 dpkg 命令来管理 deb 软件包:
#dpkg -i xxx.deb 安装deb软件包 #dpkg -r xxx.deb 删除软件包 #dpkg -rP xxx.deb 连同配置文件一起删除 #dpkg -I xxx.deb 查看软件包信息 #dpkg -L xxx.deb 查看包内文件 #dpkg -l 查看系统中已安装软件包信息 #dpkg-reconfigure xxx 重新配置软件包
有些时候,您使用 dpkg 安装一个软件包,系统会提示您该软件包依赖其它软件包。这时,您先安装其它软件包,直到满足依赖关系为止。或者同时安装多个软件包:
#dpkg -i aaa.deb bbb.deb ccc.deb
二、rpm命令
Fedora 跟 OpenSUSE 系统中,软件通常以 rpm 格式的包文件发布,跟deb 格式的包文件一样,它是也是一种预编译软件包,除了包含已编译的软件,通常还包括软件的拷贝路径、对其它软件包的依赖关系纪录、比较通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。
rpm 软件包命令遵行如下约定:软件名-版本号-释出号.体系号.rpm。体系号指的是执行程序适用的处理器体系,如 i386 体系。如果体系号为src时,表明为源代码包,否则为执行程序包。如xyz-5.6-7.i386.rpm为执行程序包,软件名为xyz,版本号为 5.6,释出号为7,适用体系为i386。
安装源代码包RPM软件包,必须使用命令:
//这个命令会把源代码解包、编译、安装 #rpmbuild --recompile xyz-5.6-7.src.rpm //安装完成后,把编译生成的可执行文件重新包装成i386.rpm的RPM软件包 #rpmbuild --rebuild xyz-5.6-7.src.rpm
三、apt命令
Ubuntu 跟 Debian 系统中,前面介绍了如何使用 dpkg 命令来管理 deb 软件包。但是如果一个软件依赖关系过于复杂,使用 dpkg 命令来安装它,并不是一个明智的选择,这个时候您就需要用到 APT 软件包管理系统。APT 可以自动的检查依赖关系,通过您预设的方式来获得相关软件包,并自动安装配置它。事实上,在多数情况下,我们推荐您使用 APT 软件包管理系统。
APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为源 。 源可以是网络服务器、安装CD或者本地软件仓库。您需要配置 /etc/apt/sources.list 文件,使APT系统能够连接到指定的源。国内推荐使用网易公司的源,配置 /etc/apt/sources.list 文件如下:
deb http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse deb-src http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse
APT 系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。
#apt-get install xxx //安装 xxx #apt-get -d install xxx //仅下载 xxx 预编译软件包,不安装 #apt-get -f install xxx //强制安装 xxx #apt-get remove xxx //卸载 xxx #apt-get update //更新软件信息数据库 #apt-get upgrade //进行系统升级 #apt-cache search xxx //搜索 xxx 软件包在源中是否存在
建议您经常使用 “sudo apt-get update” 命令来更新您的软件信息数据库。由于各种意外,APT系统可能会出现问题,建议您使用 “apt-get -f install” 命令来尝试修复。
四、源码包
对于绝大多数软件,我们建议您使用APT系统来安装它。在少数情况下,例如某软件没有以deb包的格式发布,或者需要定制适合自己的软件,您可以通过编译源代码的方式安装它。
首先需要下载软件的源码包,并且将它解包为一些源代码文件。为了便于管理,建议将下载的源码包移动到 /usr/local/src/ 目录下,并在这里解包。
#sudo mv xxx.tar.gz /usr/local/src //移动源码包 #cd /usr/local/src // 进入“/usr/local/src/”目录 #sudo tar -zxvf xxx.tar.gz //解压源码包 #cd xxx_ver/ //进行解包后的源码目录
源码目录中通常有一个 configure 脚本,用来配置即将开始的编译过程。您可以执行它:
#sudo ./configure [--prefix=/usr/loca/xxx ......]
它会自动检测软件的编译环境和依赖关系,并且生成 Makefile 文件。使用带参数的命令 “./configure –help” ,或者阅读 INSTALL 文件,查看该脚本允许的参数。使用 “–prefix=/usr/local/xxx” 参数,将软件的安装目录设定为 /usr/local/xxx/ (如果一定要将软件安装在单独目录下,建议您安装在这里) 。
接下来执行 make 命令,系统会根据 Makefile 文件中的设定,通过 make 工具调用编译器和所需资源文件,将源代码编译成目标文件。
#sudo make
再接着执行 make install 命令, make 工具会自动连接目标文件和库文件,将最终生成的文件拷贝到 Makefile 文件设定的路径中,并且完成更改文件的属性,删除残留文件等活动。
#sudo make install
最后,编译安装已经完成,为了更方便的使用它,需要给程序的可执行文件作一个符号链接。
#sudo ln -sf /usr/local/xxx/可执行文件/usr/local/bin/可执行文件
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。