目录
一、RPM包管理工具
1.定义
2.RPM软件包
3.程序包管理器相关文件
3.获取途径
4.rpm命令功能
4.1挂载命令mount
4.2接触挂载命令umount
4.3查看挂载情况df —— disk free
4.4挂载规则
5.rpm命令格式
5.1 rpm -a 软件名 ——查看软件是否安装
5.2 rpm -qi 软件名 ——显示该软件详细信息
5.3 rpm -ql 软件名 ——显示软件安装目录/查看某个软件的所有安装目录
6.维护RPM数据库
6.1重建RPM数据库
6.2导入验证公钥
二、yum安装
1.定义
2.yum安装过程
3.实验——本地yum安装
3.1客户端配置文件的格式
4.实验过程
三、源码编译安装
1.概述
2.编译安装过程
2.1 第一步 .configure --help ——可以看到安装的模块
2.2 第二步 make
2.3 第三步 makeinstall
3.实验过程
Linux系统与Windows系统不兼容,在Windows平台开发出来的软件在Linux上无法运行,在Linux上开发的软件在Windows上又无法运行,这就导致了软件移植困难。
对比应用程序与系统命令的关系
应用程序 | 系统命令 | |
文件位置 | 通常在/usr/bin和/usr/sbin目录中 | 一般在/bin和/sbin目录中,或为Shell内部指令 |
主要用途 | 完成相对独立的其他辅助任务,例如网页浏览器 | 完成对系统的基本管理工作,例如IP配置工具 |
适用环境 | 根据实际需要,有些程序可在图形界面中运行 | 一般只在字符操作界面运行 |
运行格式 | 无固定格式 | 一般包括命令字、命令选项和和命令参数 |
典型应用程序的目录结构
文件类型 | 保存目录 |
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序参考文档文件 | /usr/share/doc |
应用程序手册页文件 | /usr/local/share/man |
常见的软件包封装类型
文件类型 | 保存目录 |
RPM软件包 | 扩展名为“.rpm” |
DEB软件包 | 扩展名为“.deb” |
源代码软件包 | 一般为“.tar.gz”、“tar.ba2”等格式的压缩包包含程序的原始代码 |
绿色免安装的软件 | 软件包的扩展名不一,以TarBall格式的居多 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用 |
RPM(Red-Hat Package Manager )
由Red Hat公司提出,被众多Linux发行版所采用
建立统一的数据库文件(一张对应表将信息写入)
详细记录软件包安装、卸载等变化信息
自动分析软件包依赖关系
软件素材参考:http://www.rpm.org
一般命名格式:bash-4.1.2-15.el6_4.x86_64.rpm
(bash:软件名;4.1.2:当前版本号;15:发布次数;x86_64:硬件平台;rpm扩展名)
1.包文件组成 (每个包独有)
2.数据库(公共):/var/lib/rpm (安装好后会将一些公共的数据放入数据库中)
红帽官方
第三方组织提供
软件项目官方站点
自己制作
rpm命令能够实现几乎所有对RPM软件包的管理功能
执行“man rpm”命令可以获得关于rpm命令的详细帮助信息
安装软件首先必须要有安装包,安装包的来源是从官方下载,还可以从光盘里复制(需要挂载光盘)
挂载光盘:mount/dev/sr0 /mnt (将光盘挂载在mnt文件夹下)
[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 52403200 4759728 47643472 10% /
devtmpfs 917604 0 917604 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 9264 924260 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 5232640 182368 5050272 4% /boot
tmpfs 186708 4 186704 1% /run/user/42
tmpfs 186708 24 186684 1% /run/user/0
/dev/sr0 4414592 4414592 0 100% /mnt
[root@localhost ~]#
只要是外来的硬件设备,想要在Linux系统中使用都要挂载;挂载都是临时性的,如果想要永久挂载需要写到文件中去 /etc/fstab
RPM——查询已安装的RPM软件信息
rpm -q [子选项] [软件名]
选项 | 软件名/包 | 功能效果 |
rpm -qa | 显示当前系统中以 RPM 方式安装的所有软件列表 | |
rpm -q | 查询指定软件是否已安装 | |
rpm -qi | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 | |
rpm -ql | 显示指定的软件包在当前系统中安装的所有目录、文件列表 | |
rpm -qc | 列出已安装的指定软件的配置文件 | |
rpm -ivh | 安装 | |
rpm -i | 安装一个新的RPM软件包 | |
rpm -v | 显示安装过程的详细信息 | |
rpm -h | 在安装或升级过程中已#号显示读条 | |
rpm -e | 卸载指定的软件 | |
rpm -U | 升级某个软件包,若未安装过则进行安装 | |
rpm -F | 升级某个软件包,若未安装过则直接结束 |
rpm -qc 软件名 ——查看软件的配置文件(例.conf conf结尾的)
安装路径 | 含义 |
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
当RPM 数据库发生损坏,可通过重建RPM数据库修复
rpm --rebuilddb 或者 rpm --initdb
rpm --import /mnt/RPM-GPG-KEY-CentOS-7
程序包编译安装的过程:
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。
为了解决rpm命令繁琐的依赖关系,所以发明了yum命令
YUM(Yellow dog Updater,Modified )yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间
yum是c/s架构(c/s架构是分为客户端和服务端;服务端是存放软件安装包,客户端是进行安装软件包;配置文件指向服务端)
yum仓库的分类,本地和网络(本地:自己既是客户端也是服务端;网络:客户端和服务端分开)
元信息的定义:元信息是一个文件,记录了安装包的路径、安装包的依赖关系
本地yum(不需要依赖网络)
yum install 安装
yum install 软件名 -y (-y表示同意)
vim /etc/yum.conf 服务端的配置文件
cd /etc/yum.repos.d/ 客户端的配置文件
客户端必须要有文件后缀面(必须要以.repo结尾)(必须要放在/etc/yum.repos.d文件夹中)
[local]
name=local
baseurl=服务器地址
gpgcheck=0 (代表不验证)
enabled=1是开启/enable=0是关闭
baseurl:
file:// 本机位置
file:// /mnt 本机挂载点(本机挂载在mnt文件夹)
http:// 网络地址
https:// 网络地址
作为服务端需要提供安装包、源数据;所以看到repodata、package就可以复制当前地址
[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
##将硬盘挂载到/mnt文件夹下
[root@localhost ~]#cd /etc/yum.repos.d/
##切换到yum仓库目录
[root@localhost yum.repos.d]#ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
##查看当前目录下的文件
[root@localhost yum.repos.d]#mkdir bak
##建立名为bak的文件夹
[root@localhost yum.repos.d]#ls
bak CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
##查看文件夹下的文件
[root@localhost yum.repos.d]#mv *.repo bak/
##将该文件夹下所有以.repo结尾的文件移动到bak文件夹下
[root@localhost yum.repos.d]#ls
bak
##查看当前文件夹下只显示bak文件夹
[root@localhost yum.repos.d]#vim /etc/yum.repos.d/local.repo
##进入本地yum仓库vim编译器内进行安装
[shiqi]
##名称 可随机取
name=shiqi
##名称 可随机取
baseurl:file:///mnt
##基本地址(挂载地址)
gpgcheck=0
##是否开启服务(0代表不开启;1代表开启)
Esc
:wq
##退出vim编辑器
[root@localhost yum.repos.d]#yum clean all
##清理缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: shiqi
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]#yum makecache
##重新下载元数据
已加载插件:fastestmirror, langpacks
shiqi | 3.6 kB 00:00:00
(1/4): shiqi/group_gz | 156 kB 00:00:00
(2/4): shiqi/filelists_db | 3.1 MB 00:00:00
(3/4): shiqi/primary_db | 3.1 MB 00:00:00
(4/4): shiqi/other_db | 1.2 MB 00:00:00
Determining fastest mirrors
元数据缓存已建立
注意:如果出现下面的情况 要kill 114533 或者 kill -9 114533
建议使用rm -rf /var/run/yum.pid
Tarball封包
.tar.gz和.tar.bz2格式居多
软件参考素材:http://sourceforge.net
完整性校验——md5sum校验工具
[root@localhost ~]#md5sum httpd-2.4.25.tar.gz
24fb8b9e36cf131d78caae864fea0f6a httpd-2.4.25.tar.gz
以上为MD5的校验和
configure 文件是作者放在源码包中给我们使用的,是一个脚本文件
apache 只能支持一万左右流量的访问
nginx 可以支持三万到六万左右的流量访问
prefzx=path 指明路径
without代表默认安装的
yum -y install gcc gcc-c++ pcre-devel openssl-devel zlib-devel openssl openssl-devel
安装编译环境需要的 包
装好编译器后会生成一个Makefile的文件
将所有的源代码翻译成二进制,会形成一个可以绿色的可执行文件
make -j 2 用两核cpu编译
将执行文件及相关的一些依赖文件拷贝到之前指定的目录中;如果想补全 要做一个软连接
关闭防火墙和核心防护
mkdir /data/
##建立data文件夹
cd /data
##切换到data文件夹
wget http://nginx.org/download/nginx-1.18.0.tar.gz
##下载安装包 wget是下载命令
tar xf nginx-1.18.0.tar.gz
##解压源码包
cd /data/nginx-1.18.0/
切换目录
yum -y install gcc gcc-c++ pcre-devel openssl-devel zlib-devel openssl openssl-devel
##安装编译环境需要的 包
./configure --prefix=/apps/nginx
##检测安装环境
make -j 2 && make install
##启用两核进行安装
ln -s /apps/nginx/sbin/* /usr/bin/
##做一个软连接,为了可以补全nginx
systemctl stop firewalld
##关闭防火墙
setenforce 0
#关闭防护
nginx
#开启nginx服务
ss -natp|grep 80
#检测服务开启/检测80端口是否开启
curl 192.168.91.100
#检测服务开启
nginx -s stop
#关闭nginx服务