如何自动获取并安装最新版本的libssl.so.1.1(替代低效的手动更新方式)
如何自动获取并安装最新版本的libssl.so.1.1(替代低效的手动更新方式)
我完全懂这种手动更新的痛苦!维护一堆Dockerfile时,每次都要找最新的libssl1.1版本号,旧包还动不动从镜像站下架,重复改版本号的操作真的让人崩溃。这里给你分享几个实用的Shell脚本方案,帮你自动抓取并安装最新版本的包:
方案1:本地自动更新脚本
写一个简单的Shell脚本,自动从Ubuntu安全源抓取最新的amd64版本包并安装:
#!/bin/bash # 定义libssl1.1的源地址 SOURCE_BASE="http://security.ubuntu.com/ubuntu/pool/main/o/openssl/" # 抓取页面内容,过滤出amd64架构的deb包,按版本号排序后取最新的一个 LATEST_DEB_FILE=$(curl -s "$SOURCE_BASE" | grep -o 'href="libssl1.1_[0-9.]*-[0-9]*ubuntu[0-9.]*_amd64.deb"' | cut -d'"' -f2 | sort -V | tail -n1) # 下载最新包 echo "正在下载最新版本:$LATEST_DEB_FILE" wget "$SOURCE_BASE$LATEST_DEB_FILE" # 安装包(需要sudo权限) sudo dpkg -i "$LATEST_DEB_FILE" # 可选:清理下载的deb包 rm "$LATEST_DEB_FILE"
脚本说明:
curl -s静默获取源页面内容grep -o提取符合命名规则的amd64 deb包链接sort -V按照版本号的语义排序(比如2.18会排在2.17后面)tail -n1取排序后的最后一个,也就是最新版本
方案2:集成到Dockerfile中
如果是要在Dockerfile里自动处理,直接把逻辑集成进去就行,避免每次手动修改版本号:
# 安装依赖工具,抓取并安装最新libssl1.1,最后清理冗余工具 RUN apt-get update && apt-get install -y --no-install-recommends curl wget dpkg \ && SOURCE_BASE="http://security.ubuntu.com/ubuntu/pool/main/o/openssl/" \ && LATEST_DEB=$(curl -s "$SOURCE_BASE" | grep -o 'href="libssl1.1_[0-9.]*-[0-9]*ubuntu[0-9.]*_amd64.deb"' | cut -d'"' -f2 | sort -V | tail -n1) \ && wget "$SOURCE_BASE$LATEST_DEB" \ && dpkg -i "$LATEST_DEB" \ && rm "$LATEST_DEB" \ && apt-get purge -y curl wget dpkg \ && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/*
适配其他架构:如果你的容器是arm64架构,只需要把脚本里的amd64替换成arm64即可。
这样以后不管版本怎么更新,脚本都会自动抓取最新的可用包,再也不用手动找版本号啦!
备注:内容来源于stack exchange,提问作者Avraam
相关产品推荐
相关产品推荐

