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 源码包安装
安装准备工作:
- 安装 gcc 编译器
rpm -y install gcc
- 下载源码包 apache httpd
wget -c http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
安装注意事项:
- 源代码保存位置:
/usr/local/src/
- 软件安装位置:
/usr/local/
- 如何确定安装过程报错:
- 安装过程停止
- 并出现 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
重新启动