软件包分类:
原始人(源代码安装包):压缩包(源代码包)
特点:开源,自由选择功能,编译安装更合适更稳定,卸载方便
缺点:步骤长,时间长,报错难以解决
二进制包(RPM包,系统默认包):
优点:简单通过命令进行安装,升级,查询和卸载,安装速度也更快
缺点:源码不可见,功能自由度不高,依赖性强
脚本安装包:一键执行,缺乏自由度,通过脚本自动安装源码包或二进制包

RPM包(安装位置可指定,通常不指定,方便卸载,与相应指令调用)

在系统光盘中的Packages目录下有(光盘中有所有的rpm包).
默认安装位置

默认安装位置

描述

/etc/

配置文件目录

/usr/bin/

可执行命令目录

/usr/lib/

程序使用函数库保存位置

/usr/share/doc/

基本使用手册位置

/usr/share/man

帮助文档位置

(1)rpm包命名规则:httpd-2.2.15-15.el6.centos.1.i686.rpm(包全名)

httpd:软件包名(包名)

2.2.15:软件版本

15:发布次数

el6.centos:适合Linux平台

i686:适合的硬件平台

rpm:后缀名(扩展名)rpm

PS:操作没有安装的软件包时使用包全名且注意路径,

操作已安装的软件包时,使用包名,搜索/var/lib/rpm/中的数据库(虽然暂时无法理解)

(2)依赖性:

树形依赖:a->b->c:先装c再b再a

环形依赖:a->b->c->a,需要将a,b,c放在一条命令中安装

模块依赖:查询网站:www.rpmfind.net (被依赖的模块以.so.数字结尾

用rpm 包安装python_yum

)模块只是一个文件,并非软件包,存在于软件包中,所以需要装的是包含这个模块的rpm

解决:1.上查询网站:www.rpmfind.net 将需要的模块名进行搜索,查找其所在的rpm包 2.肉眼观测,看模块像哪个安装包(这么坑的东西当初是如何设计的呢,唉)

命令:

1.rpm(命令管理)(绝对的反人类指令能不用就不用,但是学习还是必须的,反人类也只是在安装和卸载的时候)

安装:

rpm -ivh 包全名

- -i(install)安装

- -v(verbose)啰嗦,就是显示详细信息

- -h(hash)显示进度(hash和进度有什么关系呢??)

- –nodeps 不检测依赖性(基本不用,可是用了后再补全依赖可以吗?到时候去测试看看)(应该可以)

- –prefix=<+dir> 指定安装目录

升级:

rpm -Uvh 包全名

- -U(upgrade)升级

卸载:

rpm -e 包名

- -e(erase)抹去也就是卸载

- –nodeps卸载都要检查依赖性(如同栈一般,先装后卸)

查询:

rpm -q 包名(查询包是否安装)

rpm -qa (查询所有已安装RPM包)

rpm -qi 包名(查询软件包信息) -qip 包全名(查询未安装软件包信息)

rpm -ql 包名(查询软件包安装位置) -qlp 包全名(查询软件包将安装的位置 )

rpm -qf 系统文件名(查询系统文件属于哪个安装包)(通过rpm安装的才能查到)

rpm -qR 包名(查询软件包所依赖) -qRp 包全名(查询未安装软件包所有依赖 )<定义:然并卵的一条指令,实际基本直接用安装命令看报错>

- -q (query) 询问也就是查询

- -a(all) 所有

- -i(information)查询软件信息

- -p(package) 查询未安装包信息

- -l(list)列表

- -f (file) 查询系统文件属于哪个安装包

- -R (requires)查询软件包依赖性

校验:

rpm -V 已安装包名

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

用rpm 包安装python_rpm_02


不同点

用rpm 包安装python_包名_03


出问题的文件类型

用rpm 包安装python_linux_04


文件提取(暂时用不上,不详细解释,用途:比如ls命令误删,可从对应的rpm包中提取)

rpm2cpio 包全名 | cpio -idv.文件绝对路径

- rpm2cpio 将rpm转化为cpio格式

- cpio 一个标准工具,用于创建软件档案文档和从档案文件中提取文件

用rpm 包安装python_linux_05


演示流程

用rpm 包安装python_用rpm 包安装python_06

错误修正:
1.rpm系统出问题无法安装和查询,考虑数据库出问题
使用以下指令初始化数据库:
rpm –initdb
rpm –rebuilddb 注:这个要花好长时间;

2.yum(在线管理)(centos的这个服务免费,redhat的收费)

自动匹配依赖性,打包所有依赖但是缺少RPM包查询校验

yum源文件 (/etc/yum.repos.d/)

用rpm 包安装python_rpm_07


第一个默认生效

用rpm 包安装python_linux_08


容器名称可改

mirrorlist和baseurl只要一个就行,另一个可注释,mirrorlist也可替换为国内镜像源

enabled默认为1生效


无网络使用yum(用光盘搭建yum源)

1.挂载光盘

2.禁用Base源,修改后缀名使其失效

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

3.使得光盘yum源生效(修改CentOS-Media.repo)

原本:

用rpm 包安装python_rpm_07

修改后:

用rpm 包安装python_用rpm 包安装python_10


命令:

yum list (显示所有可用软件包列表)

yum search 关键字 (搜索和关键字相关的包)

yum -y install 包名 (安装)

yum -y update 包名 (升级,服务器追求稳定基本不升级,但是如果是危害巨大的漏洞就另当别论了)(不加包名为全部升级包括内核,所以与服务器的连接肯定会断开,然后升内核时SSH也应该连不上,然后又要设置点东西,最终服务器就卡在设置那一步了)

yum -y remove 包名 (卸载指令)

- install 安装

- remove 卸载

- -y 自动yes

组管理命令

yum grouplist (列出可用软件组列表)

yum groupinstall 软件组名 (安装指定软件组)

yum groupremove 软件组名 (卸载指定软件组)

PS:建议:服务器使用最小化安装,用什么装什么,尽量不卸载

源码包
1.安装C编译器(安装gcc编译器)
2.下载源码包(压缩包)
源代码一般保存在:/usr/local/src
安装位置:/usr/local
3.解压:tar -zxvf …
4.进入解压后目录
5. ./configure (软件配置与检查)
定义需要的功能选项
检测系统环境是否符合
将选项与环境信息写入makefile用于后续编辑
./configure –help 查看选项
例子:
./configure –prefix=/usr/local/apache2(指定安装目录)
5. make (编译)
报错:make clean (清除编译后的缓存文件)
make install (编译安装)
6.要卸载直接删除安装目录即可
PS: 源码包中应该有安装说明文件比如:INSTALL

脚本安装
优点:简单粗暴
缺点:不能定义版本,功能简而言之,毫无自由度可言或低

例子:安装Nginx(一台顶3台Apache)

前提:0关闭httpd和mysql;保证yum源正常使用,关闭SELinux(增强安全)和防火墙

关闭SELinux:

vim /etc/selinux/config

改成这样:

用rpm 包安装python_rpm_11

后保存重启

1.下载脚本(LNMP)(分脚本包和完整包(包括所需安装包))

2.解压,进入,./centos.sh