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