前面的话
window里面的软件无法在linux中安装,好处是windows中绝大多数的木马、病毒对Linux没有影响,坏处是软件需要针对linux再次开发。本文将详细介绍Linux软件安装
分类
【1】源码包
源码包的优点:
1、开源,如果有足够的能力,可以修改源代码;
2、可以自由选择所需的功能
3、软件是编译安装,所以更加适合自己的系统,更加稳定、效率更高;
4、卸载方便;
源码包的缺点:
1、安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
2、编译过程时间较长,安装比二进制安装时间长
3、因为是编译安装,安装过程中一旦报错新手很难解决
【2】二进制包(RPM包、系统默认包)
二进制包是指源码包经过编译之后的包,也就是常说的RPM包
二进制包的优点:
1、包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
2、安装速度比源码包快很多
二进制包的缺点:
1、经过编译,不能再看到源代码
2、功能选择不如源码包灵活
3、依赖性
【3】脚本安装包
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装的还是源码包或二进制包
优点:安装简单、快捷
缺点:完全丧失了自定义性
RPM
所有RPM包都在系统光盘的Packages目录中
mkdir /mnt/cdrom/ mount /dev/sr0 /mnt/cdrom/
cd /mnt/cdrom/Packages/
【命名规则】
httpd-2.2.15-15.el6.centsos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 发布的次数
el6.centos 适合的Linux平台
i686 适应的硬件平台
rpm 包扩展名
【依赖性】
1、树形依赖:a->b->c 解决方法:从后往前安装
2、环形依赖:a->b->c->a 解决方法:放在一条命令中安装即可
3、模块依赖:库文件依赖,库也叫模块,就是linux中的函数,它有一个典型的特征,就是以【.so.数字】结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一个软件包当中。只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可
RPM安装
【包名】
包全名:操作的包是没有安装的软件包时,要使用包全名,且要注意路径
包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库
比如,httpd-2.2.15-15.el6.centsos.1.i686.rpm是包全名,而httpd是包名
【安装命令】
rpm -ivh 包全名 选项: -i(install) 安装 -v(verbose) 显示详细信息 -h(hash) 显示进度 --nodeps 不检测依赖性
【升级命令】
rpm -Uvh 包全名
选项:
-U(upgrade) 升级
【卸载命令】
[注意]卸载命令使用的是包名,而且不一定要在安装目录下
rpm -e 包名 选项: -e(erase) 卸载 --nodeps 不检查依赖性
查询与检验
【查询是否安装】
rpm -q 包名 #查询包是否安装 -q 查询(query) rpm -qa #查询所有已经安装的rpm包 -a 所有(all)
rpm -qa | grep httpd
【查询软件包详细信息】
rpm -qi 包名 -i 查询软件信息(information) -p 查询未安装包(package)
【查询包中文件安装位置】
rpm -ql 包名 -l 列表(list) -p 查询未安装包信息(package)
RPM包默认安装路径如下
【查询系统文件属于哪个RPM包】
rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包(file)
【查询软件包的依赖性】
rpm -qR 包名 -R 查询软件包的依赖性(requires) -p 查询未安装包信息(package)
【校验】
rpm -V 已安装的包名
-V: 校验指定RPM包中的文件(verify)
执行 rpm -V httpd 后,无任何提示,代表该文件没有被做任何修改。因此,判断本地的apache与官方给出的是否一致, 从而判断是否被修改
修改文件 /etc/httpd/conf/httpd.conf , 在注释行添加任意内容后, 再次执行rpm -V httpd 后,有如下提示
S.5....T. c /etc/httpd/conf/httpd.conf
验证内容中的8个信息的具体内容如下
S : 文件大小是否改变 M : 文件的类型或文件的权限( rwx )是否被改变 5 : 文件MD5校验和是否改变( 可以看成文件内容是否改变 ) D : 设备的主从代码是否改变 L : 文件路径是否改变 U : 文件的属主( 所有者 ) 是否改变 G : 文件的属组是否改变 T : 文件的修改时间是否改变
【RPM包中的文件提取】
rpm2cpio表示将rpm包转换为cpio格式的命令
cpio是一个标签工具,它用于创建软件档案文件和从档案文件中提取文件
rpm2cpio 包全名 | cpio -idv .文件绝对路径
cpio选项 < [文件|设备] 选项 -i: copy-in模式,还原 -d:还原时自动新建目录 -v:显示还原过程
YUM
使用yum安装的好处在于,所有软件包都在官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题
[注意]redhat的yum在线装需要付费,centOS不需要
【yum源文件】
在/etc/yum.repos.d/目录中,默认有4个yum源文件,其中CentOS-Base.repo是基本yum源文件,如果能上网,那它是默认生效的,而其他的都是默认不生效的
[base]:容器名称,一定要放在[]中,名字可以随便起 name:容器说明,名字也是随便起 mirrorlist:镜像站点,这个可以注释掉 baseurl:yum源服务器的地址,默认是CentOS官方的yum源服务器。如果觉得慢,可以修改为其他yum源地址 enabled:如果不写或写成enable=1则生效,写成enable=0则不生效。默认最后一个容器不生效,其他容器都生效 gpgcheck:如果是1,则RPM的数字证书生效,0则不生效。一般都要开启,开启后安装时会验证rpm包是否是官方的,以保证系统安全 gpgkey:数字证书的公钥文件保存位置,不用修改
默认系统安装后,在目录/etc/pki/rpm-gpg下都会存在数字证书。前面的file://表示文件协议,后面的/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7是数字证书的位置
【光盘yum源搭建】
1、挂载光盘
mkdir /mnt/cdrom #建立挂载点 mount /dev/sr0 /mnt/cdrom #挂载光盘
2、使网络yum源失效
判断yum源是根据后缀名repo来实现的,修改后缀名则可以使该yum源失效
cd/etc/yum.repos.d/ #进入yum源目录 mv CentOS-Base.repo CentOS-Base.repo.bak #修改Yum源文件后缀名,使其失效
3、使光盘yum源生效
vim CentOS-Media.repo
baseurl=file:///mnt/cdrom:地址为光盘挂载地址,如果有多余的光盘挂载点,需要注释掉不存在或不需要使用的光盘挂载地址
[注意]注释的时候,一定要把引号写在行首,否则不生效
enabled=1:把enabled=0改为enabled=1,使该yum源配置生效
4、命令
yum list:该命令可验证目前使用的yum源有哪些可用的rpm包
【yum命令】
【查询】
yun list
#查询所有可用软件包列表
yum search 关键字
#搜索服务器上所有和关键字相关的包
【安装】
yum安装只写包名即可
yum -y install 包名 选项: -install 安装 -y (自动回答yes)
【gcc安装】
gcc是C语言的编译器,gdk是java的编译器,bash是linux命令行的编译器
yum -y install gcc
【升级】
如果不写包名,只写yum -y update会导致系统直接崩溃
yum -y update 包名 -update:升级 -y:自动回答yes
【卸载】
服务器使用最小化安装,用什么软件安装什么,尽量不要卸载
yum -y remove 包名 -remove:卸载 -y:自动回答yes
【组管理命令】
yum grouplist
#列出所有可用的软件列表
yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来
yum gourpremove 软件组名
#卸载指定软件组
[注意]groupinstall中的软件组名只支持英文
【语言设置】
LANG=en_US:切换至英文(临时生效)
LANG=zh_CN.utf8:切换至中文(临时生效)
源码包安装
源码包和RPM包在安装之后,最主要的区别在于安装位置的不同
源码包是不能使用service命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一,一般将其放在“/usr/local/软件名”目录下;而rpm包安装后,启动文件通常都是放在/etc/rc.d/init.d目录中的,而service命令执行时,会自动搜索该目录,所以rpm包安装的服务可以使用service命令
service httpd start
因为源码包安装的服务不能被服务器管理命令管理,所以只能使用绝对路径进行服务的管理
/usr/local/apache2/bin/apachectl start
当然,如果将源码包安装后的启动程序复制到/etc/rc.d/init.d目录下,也可以使用service命令执行
【安装准备】
1、安装gcc
由于源码包都是c语言写的,所以要先安装c语言编译器:gcc
2、源码包下载
从官方网站下载源码包,若是下载到了windows上面,可以使用winSCP等软件传到linux上
[注意]若已安装了二进制包,则源码包也是可以继续安装的,因为两者安装目录不一样。但是,并不建议这样做,因为端口会冲突
对于要求效率的软件,要安装源码包版本,因为是本机编译,更具有兼容性和效率,而rpm包是软件开发者提供的大众版本,可用于不注重效率的应用
【注意事项】
源代码保存位置:/usr/local/src/
软件保存位置: /usr/local/
如何确定安装过程报错:安装过程停止,并出现error、warning或no的提示
【安装】
源码包的安装过程和安装顺序是固定的,下面以安装apache2为例,解压缩后的目录为httpd-2.2.31
1、安装时必须进入到解压缩后的目录httpd-2.2.31中
2、configure命令用于软件配置与检查(基本上每个源码包都会有该命令,即使个别的没有该命令,也会提供相关替代命令)
它有以下几点功能:
a、定义需要的功能选项;
b、检测系统环境是否符合安装要求
c、把a中定义好的功能选项和b中检测系统环境的信息都写入Makefile文件,用于后续的编辑(后续的'make'和'make install'命令都会依赖该文件)
执行命令 ./configure --prefix=/usr/local/apache2,该命令用于指定安装位置为:/usr/local/apache2 (其中的'apache2'目录不需要提前创建,'make install'命令执行时会自动创建)。命令执行后,会在当前目录生成Makefile文件
3、执行‘make’命令,编译源码(这一步通常比较耗时)
如果在编译过程中报错,则执行make clean命令来清除缓存、临时文件等,使安装环境恢复到未安装状态
4、执行make install命令,安装程序,此时会创建/usr/local/apache2目录
若在安装过程中报错,则需要删除/usr/local/apache2目录,并且执行make clean命令
脚本安装
所谓的一键安装包,实际上还是安装的源码包与RPM包,只是把安装过程写成了脚本,便于初学者安装。优点是简单、快速、方便。缺点是不能定义安装软件的版本,不能定义所需要的软件功能,源码包的优势丧失
下面以安装LNMP(http://lnmp.org/download.html)为例
【准备工作】
1、先停止之前安装的apache和mysql服务(最好将源码包安装的apache目录'/usr/local/apache2'也删除
service apache stop
service httpd stop
2、保证yum源正常:可以使用"yum list"命令测试。若是光盘yum源,记得挂载光盘
3、关闭SELinux和防火墙
a、永久关闭SELinux的方法:编辑文件"/etc/selinux/config",将"SELINUX=enforcing"改为"SELINUX=disabled",然后重启系统即可
b、永久关闭防火墙的方法:"chkconfig iptables off",开启为:"chkconfig iptables on";
临时关闭防火墙的方法:"service iptables stop",开启为:"service iptables start"
【开始安装】
1、将lnmp.org网站的一键安装包上传到服务器根目录下
2、解压缩安装包
tar -zxvf lnmp1.4-full.tar.gz
3、进入安装目录
cd lnmp1.4
4、执行install.sh脚本
./install.sh
【安装过程】
运行上述LNMP安装命令后,会出现如下提示:
目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择!输入对应MySQL或MariaDB版本前面的序号,回车进入下一步.
需要设置MySQL的root密码(不输入直接回车将会设置为root)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。输入后回车进入下一步,如下图所示:
询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,输入完成,回车进入下一步。注意:选择PHP7等高版本时需要自行确认是否与自己的程序兼容。
输入要选择的PHP版本的序号,回车进入下一步,选择是否安装内存优化:
可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装
接着,会提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。 LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响
界面如下,表示安装完成
【错误处理】
如果安装卡在了"php-fpm"那里,通常表示已安装成功,只是"php-fpm"那里卡住了(物理机少见,但虚拟机比较常见),解决的方法就是:使用命令"pkill -9 php-fpm"杀掉"php-fpm"进程,然后重新启动该进程"/etc/rc.d/init.d/php-fpm start"即可