【Linux】【CentOS】CentOS 软件安装管理

CentOS 软件安装管理.

1. 软件包管理简介

1.1 软件包分类
  • 源码包
  • 二进制包(rpm包、系统默认包)
1.2 源码包

 
源码包的优点:

  • 开源,如果有足够的能力,可以修改源代码.
  • 可以自由选择所需的功能.
  • 软件时编译安装,所以更加适合自己的系统,更加稳定也效率更高.
  • 卸载方便.

 
源码包的缺点:

  • 安装过程步骤较多,尤其安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误.
  • 编译过程时间较长,安装比二进制时间长.
  • 因为是编译安装,安装过程中一旦报错新手很难解决.
1.3 二进制包

 
二进制包的优点:

  • 包管理系统简单,只通过几个命令就可以实现报的安装、升级、查询和卸载
  • 安装速度比源码包安装快的多

 
二进制包的缺点:

  • 经过编译,不再可以看到源代码
  • 功能选择不如源码包灵活
  • 依赖性

2. rpm 命令管理

2.1 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
  • 模块依赖(库文件依赖):模块依赖查询网站:www.rpmfind.net

系统安装盘有所有 rpm 包:

# cd /mnt
# mkdir cdrom
# mount /dev/sro cdrom
# cd cdrom
# cd Packages
[root@cloudvm cdrom]# pwd
/mnt/cdrom
2.2 安装命令

包全名与包名:

  • 包全名:操作的包是没有安装的软件包时,使用包全名. 而且要注意路径.
  • 包名:操作已经安装的软件包时,使用包名,是搜索 /var/lib/rpm/ 中的数据库
rpm -ivh 包全名

选项:

  • -i(install):安装
  • -v(verbose):显示详细信息
  • -h(hash):显示进度
  • --nodeps:不检测依赖性

安装 httpd

[root@cloudvm Packages]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm 
warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
	package httpd-2.4.6-90.el7.centos.x86_64 is already installed

安装 httpd-devel 缺少依赖

[root@cloudvm Packages]# rpm -ivh httpd-devel-2.4.6-90.el7.centos.x86_64.rpm 
warning: httpd-devel-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
	apr-devel is needed by httpd-devel-2.4.6-90.el7.centos.x86_64
	apr-util-devel is needed by httpd-devel-2.4.6-90.el7.centos.x86_64

安装依赖包 apr-devel

[root@cloudvm Packages]# rpm -ivh apr-devel-1.4.8-5.el7.x86_64.rpm 
warning: apr-devel-1.4.8-5.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:apr-devel-1.4.8-5.el7            ################################# [100%]

安装依赖包 apr-util,又缺少依赖

[root@cloudvm Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm 
warning: apr-util-devel-1.5.2-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
	expat-devel(x86-64) is needed by apr-util-devel-1.5.2-6.el7.x86_64
	libdb-devel(x86-64) is needed by apr-util-devel-1.5.2-6.el7.x86_64
	openldap-devel(x86-64) is needed by apr-util-devel-1.5.2-6.el7.x86_64

使用 yum 在线安装 rpm 包,自动解决依赖关系.

2.3 升级与卸载

升级命令:

rpm -Uvh 包全名

选项:

  • -U(upgrade):升级

 
卸载命令:

rpm -e 包名

选项:

  • -e(erase)卸载
  • --nodeps:不检查依赖性

安装位置在系统默认路径,由 rpm 包作者指定,故而存在卸载命令.
卸载的时候也要考虑依赖性,按照依赖顺序依次卸载.

2.4 rpm 包查询

1. 查询是否安装
 
查询包是否安装

rpm -q 包名

选项:

  • -q:查询(query)

查询所有已经安装的 rpm 包

rpm -qa

选项:

  • -a:所有(all)

 
2. 查询软件包详细信息

rpm -qi 包名

选项:

  • -i :查询软件信息(information)
  • -p:查询未安装包信息(package)包全名

 
3. 查询包中文件安装位置

rpm -ql 包名

选项:

  • -l:列表(list)
  • -p:查询未安装包信息(package)包全名

rpm 包默认安装位置

/etc/配置文件安装目录
/usr/bin/可执行的命令安装目录
/usr/lib/程序所使用的函数库保存位置
/usr/share/doc/基本的软件使用手册保存位置
/usr.share/man/帮助文件保存位置
 
4. 查询系统文件属于哪个 rpm 包
rpm -qf 系统文件名

选项:

  • -f:查询系统文件属于哪个软件包(file)
[root@cloudvm ~]# rpm -qf /etc/yum.conf 
yum-3.4.3-163.el7.centos.noarch

 
5. 查询软件包的依赖性

rpm -qR 包名

选项:

  • -R:查询软件包的依赖性(requires)
  • -p:查询未安装包信息(package)
2.5 rpm 包检验

1. rpm 包校验

rpm -V 已安装的包名

选项:

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

手动编辑 /etc/httpd/conf/httpd.conf, 添加一些注释内容

[root@cloudvm ~]# rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf

验证内容中的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)

2. rpm包中文件提取

rpm2cpio 包全名 | cpio -idv .文件绝对路径
  • rpm2cpio 将rpm包转换为cpio格式的命令
  • cpio 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
cpio 选项 < [文件|设备]

选项:

  • -i:copy-in模式,还原
  • -d:还原时自动新建目录
  • -v:显示还原过程

查询 ls 命令所在路径

[root@cloudvm ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

查询 ls 命令所在包

[root@cloudvm ~]# rpm -qf /usr/bin/ls
coreutils-8.22-24.el7.x86_64

制造 ls 命令丢失的情形

[root@cloudvm ~]# mv /usr/bin/ls /tmp
[root@cloudvm ~]# ls
-bash: /usr/bin/ls: No such file or directory

从系统光盘提取 ls 命令./usr/bin/ls 表示提取到当前目录,. 不能省略:

[root@cloudvm ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-24.el7.x86_64.rpm | cpio -idv ./usr/bin/ls ./usr/bin/ls
28603 blocks

验证提取出的 ls 命令

[root@cloudvm ~]# dir
abc.txt  anaconda-ks.cfg  eg2.sh  eg4.sh	   student.txt	usr
adc.txt  eg1.sh		  eg3.sh  shell_procedure  test.txt
[root@cloudvm ~]# ./usr/bin/ls 
abc.txt  anaconda-ks.cfg  eg2.sh  eg4.sh	   student.txt	usr
adc.txt  eg1.sh		  eg3.sh  shell_procedure  test.txt

修复丢失的 ls 命令

[root@cloudvm ~]# mv usr/bin/ls /usr/bin/
[root@cloudvm ~]# ls
abc.txt  anaconda-ks.cfg  eg2.sh  eg4.sh           student.txt  usr
adc.txt  eg1.sh           eg3.sh  shell_procedure  test.txt

3. yum 在线管理

3.1 yum 源文件

yum 源文件保存在 /etc/yum.repos.d/

[root@cloudvm ~]# ls  /etc/yum.repos.d/
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo

默认 CentOS-Base.repo 是开启的,其它关闭

vim /etc/yum.repos.d/CentOS-Base.repo
  • [base]    容器名称,一定要放在[]中.
  • name    容器说明,可以自己随便写.
  • mirrorlist    镜像站点,这个可以注释掉.
  • baseurl    我们的 yum 源服务器的地址. 默认是 CentOS 官方的 yum 源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的 yum 源地址.
  • enabled    此容器是否生效,如果不写或写成 enable=1 都是生效,写成 enable=0 就是不生效.
  • gpgcheck    如果是 1 是指 rpm 的数字证书生效,如果是 0 则不生效
  • gpgkey    数字证书的公钥文件保存位置. 不用修改.
3.2 光盘搭建 yum 源

1. 挂载光盘

mkdir /mnt/cdrom

mount /dev/sr0 /mnt/cdrom

2. 是网络 yum 源失效

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

3. 搭建光盘 yum 源

vim CentOS-Media.repo

编辑内容如下:

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
#        file:///media/cdrom/
#        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

测试

yum list
3.3 yum 命令

yum 命令格式如下

yum [options] COMMAND

1. 查询

查询所有可用软件包列表

yum list

搜索服务器上所有和关键字相关的包

yum search 关键字

2. 安装

yum -y install 包名

yum -y install httpd-devel
yum -y install gcc

3. 升级

升级指定包.

yum -y update 包名

升级所有包,包括 linux 内核.

yum -y update

4. 卸载

yum -y remove 包名
  • 服务器使用最小化安装,用什么软件安装什么
  • 尽量不卸载,依赖关系复杂,可能卸载 linux 内核依赖

5. yum 软件组管理命令

列出所有可用的软件列表

yum grouplist

安装指定软件组,组名可以由 grouplist 查询出来

yum groupinstall 软件组名

卸载指定软件组

yum groupremove 软件组名

4. 源码包管理

4.1 源码包和 rpm 包的区别
  • 安装之前的区别:概念上的区别
  • 安装之后的区别:安装位置不同

rpm 可以指定安装位置,建议不指定安装位置,不便于卸载

[root@cloudvm ~]# rpm --help | grep -A1 prefix
  --prefix=<dir>                   relocate the package to <dir>, if
                                   relocatable

源码包安装在指定位置,一般是

/usr/local/软件名/

安装位置不同带来的影响:
rpm 包安装的服务可以使用 CentOS 系统服务管理命令(service)来管理,例如 rpm 包安装的 apache 的启动方法是:

  • /etc/rc.d/init.d/httpd start (CentOS 6 的位置,CentOS 7 及以后版本不同)
  • service httpd start (实际上是调用上面的命令)

而源码包安装的服务则不能被服务管理命令使用,因为没有安装到默认路径中. 所以只能用绝对路径进行服务管理,例如:

  • /usr/local/apache2/bin/apachectl start
4.2 源码包安装

安装准备工作:

  1. 安装 gcc 编译器
    rpm -y install gcc
  2. 下载源码包 apache httpd
    wget -c http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz

安装注意事项:

  • 源代码保存位置:/usr/local/src/
  • 软件安装位置:/usr/local/
  • 如何确定安装过程报错:
    1. 安装过程停止
    2. 并出现 error、warning 或 no 的提示

 
安装具体过程:
 
1.解压缩源码包

tar -zxvf httpd-2.2.9.tar.gz

2.进入解压缩目录

cd httpd-2.2.9/

3.软件配置与检查

  • 定义需要的功能选项.
  • 检测系统环境是否符合安装过要求.
  • 把定义好的功能选项和检测系统环境的信息都写入 Makefile 文件,用于后续的编辑.
./configure --prefix=/usr/local/apache2

4.编译与安装
 
编译

make

如果报错,清除编译结果

make clean

安装

make install

5.验证安装

CentOS 7 关闭防火墙

systemctl stop firewalld.service

在这里插入图片描述
rpm 包 httpd 网页路径 /var/www/html/index.html
源码包 httpd 网页路径 /usr/local/apache2/htdocs/index.html
 
6.卸载
 
直接删除安装目录

5. 脚本安装包

关闭 SELinux.
美国国家安全局出品 Linux 系统安全组件.

vim /etc/selinux/config
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

重新启动

https://lnmp.org/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值