Linux软件安装详解

来源:互联网 发布:055 舰首 知乎 编辑:程序博客网 时间:2024/06/07 12:03

Linux软件包分类

  • 源码包
    优点:开源,可自定义安装。
    缺点:
    (1) 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误;
    (2) 编译过程时间较长,安装比二进制安装时间长;
    (3) 由于是编译安装,安装过程中一旦报错新手很难解决。

脚本安装包:把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装的还是源码包和二进制包。
优点:安装简单、快捷;
缺点:完全丧失了自定义性。

  • 二进制包

RPM包、系统默认包
二进制包的优点:
(1) 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
(2) 安装速度比源码包安装快的多。
二进制包的缺点:
(1) 经过编译,看不到源代码;
(2) 功能选择不如源码包灵活;
(3) 依赖性。

RPM命令管理

  • RPM包位置

    RPM包在系统光盘的Packages目录中。(本地)
    执行命令:
    mkdir /mnt/cdrom (创建挂接点)
    mount /dev/sr0 /mnt/cdrom (将RPM包目录挂接到挂接点上,通过访问挂接点即可访问RPM包)
    cd /mnt/cdrom
    cd Packages/
    ls (显示所有RPM包)

  • RPM命名规则

    httpd-2.2.15-15.el6.centos.1.i686.rpm
    httpd:软件包名
    2.2.15:软件版本
    15:软件发布的次数
    el6.centos:适合的Linux平台
    i686:适合的硬件平台
    rpm:rpm包扩展名

  • RPM包依赖性

    树形依赖:a->b->c
    环形依赖:a->b->c->a (这两个依赖情况,rpm包只是依赖于其他rpm包)
    模块依赖:当安装一个rpm包时,其安装包依赖于其他安装包下的某个文件,这时需要找到该提示文件的安装包,安装该包,然后才能安装想要的rpm包。(麻烦之处在于找到文件对应的安装包,现在提供了一个查询网站:www.rpmfind.net,输入文件名会给出对应的rpm包名)。

  • RPM安装命令

    首先说明包全名和包名:
    在操作软件时,是使用包全名还是包名,区别在于:
    包全名:当操作的包时没有安装过的,使用包全名。而且要使用绝对路径或者cd到该路径下。
    包名:当操作已安装的软件包时,使用包名,其会搜索/var/lib/rpm/中的数据库。

    安装rpm包命令为:rpm -ivh 包全名
    -i (install) 安装
    -v (verbose) 显示详细信息
    -h (hash) 显示进度
    –nodeps 不检测依赖性(注意是两个横线-)
    例如:rpm -ivh httpd-2.2.15-15.e16.centos.1.i686.rpm
    注意:最好是检查依赖性。

    RPM包升级:rpm -Uvh 包全名 (注意升级时也应该使用包全名,因为这个新的升级包对系统来说也是一个新的包)
    -U(upgrade) 升级
    例如:rpm -Uvh httpd-2.2.15-15.e16.centOS.1.i686.rpm
    -e(erase): 卸载
    –nodeps:不检查依赖性(实际工作中不允许使用)
    例如:rpm -e httpd(这儿就不需要一定在安装目录下输入命令了。)
    在卸载包之前,必须先卸载该包的依赖项。(安装时哪个先装,则卸载时那个后装,后装的应先卸。即卸载顺序跟安装顺序是反序)

Note: RPM包安装时并没有指定安装路径,所以应该是安装在Linux的默认安装路径下(取决于写RPM包的人如何指定安装路径),所以RPM包准备了卸载命令。而源码包可以指定安装路径,因此源码包没有卸载命令。对于源码包安装的软件,只要把源码包所在目录删除即可实现软件的卸载。

RPM包查询
rpm -q 包名(查询已安装的软件包)
-q (query): 查询

rpm -qa
-a (query all):查询系统中所有装过的rpm包

rpm -qa |grep httpd:查询系统中含有httpd关键字的所有安装过的rpm包(”|”为管道符)。

rpm -qi 包名(查询包信息)
rpm -qip zenity-2.28.0-1.e16.i686.rpm(用途:用于查询该包的官网,获得相关信息)
-i(information):查询软件信息;
-p(package): 查询未安装包信息(安装前有的信息);
-l(list):列出匹配关键字的文件;
-f (file):查询系统的某个文件是属于哪个包的;rpm -qf yum.conf,若该文件不是rpm包装出来的,则不能反向查询出该文件属于哪个包。

RPM包默认安装路径:

安装路径 文件类型 /etc/ 配置文件安装目录 /usr/bin/ 可执行的命令安装目录 /usr/lib/ 程序所使用的的函数库保存位置 /usr/share/doc/ 基本的软件使用手册保存位置 /usr/share/man/ 帮助文件保存位置

*

RPM包校验rpm -V httpd
-V (verify):校验指定RPM包中的文件

**验证内容中的8个信息的具体内容如下**:S 文件大小是否改变M 文件的类型或文件的权限(rwx)是否被改变5 文件MD5校验和是否改变(可以看成文件内容是否改变)D 设置的主从代码是否改变L 文件路径是否改变U 文件的属主(所有者)是否改变G 文件的属组是否改变T 文件的修改时间是否改变**文件类型**c 配置文件(config file)d 普通文件(documentation)g “鬼文件”(ghost file),很少见,表示该文件不应该被这个RPM包包含。若出现这个信息,应该注意系统是否被攻击,存在安全风险。L 授权文件(License file)r 描述文件(read me)例如:S.5....T.  c /etc/httpd/conf/httpd.conf :表示apache的配置文件被修改过,MD5值被修改,文件的修改时间改变,c表示该文件是配置文件。

RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径(”.”代表当前目录)
-rpm2cpio:将rpm包转换为cpio格式的命令。
cpio:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件。
cpio 选项 < [文件|设备]
-i:copy-in模式,还原;
-d:还原时自动新建目录;
-v:显示还原过程。

模拟重要系统文件丢失的处理方法:
rpm -qf /bin/ls:查询ls命令属于哪个软件包;
mv /bin/ls /tmp:造成ls命令误删除假象;
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls:提取RPM包中ls命令到当前目录的/bin/ls下;
cp /root/bin/ls /bin/:把ls命令复制回/bin/目录,修复文件丢失。

yum在线安装

优点:将所有软件包放在官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题。
但是:redhat的yum在线安装需要付费,所以可使用CentOS。

yum源文件

位置:/etc/yum.repos.d/CentOS-Base.repo
使用 vi 命令打开源文件,文件内容说明:

[base]     容器名称,一定要放在[]name       容器说明,可以自己随便写mirrorlist 镜像站点,这个可以注释掉baseurl    yum源服务器的地址(baseurlmirrorlist两者有一个即可,一般baseurl都被注释掉了)enabled    此容器是否生效,如果不写或enable等于1都是生效,enable等于0就是不生效gpgcheck   为1则RPM的数字证书生效,为0则不生效gpgkey     数字证书的公钥保存位置,不用修改

光盘搭建yum源

在没有网络的情况下,允许使用光盘来搭建本地yum源。

1. 挂载光盘

建立挂载点:mkdir /mnt/cdrom
挂载光盘:mount /dev/cdrom /mnt/cdrom/

2. 使网络yum源失效

方法一:
进入yum源目录:cd /etc/yum.repos.d/
修改yum源文件后缀名,使其失效:mv CentOS-Base.repo CentOS-Base.repo.bak
方法二:
在yum源中加入enable=0, 使其不生效。但该方法会比较麻烦,需要对每个容器都添加enable=0.

3. 使光盘yum源生效

vim CentOS-Media.repo(打开光盘yum源)

- [c6-media]- name=CentOS-$releasever - Media- baseurl=file:///mnt/cdrom   #把地址改为你自己的光盘挂载地址- #    file:///media/cdrom/- #    file:///media/cdrecorder/  #注释掉这两个不存在的地址- gpgcheck=1- enable=1    #把enable=0改成enabled=1,让这个yum源配置文件生效- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

yum list:显示yum源有哪些,若yum源名中有新建的光盘的容器名,则光盘yum源生效,可直接使用本地yum源。

yum命令

1. 常用yum命令

1) 查询yum list: 查询所有可用软件包列表yum search 关键字: 搜索服务器上所有和关键字相关的包注意:yum没有本地查询命令,即不能查询本地安装了哪些包,只能查询服务器上或光盘上有哪些包。要查询本地安装包,使用rpm命令。2) 安装yum -y install 包名-y : 自动回答yes注意:yum安装时只写包名即可,不写包全名。而rpm手动安装时,必须写绝对路径和包全名,linux才能找到安装包位置。

安装c语言编译器:yum -y install gcc
安装C++编译器:yum -y install gcc-c++
安装完成后,使用如下命令编译源文件:
C源文件:gcc -o 要生成的文件名 要编译的源文件名
C++源文件:g++ -o 要生成的文件名 要编译的源文件名
注意:gcc是C语言编译器,想安装源码包必须要有gcc的环境,否则无法安装。第一个gcc必须使用RPM包安装。后面可以使用源码包对gcc升级。

3) 升级yum -y update 包名前提条件:有更高版本的软件才能升级,否则不能升级。对linux来讲,除非爆发了非常大的漏洞,如SSL, Bash等必须要马上升级,一般情况下不用升级就不要升级,因为服务器进行升级会付出很大的代价。4) 卸载yum -y remove 包名建议:服务器使用最小化安装,要用什么软件才安装什么软件,尽量不卸载软件。(因为卸载也同样有依赖性,若该程序所依赖的包也是系统所依赖的包,被卸载后会造成系统崩溃)服务器上不建议使用yum卸载,要注意服务器安全!!!

2. yum软件组管理命令

yum grouplist:列出所有可用的软件组列表yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来yum groupremove 软件组名:卸载指定软件组

源码包管理

源码包和RPM包的区别

1.区别
安装前的区别:概念上的区别
安装之后的区别:安装位置的不同

RPM包安装位置:默认位置,见前面的表格。RPM包也可以指定安装位置。但不建议自定义安装位置,以免系统找不到安装位置。
源码包安装位置:安装在指定位置当中,一般是usr/local/软件名/ (相当于windows下的软件默认安装位置Program Files下)。源码包必须要指定安装位置,原因是源码包没有卸载命令,则卸载时必须一个文件一个文件地手工删除,若不指定好位置,则卸载时很麻烦。
–prefix指定安装位置。

2.安装位置不同带来的影响
安装位置不同,则管理方法不同。
例如:
RPM包安装的apache的启动方法有两种,一种是使用绝对路径,一种是使用系统服务管理命令(service)来启动:

/etc/rc.d/init.d/httpd startservice httpd start// service命令会自动搜索/etc/rc.d/init.d/路径下的程序

而源码包不能使用service命令启动,因为没有安装到默认路径中,而只能使用绝对路径来进行启动(除非将apache拷贝到service搜索的路径下):

/usr/local/apache2/bin/apachectl start

源码包安装过程

1. 安装准备:
安装C语言编译器gcc(源码包全都由C语言写的)
官网下载源码包:http://mirror.bit.edu.cn/apache/httpd
使用WinSCP.exe工具,可将windows主机上的文件拷贝到虚拟机的linux系统中。
2. 安装注意事项
源代码保存位置:/usr/local/src/
软件安装位置:/usr/local/
如何确定安装过程报错:安装过程停止,并出现error、warning或no的提示。
3. 源码包安装过程
(1) 下载源码包
(2) 解压缩下载的源码包:tar -zxvf 源码包名
(3) 进入解压缩目录:cd 解压缩的目录(这条命令是必须操作的)
执行命令:(1) ./configure (2) make (3) make install
./configure 软件配置与检查
定义需要的功能选项:./configure –help (查看有哪些功能选项);
检测系统环境是否符合安装要求:例如,是否安装gcc,若没有安装,则执行./configure会报错;
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
例如,如安装时指定安装路径:./configure –prefix=/usr/local/apache2
make 编译
make clean:一旦报错,就可以执行该命令,目的是清楚缓存、临时文件等,让安装过程变成完全没有安装一样,重头再来。
make install 安装命令
PREFIX/bin/apachectl start 启动程序 (具体启动路径可查看程序的INSTALL文件)
4. 源码包的卸载
不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件。

脚本安装包

上面所讲的安装过程均以安装Web服务器Apache为例。
脚本安装包以安装Nigix服务器为例。
注意: Linux系统中只有源码包和RPM包,没有脚本这种安装包,所谓的脚本安装包其实是把复杂的安装过程(几十行或上百行命令),写成一个Apache的安装脚本,实际上安装还是源码包或者RPM包。
优点:简单、快速、方便
缺点:(1)不能定义安装软件的版本
(2)不能定义所需要的软件功能
(3)源码包的优势丧失
准备工作
(1)关闭RPM包安装的httpd和MySQL(因为Nigix需要80端口,因此需要关掉使用80端口的服务);
(2)保证yum源正常使用;
(3)关闭SELinux(Linux中的增强安全组件,美国国家安全局为了提高Linux安全性能而开发的,我们暂时不用)和防火墙(使用setup命令):
vi /etc/selinux/config
SELINUX=disabled

安装包下载网站:http://lnmp.org/install.html
安装脚本包
(1)解压缩:tar -zxvf lnmp1.2-full.tar.gz
(2)进入解压缩目录:cd lnmp1.2-full
(3)执行安装脚本:./install.sh lnmp
或者可以一句命令完成全部步骤:
wget -c http:soft.vpser.net/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh.lnmp

注意:安装时出现类似卡在Starting php-fpm 处,其实安装过程已经完成,这是虚拟机中常出现的问题。只需将启动进程关掉,然后重新开启即可。
强制关闭进程:pkill -9 php-fpm (-9表示强制)
启动进程:/etc/rc.d/init.d/php-fpm start

That’s all!
详细内容请见慕课网“Linux软件安装详解”
http://www.imooc.com/learn/447

原创粉丝点击