第十七章:第35节Linux安装软件的几种方法

更新于:2020-12-18 14:33:04

把Linux的一些基本命令学习完了,如果我们要在Linux上做网站服务器使用,那就需要对Linux服务器做“改造”,让它变成web服务器。“改造”就是安装各种软件,搭建环境,比如安装web服务器软件Nginx、PHP、mysql数据库、memcache缓存……


在Windows中,我们安装软件,大体有两种方式:1下载压缩包,解压后直接就能使用。2下载一个后缀为exe的可执行文件,然后下一步下一步根据每一步的提示安装。仔细看下,不管哪种方式,最终安装的软件文件是二进制的,不是软件源代码,不需要编译。


1.png

这是我们的editplus编辑器软件,标注的文件都是二进制文件,都是这个软件程序编译后的文件,没有程序源代码。


在Linux中,安装一个软件,可以有好几种不同的方式安装,大体是分成两种:

①通过各种命令复制已编译好的二进制文件(可执行文件)到指定目录,和Windows上一样。

②复制程序软件源代码到指定目录,然后使用编译器将其编译成为可执行文件。(这在Windows系统中是几乎没有的,因为Windows的思想是不开放源程序的。)


一般来说著名的linux系统基本上分两大类: 

1.RedHat系列:Redhat、Centos、Fedora等 

2.Debian系列:Debian、Ubuntu等


RedHat 系列 

1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”

2 包管理工具 yum

3 支持tar包


Debian系列 

1 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”

2 包管理工具 apt-get

3 支持tar包


通常,tar包的,都是源程序;而rpm、deb包的则是可执行程序。一般来说,自己动手编译源程序能够更具灵活性,但也容易遇到各种问题和困难。而相对来说,下载那些可执行程序包,反而是更容易完成软件的安装,当然那样灵活性就差多了。所以一般一个软件总会提供多种打包格式安装程序的。你可以根据自己的情况来选择。


1)借助软件包管理器安装


①rpm命令


rpm是Red Hat Linux发行版专门用来管理Linux各项套件的程序。


如果安装包后缀是.rpm,可以使用rpm命令安装:

rpm –ivh rpm的软件包名


rpm也可以卸载一个软件

rpm –e 软件名


不过要注意的是,后面使用的是软件名,而不是软件包名。


例如,要安装software-1.2.3-1.i386.rpm这个包时,应执行:
rpm –ivh software-1.2.3-1.i386.rpm
而当卸载时,则应执行:
rpm –e software。


该方式软件安装本质与windows系统软件安装方式一致,就是把软件包里边的二进制代码文件复制到系统指定目录(C://Program Files)的过程。

优点:软件安装非常方便

缺点:软件的各个组成部分非常固定,不能灵活。需要手动解决依赖关系。


常用参数

参   数

含  义

-i

指定安装的软件包

-h

使用“#”显示详细的安装过程及进度

-v

显示安装的详细信息

-q

查询系统是否已安装指定的软件包

-a

查看系统已安装的所有软件包

-e

卸载软件包

--nodeps

配合-e参数使用,强制卸载不检查依赖项



②yum工具


使用rpm命令安装软件包有个很大的缺点就是文件的关联性太大,有时装一个软件要安装很多其他的软件包,很麻烦。


所以为此RedHat小红帽开发了yum安装方法。yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。


rpm命令只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。


两步安装一个软件,需要联网:

1.找到安装包名称

yum list | grep xxx

2.安装

yum -y install xxx


yum常用命令:


1.列出所有可更新的软件清单命令:yum check-update

2.更新所有软件命令:yum update

3.仅安装指定的软件命令:yum install <package_name>

4.仅更新指定的软件命令:yum update <package_name>

5.列出所有可安裝的软件清单命令:yum list

6.删除软件包命令:yum remove <package_name>

7.查找软件包 命令:yum search <keyword>

8.清除缓存命令:

yum clean packages: 清除缓存目录下的软件包

yum clean headers: 清除缓存目录下的 headers

yum clean oldheaders: 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers


③dpkg工具



我们一直使用的是ubuntu,ubuntu默认是没有安装rpm、yum工具的,但是有另外两个工具:dpkg工具和apt工具。


如果软件包后缀是.deb,安装命令:

dpkg –i deb的软件包名

卸载命令:

dpkg –e 软件名

查询当前系统安装的软件包:

dpkg –l ‘*软件包名*’


④apt工具


dpkg只能安装已经下载到本地机器上的deb包. apt-get能在线下载并安装deb包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是dpkg工具所不具备的。


1.png


有关apt的二进制文件有这么多。


apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似。前面我们用apt安装过zip、tree命令。


两步安装一个软件,需要联网:

1.找到安装包名称

apt-cache pkgnames | grep xxx

2.安装

apt-get install xxx


apt常用命令:


sudo vi /etc/apt/sources.list 更新源服务器列表

sudo apt-get update 更新源

sudo apt-get install package 安装包

sudo apt-get install package --only-upgrade 升级某个软件

sudo apt-get remove package 删除包

sudo apt-cache search package 搜索软件包

sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等

sudo apt-get install package --reinstall 重新安装包

sudo apt-get -f install 修复安装

sudo apt-get remove package --purge 删除包,包括配置文件等

sudo apt-get build-dep package 安装相关的编译环境

sudo apt-get upgrade 更新已安装的包

sudo apt-get dist-upgrade 升级系统

sudo apt-cache depends package 了解使用该包依赖那些包

sudo apt-cache rdepends package 查看该包被哪些包依赖

sudo apt-get source package 下载该包的源代码

sudo apt-get clean && sudo apt-get autoclean 清理无用的包

sudo apt-get check 检查是否有损坏的依赖


2)二进制格式安装


这种方式,直接就是一个压缩包,可能是tar包、zip包,解压后,就是已经编译好的文件。找到有.bin后缀的文件


chmod 755 xxx.bin; ./xxx.bin

直接执行。


总结:


前面两种软件安装与windows软件安装原理一致,把从网络下载的“二进制码”软件从安装包复制到系统指定目录的过程。


二进制码软件文件----(复制)----》系统指定目录(C://Program Files)


3)源代码编译安装


一般都是压缩包,.tar、tar.gz、tar.bz2、tar.Z,先解压。源码安装比较复杂,包里全部都是源代码,没有编译过的。需要经过编译才能够安装。常见的 C 程序软件的安装步骤是 configure, make, make install 三部曲(./configure &;&; make &;&; make install)。


大致流程:


进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls -F --color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。


一般依次执行:

./configure   (检查编译环境)
make   (对源代码进行编译)
sudo make install   (将生成的可执行文件安装到当前计算机中)
make clean   (选择执行,主要是用来清除一些临时文件)

即可完成安装。


解释:

1、configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。


2、make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。


3、make insatll,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。


如何查看某软件是否已安装?


因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:


1、rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”。

rpm -qa | grep xxx


2、yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名”;

yum list installed | grep xxx


3、以deb包安装的,可以用dpkg -l能看到。如果是查找指定软件包,用dpkg -l | grep “软件或者包的名字”;

dpkg -l | grep xxx


4.apt-get方法安装的,可以用apt list --installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名”;

apt list --installed | grep xxx


5、如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了,

上面方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin目录下。


结尾:


了解了在Linux下安装软件大致情况,从下节起我们依次安装web服务器所需要的各种软件。