软件包管理
2022-10-07 08:09:47 0 举报
AI智能生成
Linux-软件包管理 yum
作者其他创作
大纲/内容
会有配置文件的残留
yum remove nginx httpd -y
简单干净
直接恢复系统的快照
清理机器环境
软件包,指的就是,程序安装所需要的一个文件,在可视化的系统下,一般是双击安装即可,用于安装某个程序,某个软件。
Windows下
yum install -y nginx#先下载nginx.rpm软件包,然后yum自动去帮你安装了这个包
/usr/bin/nginx #命令,可执行文件/etc/nginx/nginx.conf # 配置文件,里面写了用于控制该软件的不同功能的参数
软件包顾名思义就是将应用程序、配置文件和数据打包的产物
xxx.rpm
centos、Redhat使用的是rpm软件包
xxx.deb
ubantu使用的是deb包
不同的系统,使用的软件包格式不一样
Linux下
是一个将二进制文件+配置文件+数据文件 ,打包好的一个单个文件
二进制文件是源码经过编译后的产物
Linux下的rpm软件包
什么是软件包
golang
go语言
未编译源码包
c语言
编译型语言源码
对运维来说,可以不提供该语言的环境的机遇上比如不用装go环境,依赖已经在包里了
十分的精细,适用于开发系统工具,比如 docker k8s Linux系统等
代码编写完成后,编译器自动可以检测出所有的语法问题,因此编译型语言不易出错
把所有的代码,全部检测完毕后,生成另一个正确的二进制命令
python
解释型语言源码
自上而下,很容易出错,且到出错点就卡住了
无法知道出错点后的代码是否正确
是一行一行编译的,知道完成,或中间报错崩溃
解释型语言必须要求运维的机器上,安装对应的环境才可以运行,比如python,php
所以一般用在快速开发上,开发速度快如,测试开发,运维开发,自动化开发等
cat hello.shecho 'hello world'
bash
脚本语言程序源码
c语言的的gcc编译器
golang语言使用的是golang编译器
一边编译程序员写的代码,一边编译机器认识的机器语言
python语言,解释型语言(python解释器)
计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。
编译过程耗时较长
大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决。
编译的缺点
什么是源码包
centos平台可以使用的rpm包
*.tar.gz
下载解压即用
支持二进制包下载的某些软件
已经编译好
rpm,rpmbuild
构建命令
下载后还需要自己再构建rpm
xxxx.src.rpm
二禁止源码包(了解即可)
rpm
rpbuild
rpm包命令
yum命令
在线安装rpm包
安装软件包后缀 *.rpm
redhat/centos/...
dpkg命令
deb包相关命令
apt命令
在线安装deb包
安装包文件后缀格式 *.deb
ubuntu
系统平台
常见二进制软件包
什么是二进制包
不需要从源代码再编译了,拿来即用,安装简单,但是程序安装路径受限,可定制性很差
rpm安装默认只有8个功能,以及安装路径固定
二进制
需要编译后使用,安装难度较难,定制化很强
你可以在编译过程中,可以指定开启20功能,以及日志,配置文件,安装的路径可以定义
源代码
区别
有很多软件的官网,以及第三方软件仓库,会提供rpm包下载功能
www.rpmfind.net
http://nginx.org/packages/
还有更好的,更加精准的应该去软件的官网,去下载它的rpm包
在线下载rpm包
1.光盘插入操作系统的光驱
2.确认了光驱选择了镜像
3.使用df -h 或者 lsblk 查看情况
一般挂载都挂在mnt目录下
mount /dev/sr0 /mnt
挂载后才可以看见光盘内的内容,才能使用
4.对光盘文件进行挂载使用
5.安装需要的rpm包
umount 挂载点
6.取消挂载
centos7.iso镜像文件,内置了绝大多数软件的rpm包
本地光盘镜像rpm包
需要运维提前下载好软件的rpm包,拷贝到对应服务器上,去安装(需要手动解决依赖关系)
如何搜索,下载rpm包,去那找
创建
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
下载
[root@liuxinghan opt]# rpm -ivh nginx-1.10.0-1.el7.ngx.x86_64.rpm
安装
rpm -ivh
安装rpm
语法:# rpm -qa | grep 软件名称选项:-q:查询,query-a:全部,all-i :显示软件包的概要信息,详细信息-v :显示安装详细过程-h:显示安装进度
[root@liuxinghan opt]# rpm -qa nginxnginx-1.10.0-1.el7.ngx.x86_64
rpm -qa
显示一些详细信息
rpm -qi
根据文件名,查询属于那个软件包
rpm -qf 文件名
列出了软件包生成了那些文件
rpm -ql 软件包
查询
升级的版本过大时,不建议使用rpm,需要解决的依赖关系太多
需要获取软件的新版本
-U:upgrade,升级-v:表示显示进度条-h:表示以#形式显示进度条
rpm -Uvh 完整的安装包路径
升级
卸载nginx
注意名字必须准确,
rpm -e 软件名
删除
自己安装时会出现很多的依赖报错
依赖关系的解决很麻烦,需要谨慎处理
很多都依赖关系
自己安装的的可能比较新,对于后面的自带的依赖版本过高
可能卸载了软件,但是依赖卸载不完全
yum remove vim -y
先去查询 rpm -qi 依赖包名
卸载冲突的依赖包 rpm -e 依赖包名
安装正确的依赖包 rpm -ivh 依赖包
但是你还没完全卸载,需要再次卸载
rpm的依赖冲突要去一级一级的解决,不能跳级
还有关于依赖冲突
手动处理依赖关系
rpm包安装管理命令
1.安装淘宝的tengine
http://tengine.taobao.org/download/tengine-2.3.3.tar.gz
2.下载地址
用于编译安装c语言代码
yum install -y gcc make gcc-c++ ncurses-devel
用于编译golang代码环境
yum install -y golang
不同的语言有不同的编译环境
3.准备Linux的编译环境
1.先下载对应软件的源码文件
[root@liuxinghan opt]# tar -zxvf tengine-2.3.3.tar.gz
2.对文件进行解压缩
[root@liuxinghan opt]# cd /opt/tengine-2.3.3/[root@liuxinghan tengine-2.3.3]# ll
3.进入目录,查看目录内容,准备开始编译
默认是不支持https证书的功能
1.给nginx添加支持https证书的功能,需要如下操作
需要Linux系统支持https的模块,就是安装openssl模块
[root@liuxinghan tengine-2.3.3]# yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel
2.只能在编译的时候,添加该功能
./configure --prefix=/opt/my_nginx0829/ --with-http_ssl_module
指定安装的目录,并且开启http_ssl模块
3.执行编译参数,让nginx的安装,可以扩展其他功能
[root@liuxinghan tengine-2.3.3]# ll | grep Make-rw-r--r--. 1 root root 400 Aug 29 16:18 Makefile
4.执行完成后,就生成了一个文件
及当你执行make命令成功后,直接执行make install 命令
make && make install
5.执行编译安装
[root@liuxinghan opt]# ll my_nginx0829/
编译安装的nginx全在这个目录之下
6.检查你安装的nginx是否生成
[root@liuxinghan opt]# /opt/my_nginx0829/sbin/nginx
加入可执行命令的上一级
永久修改得写入到 /etc/profile
PATH=/opt/my_nginx0829/sbin/:$PATH
可以进行优化,将路径写入到PATH变量中
ip:端口
也可以使用 curl -I ip 来查看
8.可以使用浏览器发出http请求,来访问nginx
4.开始编译,且安装,注意先进行编译参数的配置
rm -rf my_nginx0829
编译的软件,删除软件就是直接干掉这个目录即可
注意,编译安装的无法使用yum命令和rpm命令去管理
查看文件夹
1.卸载旧的nginx版本
2.安装新的nginx版本
源码包安装管理命令
直接 yum install -y nginx
安装软件
https://developer.aliyun.com/mirror
yum源的配置官网
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
能够下载centos自带的绝大多数的软件
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
能够下载绝大多数第三方软件的仓库
需要配置两个源
使用yum工具,配置yum源
备份所有的*.repo文件即可
下载新的yum源仓库
cd /etc/yum.repos.d/
备份默认的yum源
清空原有的缓存
yum clean all
建立新的缓存
yum makecache
先跟新yum源的缓存
接下来就可以适应yum方便的管理软件了
yum install -y xxxx
yum remove -y xxxx
常见的命令如下
通过yum 安装的程序即可通过systemctl命令进行管理,启停等操作
yum自动化软件管理命令
Main Topic
ubuntu快速入门
查看安装的文件
rpm -ql nginx
日志文件
rm -rf /var/log/nginx
配置文件
rm -rf /etc/nginx
主要删除两个目录
仅仅删除了软件,一些目录数据,任然存在
rpm -e nginx
手动解决所有依赖、难用
rpm手动安装
yum就是去管理rpm包的
自动解决依赖关系
yum自带安装
软件都安装到了一个目录下,管理该目录即可,无法用yum去管理
源码编译安装
注意它们的安装路径,以及管理脚本,是否会有冲突
安装软件的注意事项
你拿来就可以进行使用
已经编译完成的二进制命令
rpm包去安装,需要解决一堆的依赖问题
源代码安装不太好用
java环境部署实践
1.下载二进制包
2.解压缩
为了方便会创建一个软链接
ln -s jdk1.8.0_221 jdk
防止加入到PATH环境变量中过长
Java比较特殊,需要配置好环境变量才可以使用
cat >>/etc/profile <<EOFexport JAVA_HOME=/opt/jdkexport PATH=$PATH:$JAVA_HOME/binEOF
配置环境变量的命令
3.配置环境变量PATH
java -version
4.开始使用
编译
[root@juejiang opt]# javac HelloWorld.java
执行,注意不要加class
[root@juejiang opt]# java HelloWorld超哥带你学linux
java要求先编译再运行
5.使用准备的代码进行使用
给机器部署java环境,选择下载java的二进制包,压缩即可使用
如果是golang,只要解压缩,加入到环境变量即可使用
解压缩即可使用的实践
1.下载了一个yum的配置文件,里面就是一个url而已!2.这个url指向了不同的镜像站,里面的一个rpm包集合地3.当你yum install安装的时候,yum自动去这个网站里,搜索mysql名字相关的rpm进行下载,安装
能够==解决软件包之间的依赖关系==,提高运维人员的工作效率。
yum源的优点
yum仓库在==本地==(系统光盘/镜像文件)
或者不能上网的情况
一般使用的都是没有网络环境
1、本地yum源
yum仓库不在本地,在==远程==服务器
还有一些特定软件的网络源
一般多为大型公司搭建的
2、网络yum源
自己配置yum仓库
3、自定义yum源
yum源的分类
yum源
里面包含的是一些常见的系统软件
centos7自带的一个软件仓库
提供了绝大多数的第三方软件,如nginx、redis、mysql
epel仓库。
一般需要配置两个仓库
yum源配置(重点)
/etc/yum.repo.d
yum的仓库文件,都被统一都放在了一个固定的目录
是在这个目录中,名字是*.repo结尾的文件,就会就yum识别为仓库文件
并且只能是在第一层目录,否则都无法识别为yum仓库
yum源的存放
yum clean all
rm -rf /var/cache/yum
首次下载之后,会保存在一个目录下
配置了新的yum源之后,需要删除之前的缓存,不然依赖或软件会存在版本问题,导致安装出错
生成缓存后,下次安装软件的速度更快
清除之前的yum缓存之后,可以生成新的yum缓存
yum提供了缓存
修改了yum需要注意的地方
VMware连接上光盘镜像即可
一般为 /dev/cdrom
在系统中找到对应的光盘文件
mkdir /mnt/my_centos
mount /dev/sr0 /mnt/my_centos/
进行挂载动作,让某一个目录和这个光盘,建立连接
vim /etc/yum.repos.d/my_cdrom.repo
创建yum的仓库文件,
得通过互联网去找,语法是 http://aliyun.com/xxxxxxxxxxxxx
如果你的rpm是去系统中找(即本地),语法是 file://路径即可
注意rpm包的的来源两个写法
[base]name=linux-yum-cdrom#我们挂载的目录在 /mnt/my_centos/baseurl=file:///mnt/my_centos/#由于我们建立的是本地的,所以使用的不属于HTTP协议了, enabled=1#表示开启仓库gpgcheck=0#表示不做校验
学习yum仓库文件语法
将之前的yum源进行备份
yum clean all #清空本地的yum缓存
rm -rf /var/cache/yum #删除之前下载的文件缓存
先清空之前的yum缓存,防止冲突
yum makecache
生成新的yum缓存(第一次使用yum时会生成很多的源数据,比较慢)
此时就可以使用yum命令去本地的光盘安装软件了
挂载本地光盘,作为镜像源
本地yum源的实现
常见错误
yum仓库目录语法
首先必须在 /etc/yum.repos.d 只能在这个目录下,且是第一级
比如 wget curl vim等
先将需要用到的命令下载了!!
先将原来的yum源进行备份,保存,改名或者放入文件夹后使其无法生效
系统本身的源
epel源(第三方软件)
快速配置阿里云yum仓库
rm -rf /var/cache/yum #清除本地下载的yum缓存
生成新的yum缓存
网络yum源的配置
mkdir /software
创建一个目录用于存放软件包
--downloadonly # 只下载,不更新安装 --downloaddir=directory #将包下载到指定的目录下
yum install --downloadonly --downloaddir=/software/ nginx
使用yum命令
下载软件以及其需要的依赖包
先准备好该软件的rpm包,准备好nginx的软件包,以及它的软件依赖rpm包
#需要先去安装 createrepo[root@juejiang software]# yum install createrepo -y
[root@juejiang software]# createrepo /software/#执行完成后,会多下一个文件如下drwxr-xr-x. 2 root root 4096 8月 30 20:59 repodata
准备到一个目录中,让其成为yum可识别的仓库即可
#在 /etc/yum.repo.d/ 目录下创建新的repo文件cat >> /etc/yum.repos.d/my_dir.repo <<EOF[base]name=0224-linux-my_dirbaseurl=file:///software/enabled=1 # 这个参数是控制,该repo启用,还是关闭的gpgcheck=0EOF
创建repo文件,指向这个目录即可,就是一个本地仓库目录你先移除其他的repo文件,让yum被识别
然后创建yum仓库的repo文件,完事
yum install -y nginx
yum install 软件
离线安装步骤
yum install --downloadonly --downloaddir=/0224_software/
这样下载的依赖是最全的
注意:yum是针对当前机器的环境,判断,安装vim,需要多少个rpm依赖包
准备一个最小化安装的系统,yum会自动判断,它需要什么基础依赖- 因为最小化,系统缺少很多依赖包
enabled=1 # 这个参数是控制,该repo启用,还是关闭的
.列出系统下可用的源[root@juejiang software]# yum repolist
修改epel.repo文件,添加如下参数keepcache=1
.此时nginx相关的rpm包都在缓存目录下了
find /var/cache/yum/ -name *.rpm
方法二:修改yum的配置文件
关于依赖的寻找问题
yum install -y yum-plugin-priorities
需要安装插件`yum-plugin-priorities
针对仓库的区域设置,添加一个参数即可priority=1
安装完插件后,只需要在yum源配置文件*.repo里指定优先级即可
#加上了优先级之后,数字越小表示优先级越高
懒人方法,将不要使用的yum仓库改名就行
修改yum仓库的优先级
yum详解
Linux软件包管理
0 条评论
回复 删除
下一页