软件包管理简介

软件包分类

源码包

源码压缩文件,可以直接看到开源代码,直接使用脚本编译后安装。

源码包的优点:

  1. 开源,可以修改源代码
  2. 可以自由选择所需的功能
  3. 软件是编译安装,更加适合自己的系统,稳定效率更高
  4. 卸载方便

源码包的缺点:

  1. 安装过程步骤多,尤其较大的软件集合,容易出错
  2. 编译过程时间较长,安装比二进制安装时间长
  3. 编译安装过程中报错新手很难解决

二进制包

RPM包、系统默认包

二进制包的优点:
包管理系统简单,通过命令就可以实现包的安装、升级、查询和卸载
安装速度比源码包安装更快

二进制包的缺点:
经过编译,不能看到源代码
功能不能灵活定制
依赖性,平台依赖性、库依赖性

脚本安装包

所谓的脚本安装包,就是把复杂的软件包安装过程写成程序脚本,初学者可以执行程序脚本实现一键安装。实际安装的还是源码包和二进制包。

优点:安装简单、快捷
缺点:完全丧失了自定义性

RPM命令管理

RPM包的来源

RPM包在系统光盘

RPM包的命名规则

httpd-2.2.15-15.el6.centos.1.i686.rpm
-httpd软件包名
-2.2.15软件包版本
-15软件发布的次数
-3l6.centos适合Linux平台
-i686适合的硬件平台,若为x64则为64位硬件平台
-rpm 扩展名

RPM包依赖性

树形依赖:a->b->c
环形依赖:a->b->c->a
模块依赖:模块依赖(库文件依赖),查询网站:www.rpmfind.net

模块依赖解决:
1. 在线查询,网站:www.rpmfind.net
2. 本地查找,通过依赖模块名,猜测可能优先安装的rpm包中可能包含需要的库文件
3. yum在线解决,RedHat通过yum在线搭载服务器,服务器已经帮助用户整理好软件安装的依赖库,方便用户下载
4. 使用光盘做本地yum

注:RedHat的yum是付费的,需要购买key

RPM包安装命令

包全名和包名

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

RPM安装

rpm -ivh 包全名
options:
-i (install)安装
-v(verbose)显示详细信息
-h(hash)显示进度
–nodeps不检测依赖性

rpm安装时,报依赖性错误,则先安装依赖rpm包再安装原rpm包

RPM包的升级与卸载

rpm -Uvh 包全名
options:
-U (upgrade)升级

包升级命令在包没有安装时,可以安装包;安装后可以升级包。

为什么使用包全名?
升级包对系统来说是陌生的包,必须使用包全名

rpm -e 包名
options:
-e (erase)卸载
–nodeps 不检查依赖性

所有安装过的包,都可以在后台数据库/var/lib/rpm/目录中找到包的相关信息。
包卸载时,仍有依赖性,必须按照安装顺序的相反顺序卸载依赖包。

RPM包查询

查询软件包安装信息

rpm -q 包名
rpm -qa
options:
-q (query)查询
-a (all)所有包

// 查询apache服务的rpm包是否安装
#rpm -q httpd
// 查询所有安装的rpm包
#rpm -qa 
// 查询已安装服务的相关包
#rpm -qa|grep httpd

查询软件包的详细信息

rpm -qi 包名
options:
-i (information)查询软件信息
-p(package)查询未安装信息

// 查询已安装软件包的详细信息
#rpm -qi httpd
// 查询未安装的软件包信息,软件包未安装但有包作者发布的信息
#rpm -qip httpd

查询软件的安装位置

rpm -ql 包名
options
-l (list)列表

// 查询软件包httpd的安装位置
#rpm -ql httpd

RPM包默认安装位置

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

查询系统文件属于哪个包

rpm -qf 系统文件名
options:
-f (file) 查询系统文件属于哪个软件包(文件不能是自己创建的文件)

查询软件包的依赖性

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

#rpm -qR httpd

RPM包校验

RPM包校验

rpm -V 已安装的包名
options:
-V (verify)校验指定RPM包中的文件

#rpm -V httpd // 什么都没有显示
#vim /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文件的修改时间是否改变

文件类型

类型含义
c配置文件(config file)
d普通文档(documentation)
g“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
L授权文件(license file)
r描述文件(read me)

RPM包中文件提取

rpm2cpio 包全名 | cpio -idv .文件绝对路径
注: .不能省略,代表当前目录

rpm2cpio将rpm包转换为cpio格式的命令
cpio是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

cpio 选项 < [文件|设备]
options:
-i:copy-in模式,还原
-d:还原时自动新建目录
-v:显示还原过程

// 查询ls命令属于哪个软件包
#rpm -qf /bin/ls
// 移动ls到/tmp目录,那么假设ls文件丢失
#mv /bin/ls /tmp/
// 提取RPM包中ls命令到当前目录的/bin/ls
#rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm|cpio -idv ./bin/ls
// 把ls命令复制回/bin目录,修复文件丢失
#cp /root/bin/ls /bin/

yum在线管理

RPM包的在线安装方式即为yum方式

优点:
将所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题。

yum源文件

/etc/yum.ropos.d/CentOS-Base.repo文件内容,yum.ropos.d目录中CentOS-Base.repo文件生效

内容含义
[base]容器名称,一定要放在[]中
name容器说明,可以自己随便写
mirrorlist镜像站点,这个可以注释掉,和baseurl选择一个就行
baseurlyum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的;如果觉得慢可以改成其他yum源地址
enabled容器是否生效,如果不写或写成enable=1都是生效,enable=0不生效
gpgcheckgpgcheck=1表明RPM的数字证书生效,gpgcheck=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

3 使光盘yum源生效

#vim CentOS-Media.repo
// 修改baseurl为自己的光盘挂载点
baseurl=file:///mnt/cdrom
// 注释掉不用的挂载点,使用#顶头注释
// 开启enabled,即可
enabled=1
// 保存即可

// 显示yum源中内容
#yum list 

yum命令

常用yum命令

1 查询

// 查询所有可用软件包列表
#yum list
// 搜服服务器上所有和关键字相关的包
#yum search 关键字

2 安装
yum -y install 包名
options:
-install 安装
-y 自动回答yes

#yum -y install gcc

3 升级
yum -y update 包名
options:
- update 升级,不写包名时,升级系统所有程序

4 卸载
yum -y remove 包名
options:
- remove 卸载

提醒:
服务器使用最小化安装,用什么软件安装什么,尽量不卸载

yum软件组管理命令

// 列出所有可用的软件组列表
#yum grouplist 
// 安装指定软件组,组名可以由grouplist查询出来,组名不支持中文
#yum groupinstall 软件组名
// 卸载指定软件组
#yum groupremove 软件组名

// 组名不支持中文,怎么解决
#LANG=en_US // 临时修改
#yum grouplist
#yum groupinstall grpname
// 安装完成后
#LANG=zh_CN.utf8

源码包管理

源码包和RPM包的区别

1 RMP包和源码包的区别:

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

注:rpm安装可以指定安装位置

2 RPM包默认安装位置

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

3 源码包安装位置

可以指定位置安装,一般在/usr/local/软件名/

4安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理

// RPM包安装apache的启动方法
#/etc/rc.d/init.d/httpd start
#service httpd start

源码包安装的服务不能被服务管理命令管理,因为没有安装到默认路径,所以只能用绝对路径进行服务管理。

#/usr/local/apache2/bin/apachectl start

源码包安装过程

1 安装准备

安装c语言编译器
下载源码,并上传到服务器,使用winscp从windows上传到linux服务器

2 安装注意事项

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

3 源码包安装过程

下载源码包
解压缩下载的源码包
进入解压缩目录

./configure 软件配置与检查

定义需要的功能选项
检测系统环境是否符合安装要求
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑

注1:./configure –help 查看需要的功能选项
make编译
编译失败后,可以使用make clean清除缓存和临时文件和编译成功的文件

make install 编译安装
安装失败,执行make clean并删除安装目录

// 编译安装启动过程
#./configure --prefix=/user/local/apache2/
#make
#make install
#/usr/local/apache2/bin/apachectl start 

注2:可以查看源码包中INSTALL说明文件,查看安装过程方法

4 源码包的卸载

不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件。

脚本安装包

Linux没有脚本安装包,使用脚本安装源码包或RPM包

样例:安装nginx

准备工作

关闭RPM包安装的httpd和MySQL
保证yum源正常使用
关闭SELinux和防火墙

// 关闭SELinux
#vim /etc/selinux/config
// 永久关闭SELINUX
SELINUX=disabled

下载LNMP解压缩

到lamp官网下载lamp压缩包

脚本一键安装

执行centos.sh脚本全自动安装,只需要根据提示选择作者提供的版本,安装即可。

centos.sh脚本分析
所谓的一键安装包,实际上还是安装的源码包与RPM包,只是把安装过程写成了脚本,便于初学者安装。
优点:简单、快速、方便
缺点:

  1. 不能定义安装软件的版本
  2. 不能定义所需要的软件功能
  3. 源码包的优势丧失

参考

慕课网Linux软件安装

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐