一、背景
项目环境离线,为部署UE开发工具需要升级GCC。本文将通过在银河麒麟桌面版操作系统上进行GCC升级的任务来演示如何在基于debian的操作系统(Ubuntu、麒麟desktop)上使用apt离线安装软件
环境介绍

二、操作流程
1、准备离线包
两种方式:找一台能联网的ubuntu或者麒麟同镜像系统就行
如果没有联网的Linux机器,可以买一个云服务器或者装个vmware 虚拟机
这里演示在华为云上买一个ubuntu云服务器
以华为云为例,登录华为云:https://www.huaweicloud.com/intl/zh-cn/
点击控制台找到ECS即可
如果访问过了可在最近中找到
按需计费
如果只是临时调试使用,1G 1核心就行
选一个基础镜像,我这里就选ubuntu
因为是临时用,所以我这里选择了全开放端口
买个公网IP
配个密码,需要符合密码规则
同意然后购买,买完去控制台,过一会儿就自动配置好了,用moba或者windterm连公网IP就行
登陆后,先添加 Ubuntu Toolchain 的测试源以获取最新的 GCC 版本
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
mkdir /home/gcc-11
apt-get install --download-only gcc-11 g++-11
cd /var/cache/apt/archives
cp -ra *.deb /home/gcc-11/
cd /home/gcc-11
dpkg-scanpackages . /dev/null > Packages
至此,软件包制作完成
2、 搭建apt离线仓库以及下载gcc-11 g++-11
连上离线的目标机器
gcc -v
g++ -v
可以发现当前GCC版本为9.3
将离线包传到/opt下然后解压,把包的名称改成software
然后只需下面的命令,意在移除不能用的源,然后写源文件指定本地源的路径
mv /etc/apt/sources.list /etc/apt/sources.list_bak
echo "deb [trusted=yes] file:///opt/software/gcc-11/ ./" > /etc/apt/sources.list.d/local-repo.list
cat /etc/apt/sources.list.d/local-repo.list
这里的图片仅供参考,图中我把gcc-11的路径放到了/home/zcl下,大家根据自己实际的路径进行填写,如我上文建议的/opt下
更新
apt-get update
安装
apt-get install gcc-11 g++-11
安装完成
升级版本的操作就是将gcc系统使用的优先级调整,把gcc-9 和g++-9设置为20,把gcc-11 和g++-11设置为比20更高的值即可
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 50

gcc -v
g++ -v

再看的时候就会发现gcc和g++的版本已经是11了,升级完成
其他说明:如果您的银河麒麟是Server版本的,包管理工具是yum,请参考yum 离线下载软件包的方法
三、总结
本文通过在银河麒麟桌面版上升级gcc来演示如何使用apt 进行离线包的创建到源的编写,简单说就是离线仓库的建立,便于在离线的环境上进行各种部署,后续建议补充脚本来完成一键安装。祝读者顺利完成部署,有什么优化的地方欢迎指出,互相学习

&spm=1001.2101.3001.5002&articleId=160339331&d=1&t=3&u=a875207386684e388927383112483899)
4610

被折叠的 条评论
为什么被折叠?



