Linux - 软件安装管理

一、软件包管理简介

软件包分类:
1、源码包 //脚本安装包
❶源码包优点:
  ①开源,如果有足够的能力,可以修改源代码;
  ②可以自由选择所需的功能;
  ③软件是编译安装,所以更加适合自己的系统,更加稳定、效率更高;
  ④卸载方便。
❷源码包缺点:
  ①安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误;
  ②编译过程时间较长,安装比二进制安装时间长;
  ③因为是编译安装,安装过程中一旦报错新手很难解决。

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

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

 

二、Linux中rpm包命名规则

1、RPM包的来源:所有RPM包都在系统光盘的Packages目录中
2、RPM包命名规则:软件包名-软件版本-软件发布的次数-适合的Linux平台-适合的硬件平台-包扩展名
3、RPM包依赖性:
a、树形依赖:a->b->c    解决方法:从后往前安装
b、环形依赖:a->b->c->a 解决方法:放在一条命令中安装即可
c、模块依赖:库文件依赖,库也叫模块,就是linux当中的函数,它有一个典型的特征,就是以【.so.数字】结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一个软件包当中。我们只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可。

4、yum在线安装:可以方便的解决依赖文件,一条命令就可以帮用户从网上(本地也可以)找到安装包进行安装。
注:RedHat的yum是收费服务,而CentOS的yum是免费服务。

 

三、Linux中rpm命令管理之安装命令

(1)包全名与包名
  * 包全名:操作的包是没有安装的软件包时,使用包全名,而且注意路径。
    * 如:/mnt/cdrom/Packags/zlib-devel-1.2.3.-27.e16.i686.rpm
  * 包名:操作已经安装的软件包时,使用包名,搜索/var/lib/rpm/中的数据库。
    * 如:zlib-devel
(2)RPM安装
  *  rpm -ivh 包全名
    * -i  (install) 安装
    * -v (verbose) 显示详细信息
    * -h (hash) 显示进度
    * --nodeps 不检测依赖性(欺骗自己的操作)
笑死,安个包真的能忘了一开始安装的是哪个。

 

四、Linux中rpm命令管理之升级与卸载

1、升级命令 
rpm -Uvh 包全名(要升级到的软件版本),如果没有安装这个软件的任何版本,这个命令可以代替rpm -ivh。
2、卸载命令
rpm -e 包名(比如Httpd,不需要包全名),这个命令不同于安装和升级,它可以在任何目录运行,原理是去/var/lib/rpm目录中的数据库(如__db0)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
3、--nodeps这个选项不管是在安装和卸载的时候,最好都不要使用。
4、rpm安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用rpm -e命令卸载。
Ps:相对于二进制安装,源码安装是指定安装目录了,卸载的时候只需要删除对应的目录就可以完全的卸载,不留一点残余。

 

五、Linux中rpm命令管理之RPM包查询

1) 查询是否安装
1-1) rpm -q 包名
# 查询包是否安装
1-1-1) -q (query) : 查询
1-2) rpm -qa 
# 查询所有已经安装的RPM包
# rpm -qa | grep httpd : grep 后跟正则表达式, find 后跟通配符
1-2-1) -a (all) : 所有

2) 查询软件包详细信息
2-1) rpm -qi 包名
2-1-1) -i (infomation) : 查询软件信息
2-2) rpm -qip 包全名
2-2-1) -p (package) : 查询未安装报信息
# 有时遇到问题, 可根据未安装包信息中所提供的网站进行查询资料

3) 查询包中文件安装位置
3-1) rpm -ql 包名
3-1-1) -l (list) : 列表
3-1-2) -p (package) : 查询未安装包信息
# 可查看包作者欲将包安装的位置

4) RPM 包默认安装位置

5) 查询系统文件属于哪个 RPM 包
5-1) rpm -qf 系统文件名
# 该文件必须是通过 RPM 包安装的,否则查不到对应的位置
5-1-1) -f (file) : 查询系统文件属于哪个软件包

6) 查询软件包的依赖性
6-1) rpm -qR 包名
6-1-1) -R (requires) : 查询软件包的依赖性 
6-1-2) -p (package) : 查询未安装包的信息

 

六、Linux中rpm命令管理之RPM包校验

1) RPM 包校验
1-1) rpm -V 已安装的包名
1-1-1) -V (verify) : 校验指定RPM包中的文件
1-1-2) 执行 rpm -V httpd 后, 无任何提示, 代表该文件没有被做任何修改
# 判断本地的apache 与官方给出的是否一致, 从而判断是否被人修改
1-1-3) 修改文件 /etc/httpd/conf/httpd.conf , 在注释行添加任意内容后, 再次执行
1-1-4) 提示 : S.5....T.  c  /etc/httpd/conf/httpd.conf

1-2) MD5校验
# 用来校验文件的完整性(文件内容是否被改变)
# 例如, 在官网下载的游戏, 官方会给出MD5校验码, 将下载的游戏通过专用的MD5校验工具校验后生成一份MD5校验码, 对比两份校验码等是否一致, 不一致则说明,下载的文件可能丢包, 可能文件损坏, 可能被其他人动过手脚一直木马等

2) RPM 包中文件提取
2-1) rpm2cpio 包全名 | cpio -idv .文件绝对路径
# 由于 cpio 命令自身不知道从何处来提取文件, 所以需要用管道符来告知提取的位置
2-2) cpoi 选项 < [文件|设备]
2-2-1) -i : copy-in 模式, 还原
2-2-2) -d : 还原时自动新建目录
2-2-3) -v : 显示还原过程
2-3) 例
2-3-1) rpm -qf /bin/ls
# 查询ls 命令属于哪个软件包
2-3-2) mv /bin/ls /tmp/
# 造成ls 命令误删除假象
2-3-3) rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
# 切换至家目录后, 提取RPM 包中ls 命令到当前目录的 /bin/ls 下
2-3-4) cp /root/bin/ls /bin/
# 把ls 命令复制到/bin/目录, 修复文件丢失

 

七、yum源文件

Yum在线安装:yum源文件
1、yum的优点:将所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题。(rpm缺点:安装过程中,rpm包依赖性太强)
2、redhat的yum在线安装需要付费,centOS不需要。
3、在【/etc/yum.repos.d/】目录中,默认有4个yum源文件,其中【CentOS-Base.repo】是基本yum源文件,如果我们能上网,那它是默认生效的,而其他的都是默认不生效的。
4、[base]:名字可以随便起。
5、name:名字也是随便起。
6、mirrorlist和baseurl一个是主站点,一个是辅助站点,这两个有一个就行。可以找一个163或清华大学的yum源更换。
7、enabled:默认最后一个容器不生效,其他容器都生效。
8、gpgcheck:一般都要开启,开启后安装时会验证rpm包是否是官方的,以保证系统安全。
9、gpgkey:默认系统安装后,在目录【/etc/pki/rpm-gpg】下都会存在数字证书。注:前面的【file://】表示文件协议,后面的【/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6】是数字证书的位置。
[root@CentOS6 ~]# cd /etc/pki/rpm-gpg
[root@CentOS6 rpm-gpg]# ll
总用量 16
-rw-r--r--. 1 root root 1706 11月 27 2013 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 1 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 1 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 1 root root 1734 11月 27 2013 RPM-GPG-KEY-CentOS-Testing-6
[root@CentOS6 rpm-gpg]#

 

八、光盘yum源搭建

光盘yum源搭建:
1、挂载光盘
  mkdir /media或mnt/cdrom:建立挂载点;
  mount /dev/cdrom /media或mnt/cdrom:挂载光盘;
2、使网络yum源失效:
  cd /etc/yum.repos.d/:进入yum源目录;
  mv CentOS-Base.repo CentOS-Base.repo.bak:修改Yum源文件后缀名,使其失效;(判断yum源是根据后缀名repo来实现的,修改后缀名则可以使该yum源失效)
3、使光盘yum源生效:
  vim CentOS-Media.repo
  baseurl=file:///mnt或media/cdrom:地址为光盘挂载地址,如果有多余的光盘挂载点,需要注释掉不存在或不需要使用的光盘挂在地址;
  enabled=1:把enabled=0改为enabled=1,使该yum源配置生效;
4、命令:yum list:该命令可验证目前使用的yum源有哪些可用的rpm包。

 

九、yum 命令

1.查询
>yun list --查询所有可用软件包列表
>yum search 关键字 --搜索服务器上所有和关键字相关的包
2.安装
>yum -y install 包名 (-y 自动回答yes)
yum安装只写包名即可! eg:yum -y install gcc --c语言编译器
3.升级是要付出代价的,有可能造成损失。除非出现了关键的安全问题漏洞,一般不建议升级,可不做就不做。
升级命令:yum -y update 包名. (注意不要直接写yum -y update 这表示把linux中的所有软件都升级,包括内核,这样会造成比较多的麻烦)
4.服务器原则:使用最小化安装,用什么安装什么,尽量不要去卸载。卸载命令:yum -y remove 包名。
5.yum软件组管理命令
  yum grouplist:列出所有可用的软件列表;
  yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来;
  yum gourpremove 软件组名:卸载指定软件组。
6.修改环境变量来使系统显示中文LANG=zh_CN.utf8,显示英文:LANG=en_US,临时生效的。要想要永久生效,修改配置文件i18n.详细参考shell变量讲解一节。
Ps:二进制安装首推yum安装,Yum和rpm相比唯一的缺点就是没有对已安装的软件进行查询还是需要rpm -q系列命令进行查询。

 

十、Linux中源码包与RPM包区别

安装位置不同带来的影响
1、源码包是不能使用【service】命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一。而rpm包安装后,通常都是放在【/etc/rc.d/init.d】目录中的,而【service】命令执行时,会自动搜索该目录,所以rpm包安装的服务可以使用【service】命令。
2、综上所述,安装位置不同,启动方法是有区别的。
3、使用绝对路径启动程序的方法是通用的,通常软件包中会写上启动程序的方法的。
4、如果将源码包安装后的启动程序复制到【/etc/rc.d/init.d】目录中,则也是可以使用【service】命令执行的。
5、安装在指定位置当中,一般是:  /usr/local/软件名/,源码包安装的服务,只能用绝对路径进行服务的管理。

 

十一、Linux中源码包安装过程

源码包安装:
安装准备
1、由于源码都是c语言写的,所以要先安装c语言编译器:gcc
2、从官方网站下载源码包,若是下载到了windows上面,可以使用winSCP传到linux上。
注:若已安装了二进制包,则源码包也是可以继续安装的,因为两者安装目录不一样。但是,并不建议这样做,因为端口会冲突。
3、源码包安装过程(源码包的安装过程和安装顺序是固定的)
下面以安装apache2为例,解压缩后的目录为【httpd-2.2.31】:
3.1、安装时必须进入到解压缩后的目录【httpd-2.2.31】中;
3.2、执行【./configure】命令,该命令用于软件配置与检查(基本上每个源码包都会有该命令,即使个别的没有该命令,也会提供相关替代命令),它有以下几点功能:
3.a、定义需要的功能选项;
3.b、检测系统环境是否符合安装要求;
3.c、把a中定义好的功能选项和b中检测系统环境的信息都写入Makefile文件,用于后续的编辑。(后续的【make】和【make install】命令都会依赖该文件)
执行命令【./configure --prefix=/usr/local/apache2】,该命令用于指定安装位置为:【/usr/local/apache2】(其中的【apache2】目录不需要提前创建,【make install】命令执行时会自动创建)。
命令执行后,会在当前目录生成Makefile文件。
3.3、执行【make】命令,编译源码(这一步通常比较耗时);
3.4、执行【make install】命令,安装程序,此时会创建【/usr/local/apache2】目录。
注:
如果命令执行过程中发生终止,并且出现error、warn或no提示,则表明出错,否则,一切正常。
若执行【./configure】或【make】命令时出现错误,是不需要删除【/usr/local/apache2】目录的,因为程序还没有真正安装。只需要执行【make clean】命令即可,该命令用于清除缓存、临时文件等,使安装环境恢复到未安装状态。
若执行【make install】命令时报错,则需要删除【/usr/local/apache2】目录,并且执行【make clean】命令才行。

Ps:如果是给用户访问的话,用源码包,效率更高;如果只是自己用的话,选择安全包更好。

 

十二、Linux中脚本安装包

脚本安装包:准备工作
1、本节以安装LNMP1.0(http://lnmp.org/download.html)为例,所以需要先停止之前安装的apache和mysql服务(最好也将源码包安装的apache【/usr/local/apache2】删除)
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】。
4、脚本安装过程中,会将系统中已有的apache、mysql、php等卸载掉。启动安装脚本【centOS.sh】。
注:安装后,如果安装卡在了【php-fpm】那里,通常表示已安装成功,只是【php-fpm】那里卡住了(物理机少见,但虚拟机比较常见),解决的方法就是:使用命令【pkill -9 php-fpm】杀掉【php-fpm】进程,然后重新启动该进程【/etc/rc.d/init.d/php-fpm start】即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆氪和他的那些代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值