Linux系统中,软件通常以源代码或者预编译包的形式提供。
- 软件源代码需要编译为二进制的机器代码才能够使用,安装比较耗时,不过您可以自行调节编译选项,决定需要的功能或组件,或者针对硬件平台作一些优化。在Linux中,它不像Windows中软件资源丰富,有的时候就需要将某个代码修改,以符合当前平台。
- 预编译的软件包,通常是由软件的发布者进行编译,您只要将软件拷贝到系统中就可以了。考虑到预编译软件包的适用性,预编译软件包通常不会针对某种硬件平台优化。它所包含的功能和组件也是通用的组合。
Linux
安装软件大概的过程如下:
- 建立安装目录
- 拷贝类库
- 拷贝可执行程序
- 根据需要选择性配置和启动服务
-
Linux
下的/usr/bin
目录相当于Windows
下的ProgramFile
目录 -
Linux
下的动态库后缀是.so
而Windows
下是.dll
安装方式就按某种标准依次介绍(什么标准?朕喜欢的就是标准)。
一、源码安装
.tar.gz,.tgz,.bz2形式软件包的安装
-
解压:
tar zxvf *.tar.gz
tar xvfz *.tgz
tar xvfj *.tar.bz2
解压后用ls命令可以看到解压缩后的文件,通常在解压缩后产生的文件中,有名为"INSTALL"的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。
对于多数需要编译的软件,其安装的方法大体相同。执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为:
./configure
其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
使用--prefix选项的另一个好处是方便卸载软件或移植软件;当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;而移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。-
如果检查过程中,发现有错误,configure将给予提示,并停止检查。你可以跟据提示对系统进行配置。再重新执行该程序。检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机的性能的不同,所耗费的时间也不同。命令为:
make
make原理是执行一个叫(所生成的)Makefile文件里的指令,make的基本用处是自动根据makefile里的指令来编译源文件。它还可以用来做比如安装软件,卸载软件等事情,但前提是作者在makefile里写了。
成功编译后,键入如下的命令开始安装:
make install
-
安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:
make clean
、make distclean
。make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。make distclean
类似make clean
,但同时也将configure生成的文件全部删除掉,包括Makefile。
如果没有configure文件,那应该有Makefile文件。那就更简单了,省的上面的麻烦事了。
建议:
不要将源码删除,在卸载软件的时候需要使用可能。另外在./configure
的时候养成--prefix指定安装目录的好习惯,在安装的时候也可以选择将安装日志进行输出。没啥大用,卸载方便。
二、apt
高级包装工具(英语:Advanced Packaging Tools,缩写为APT)是Debian及其派生发行版的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。与红帽中的yum工具非常类似。
apt-get
其实就是一个在线安装软件的工具,它的主要作用是:通过本地的 Linux 连接到网络上的 apt 仓库(源)来下载软件并自动安装。在国内访问官方源速度较慢,一般安装完系统首先会更新源。apt 镜像站点地址列表是放在下列文件下的:
/etc/apt/sources.list
而apt 的下载的 deb 包会保存到这里
/var/cache/apt/archives
软件包安装完成后,这些deb安装包基本上就没有什么用处了.apt-get clean命令可以帮你删除这些deb安装包.
常用apt命令:
apt-get命令一般需要root权限执行,所以一般跟着sudo命令例sudo apt-get xxxx
apt-get install packagename
——安装一个新软件包(还有一个aptitude软件)
apt-get remove packagename
——卸载一个已安装的软件包(保留配置文件)
apt-get --purge remove packagename
——卸载一个已安装的软件包(删除配置文件)
apt-get --force-all --purge packagename
——有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险。
apt-get autoremove
——因为apt会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件。
apt-get autoclean
——定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,可以释放大量的磁盘空间。如果需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。
apt-get clean
——这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
apt-get upgrade
——更新所有已安装的软件包
apt-get dist-upgrade
——将系统升级到新版本
apt-cache search string
——在软件包列表中搜索字符串
apt-cache showpkg pkgs
——显示软件包信息。
apt-cache stats
——查看库里有多少软件
apt-cache dumpavail
——打印可用软件包列表。
apt-cache show pkgs
——显示软件包记录,类似于dpkg –print-avail。
apt-cache pkgnames
——打印软件包列表中所有软件包的名称
(需要定期运行这一命令以确保您的软件包列表是最新的)
简单的说: dpkg只能安装已经下载到本地机器上的deb包. apt-get能在线下载并安装deb包,能更新系统,
且还能自动处理包与包之间的依赖问题,这个是dpkg工具所不具备的。
三、yum
yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。使用和apt-get相似。
语法 yum(选项)(参数)
选项
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
参数
install:安装rpm软件包;
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。
四、deb
deb是 ubuntu 、debian 的格式,是debian发行版的软件包,ubuntu是基于debian 发行的 所以可以用。
dpkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu等。
以下是一些 Dpkg 的普通用法:
dpkg -i <package.deb>
——安装一个 Debian 软件包,如你手动下载的文件,(其中-i等价于--install)
dpkg -c <package.deb>
——列出<package.deb> 的内容中包含的文件结构(其中-c等价于--contents)
dpkg - I <package.deb>
——从<package.deb> 中提取包裹信息的详细信息,包括软件名称、版本以及大小等(其中-I等价于--info)
dpkg -r <package>
——移除一个已安装的包裹(软件名称可通过dpkg -I命令查看,其中-r等价于--remove)
dpkg -P <package>
——完全清除一个已安装的包裹。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。
dpkg -L <package>
——列出 <package> 安装的软件包安装的所有文件(软件名称可通过dpkg -I命令查看,其中-L等价于--listfiles)
dpkg -l <package>
——查看<package>软件包的信息(软件名称可通过dpkg -I命令查看,其中-l等价于--list)
dpkg -s <package>
——显示已安装包裹的详细信息。同时请看 apt-cache 显示 Debian 存档中的包裹信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包裹信息。(软件名称可通过dpkg -I命令查看,其中-s等价于--status)
dpkg-reconfigure <package>
——重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面)。
注:dpkg命令无法自动解决依赖关系。如果安装的deb包存在依赖包,则应避免使用此命令,或者按照依赖关系顺序安装依赖包。
五、rpm
rpm是 redhat 、fedora、suse 的格式。全称为Redhat PackageManager ,是由Redhat 公司提出的,用于管理Linux下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。
rpm -i <package.rpm>——安装软件
例:
rpm -i example.rpm 安装 example.rpm 包;
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;
rpm -q …——查询软件信息
a 查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
i 显示安装包的信息;
l 显示安装包中的所有文件被安装到哪些目录下;
s 显示安装版中的所有文件状态及被安装到哪些目录下;
以下两个附加命令用于指定需要查询的是安装包还是已安装后的文件;
p 查询的是安装包的信息;
f 查询的是已安装的某文件信息;
例:
rpm -qa | grep tomcat4 查看 tomcat4 是否被安装;
rpm -qip example.rpm 查看 example.rpm 安装包的信息;
rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息;
rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;
rpm -e ...
——需要卸载的安装包
在卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称。
例:
rpm -e tomcat4 卸载 tomcat4 软件包
rpm -U <package.rpm>
——需要升级的包
例:
rpm -Uvh example.rpm 升级 example.rpm 软件包
rpm -V ...
——需要验证的包
例:
rpm -Vf /etc/tomcat4/tomcat4.conf
输出信息类似如下:
S.5....T c /etc/tomcat4/tomcat4.conf
其中,S 表示文件大小修改过,T 表示文件日期修改过。更多的验证信息请参考rpm 帮助文件:man rpm
注:RPM 的其他附加命令
--force 强制操作如强制安装删除等;
--requires 显示该包的依赖关系;
--nodeps 忽略依赖关系并继续操作;
此外还有一些安装文件:
.bin/.run
还有一些软件解压后生成的文件夹内包含很多文件,一般文件夹内有install.sh、setup.py等安装文件方式,此种方式类似windows的exe安装方式。
这样的软件第一步授权可执行,第二步运行就可以了。
如有错误,欢迎指正。