当前位置: 首页 > news >正文

虚拟机开发环境搭建与内网迁移

以下是关于在虚拟机中搭建开发环境并迁移至内网的详细步骤及注意事项,适用于需要在内网隔离环境中进行开发的场景(如企业安全要求、离线开发等):
‌一、虚拟机开发环境搭建‌
‌1. 选择虚拟机平台‌
‌推荐工具‌:
‌VirtualBox‌(免费开源,跨平台)
‌VMware Workstation Player‌(免费个人版,性能更优)
‌Hyper-V‌(Windows 内置,需系统支持)
‌2. 创建虚拟机‌
‌操作系统选择‌:
根据开发需求选择镜像(如 Ubuntu、CentOS、Windows)。
优先使用轻量级系统(如 Ubuntu Server 或 Alpine)以减少资源占用。
‌资源配置‌:
‌CPU‌:至少 2 核(编译需要多线程)。
‌内存‌:4GB 以上(大型项目需 8GB+)。
‌磁盘‌:动态分配磁盘空间,建议 40GB+。
‌3. 安装开发工具‌
‌基础工具链‌:
bash
Copy Code
# Ubuntu/Debian
sudo apt install build-essential git cmake

# CentOS
sudo yum groupinstall "Development Tools"
‌Qt 环境安装‌:
参考外网 Qt 安装指南,但需下载离线安装包(如 .run 或 .exe)。
示例(使用 aqtinstall 离线安装):
bash
Copy Code
# 提前在外网下载 Qt 库和工具
aqt install-qt linux desktop 6.5.0 -O qt_dir
‌4. 配置虚拟化增强功能‌
‌VirtualBox‌:安装 Guest Additions。
‌VMware‌:安装 VMware Tools。
‌作用‌:启用剪贴板共享、文件拖放、分辨率自适应。
‌二、环境优化与固化‌
‌1. 清理无用文件‌
删除临时文件、下载缓存:
bash
Copy Code
sudo apt clean          # Debian/Ubuntu
sudo yum clean all      # CentOS
‌2. 创建虚拟机快照‌
在完成基础配置后创建快照,便于后续回滚。
‌3. 生成环境清单‌
记录所有安装的软件版本和依赖:
bash
Copy Code
dpkg --list > installed_packages.txt  # Debian/Ubuntu
rpm -qa > installed_packages.txt      # CentOS
‌三、内网迁移方案‌
‌方案 1:直接导出虚拟机镜像‌
‌导出虚拟机‌:
VirtualBox:导出为 .ova 文件(File > Export Appliance)。
VMware:导出为 .ovf + .vmdk。
‌内网导入‌:
将镜像文件通过内网共享存储(如 NAS、U盘)传输。
在内网主机上导入镜像并启动虚拟机。
‌方案 2:使用配置脚本重建环境‌
‌生成配置脚本‌:
记录所有安装命令(如 apt install、git clone)。
示例脚本 setup_env.sh:
bash
Copy Code
#!/bin/bash
sudo apt update
sudo apt install -y build-essential qt6-base-dev
git clone https://internal-git-server.com/project.git
‌在内网虚拟机中执行脚本‌:
通过内网文件服务器或U盘传递脚本。
‌方案 3:容器化迁移(Docker)‌
‌在外网构建 Docker 镜像‌:
dockerfile
Copy Code
FROM ubuntu:22.04
RUN apt update && apt install -y build-essential qt6-base-dev
‌导出镜像文件‌:
bash
Copy Code
docker save -o dev_env.tar my_dev_image
‌内网加载镜像‌:
bash
Copy Code
docker load -i dev_env.tar
‌四、内网适配与验证‌
‌1. 网络配置‌
‌桥接模式‌:虚拟机使用内网独立 IP(需内网 DHCP 支持)。
‌NAT 模式‌:虚拟机通过宿主机访问内网资源。
‌2. 依赖替换‌
‌私有镜像源‌:
配置内网 apt/yum 源(如搭建本地镜像服务器)。
示例(Ubuntu):
bash
Copy Code
sudo sed -i 's/archive.ubuntu.com/internal-mirror.com/g' /etc/apt/sources.list
‌Qt 离线包‌:
将 Qt 安装文件提前导入内网文件服务器。
‌3. 功能验证‌
‌编译测试项目‌:
bash
Copy Code
cd /path/to/project
mkdir build && cd build
cmake .. && make
‌运行验证‌:
bash
Copy Code
./my_app
‌五、注意事项‌
‌许可证合规‌:
确保迁移的软件(如 Qt 商业版、VMware)在内网有合法授权。
‌安全加固‌:
关闭虚拟机不必要的端口(如 SSH 仅限内网访问)。
定期更新内网镜像中的安全补丁。
‌性能优化‌:
为虚拟机分配足够的 CPU 和内存资源。
使用 SSD 存储以加速编译。
‌文档同步‌:
维护内网 Wiki,记录环境配置和迁移流程。
‌六、常见问题解决‌
问题场景    解决方案
虚拟机启动后无网络    检查虚拟机的网络模式(NAT/桥接),确认内网防火墙是否放行。
迁移后 Qt 无法找到动态库    设置 LD_LIBRARY_PATH 或在内网虚拟机中安装相同路径的依赖。
内网镜像源缺失软件包    同步外网镜像源到内网,或手动上传 .deb/.rpm 文件。
虚拟机与宿主机文件交互不便    启用共享文件夹功能(如 VirtualBox 的 Shared Folders)。
通过以上步骤,可以高效地将虚拟机开发环境迁移至内网,同时保障环境一致性和安全性。如果是团队协作,建议使用 Docker 或配置管理工具(如 Ansible)进一步自动化流程。

相关文章:

虚拟机开发环境搭建与内网迁移

以下是关于在虚拟机中搭建开发环境并迁移至内网的详细步骤及注意事项,适用于需要在内网隔离环境中进行开发的场景(如企业安全要求、离线开发等): ‌一、虚拟机开发环境搭建‌ ‌1. 选择虚拟机平台‌ ‌推荐工具‌: ‌V…...

【HFP】蓝牙HFP协议音频连接核心技术深度解析

目录 一、音频连接建立的总体要求 1.1 发起主体与时机 1.2 前提条件 1.3 同步连接的建立 1.4 通知机制 二、不同主体发起的音频连接建立流程 2.1 连接建立触发矩阵 2.2 AG 发起的音频连接建立 2.3 HF 发起的音频连接建立 三、编解码器连接建立流程 3.1 发起条件 3.…...

PowerBI 表格显示无关联的表数据

假设有两张没有建立关联的数据表: 产品表 库存表 我们将他们放入表格里显示,数据会出问题。 因为 [库存表] 里的数据有除 [产品表] 以外的产品的数据,所以PBI无法从两张表中找到一一对应的数据。 解决方法:(不建立关联关系的情况下) 新建一个度量值&a…...

观察者模式详解与C++实现

1. 模式定义 观察者模式(Observer Pattern)是一种行为型设计模式,定义了对象间的一对多依赖关系。当一个对象(被观察者/主题)状态改变时,所有依赖它的对象(观察者)都会自动收到通知…...

用ffmpeg 实现拉取h265的flv视频转存成264的mp4 实现方案

1.需要对ffmpeg进行源码修改 这里使用 https://github.com/numberwolf/FFmpeg-QuQi-H265-FLV-RTMP 这位大神提供的源码 需要 x265_3.2.1.tar.gz last_x264.tar.bz2 fdk-aac-2.0.1.tar.gz FFmpeg-QuQi-H265-FLV-RTMP-master.zip 这些包 升级ubuntu18.04 apt update a…...

《AI赋能职场:大模型高效应用课》第8课 AI辅助职场沟通与协作

【本课目标】 掌握AI辅助邮件、沟通话术的优化技巧。学习利用AI快速生成高效的会议纪要。通过实操演练,提升职场沟通效率与协作能力。 【准备工具】 DeepSeek大模型(deepseek.com)百度文心一言(yiyan.baidu.com) 一…...

PowerBI下载安装教程

1、打开官方下载链接,或者Microsoft store里搜索下载(通过官网下载可以选择安装路径,应用商店直接会安装到默认路径里)。 2、等待下载成功后,直接点击【打开】即可。...

PowerBI如何钻取到明细

PowerBI如何钻取到明细 最近做项目领导提到一需求,在查看账龄的时候,还想查看到它的一个明细情况。 PowerBI如何钻取到明细,以一个案例分享下: 第一步:我们先查看账龄的一个分布情况: 第二步:…...

常见算法题

import java.util.*;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.right right;} }public class test_04_16 {//获取二叉…...

C语言超详细结构体知识

1.自定义类型:结构体的介绍 在之前的博客中,我们简单介绍过了关于结构体的基本知识,这里我们稍微复习一下。 结构体(struct)是C语言中一种重要的复合数据类型,它允许将不同类型的数据组合成一个整体。 1.1结构体的定义 结构体使…...

2N60-ASEMI功业控制与自动化专用2N60

编辑:ll 2N60-ASEMI功业控制与自动化专用2N60 型号:2N60 品牌:ASEMI 封装:TO-220F 批号:最新 最大漏源电流:2A 漏源击穿电压:600V RDS(ON)Max:5.00Ω…...

发现“横”字手写有难度,对比两个“横”字

我发现手写体“横”字“好看”程度&#xff0c;难以比得上印刷体&#xff1a; 两个从方正简体启体来的“横”字&#xff1a; 哪个更好看&#xff1f;我是倾向于左边一点。 <div style"transform: rotate(180deg); display: inline-block;"> 左边是我从方正简…...

深入解析 HTML5 Web IndexedDB 数据库:构建高效离线应用的基石

摘要 在现代 Web 应用开发中,离线访问和高效处理大量结构化数据的需求日益增长。HTML5 的 IndexedDB 作为一种强大的客户端 NoSQL 数据库,为开发者提供了可靠的解决方案。本文将全面介绍 IndexedDB 的特性、语法、方法、应用实例、使用场景,以及其优势与劣势,帮助开发者深…...

17-算法打卡-哈希表-快乐数-leetcode(202)-第十七天

1 题目地址 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09;202. 快乐数 - 编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为&#xff1a; * 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 * 然后重复这个过程直到这个数变为 1…...

决战浏览器渲染:减少重绘(Repaint)与重排(Reflow)的性能优化策略

在现代Web开发中&#xff0c;流畅的用户体验是衡量应用质量的关键指标之一。用户与界面的每一次交互&#xff0c;背后都牵动着浏览器复杂而精密的渲染过程。当这个过程不够高效时&#xff0c;用户就会感受到卡顿、延迟&#xff0c;甚至页面“掉帧”。在众多影响渲染性能的因素中…...

深度解析生成对抗网络:原理、应用与未来趋势

在人工智能的浩瀚星空中&#xff0c;生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GAN&#xff09;犹如一颗璀璨的明星&#xff0c;自 2014 年由 Ian Goodfellow 等人提出以来&#xff0c;便以其独特而强大的生成能力&#xff0c;在计算机视觉、自然语…...

电能质量治理解决方案:构建高效、安全的电力系统

随着“双碳”目标的推进及新型电力系统的快速发展&#xff0c;大量电力电子设备&#xff08;如光伏逆变器、充电桩、变频器等&#xff09;接入电网&#xff0c;导致谐波畸变、无功功率激增、电压波动等问题日益突出。电能质量恶化不仅威胁设备安全&#xff0c;还影响电网稳定运…...

生态篇|多总线融合与网关设计

引言 1. 车内多总线概览 2. 主流车载总线技术对比 3. 网关设计原则与架构 4. 协议转换与映射策略 5. 安全与诊断功能集成...

热门与冷门并存,25西电—电子工程学院(考研录取情况)

1、电子工程学院各个方向 2、电子工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、电子科学与技术25年相较于24年上升20分 2、信息与通信工程、控制科学与工程、新一代电子信息技术&#xff08;专硕&#xff09;25年相较于24年下降25分 3、25vs24推…...

HDFS入门】HDFS安全与权限管理解析:从认证到加密的完整指南

目录 引言 1 认证与授权机制 1.1 Kerberos认证集成 1.2 HDFS ACL细粒度控制 2 数据加密保护 2.1 传输层加密(SSL/TLS) 2.2 静态数据加密 3 审计与监控体系 3.1 操作审计流程 3.2 安全监控指标 4 权限模型详解 4.1 用户/组权限模型 4.2 umask配置原理 5 安全最佳实…...

合成数据中的对抗样本生成与应用:让AI模型更强、更稳、更安全

目录 合成数据中的对抗样本生成与应用&#xff1a;让AI模型更强、更稳、更安全 一、什么是对抗样本&#xff1f; 二、为什么要在合成数据中引入对抗样本&#xff1f; 三、对抗样本在图像合成数据中的生成方法 ✅ 方法1&#xff1a;FGSM&#xff08;Fast Gradient Sign Met…...

考研系列-计算机网络-第二章、物理层

一、通信基础 1.物理层基本概念 2.数据通信基础知识...

uni-app 安卓10以上上传原图解决方案

在Android 10及以上版本中&#xff0c;由于系统对文件访问的限制&#xff0c;使用chooseImage并勾选原图上传后&#xff0c;返回的是图片的外部存储路径&#xff0c;如&#xff1a;file:///storage/emulated/0/DCIM/Camera/。这种外部存储路径&#xff0c;无法直接转换成所需要…...

关于element的dialog的取消(关闭弹窗)方法触发两次

在这里插入图片描述 关闭的时候加个修饰符.native close.native...

vue,uniapp解决h5跨域问题

如果有这样的跨域问题&#xff0c;解决办法&#xff1a; ✅ 第一步&#xff1a;在项目根目录下创建 vue.config.js 和 package.json 同级目录。 // vue.config.js module.exports {devServer: {proxy: {/api: {target: https://app.yycjkb.cn, // 你的后端接口地址changeOrig…...

2025-04-18 李沐深度学习3 —— 线性代数

文章目录 1 线性代数1.1 标量、向量与矩阵1.2 矩阵概念1.3 按特定轴求和 2 实战&#xff1a;线性代数2.1 标量2.2 向量2.3 矩阵2.4 张量2.5 降维2.6 点积2.7 矩阵-向量积2.8 矩阵-矩阵乘法2.9 范数2.10 练习 1 线性代数 1.1 标量、向量与矩阵 标量&#xff08;Scalar&#xff…...

2026《数据结构》考研复习笔记三(C++高级教程)

C高级教程 一、文件和流二、异常处理三、命名空间四、模板五、信号处理六、多线程 一、文件和流 iostream 用于标准输入/输出&#xff08;控制台I/O&#xff09;&#xff0c;处理与终端&#xff08;键盘输入和屏幕输出&#xff09;的交互 包含以下全局流对象&#xff1a; cin&…...

python进阶: 深入了解调试利器 Pdb

Python是一种广泛使用的编程语言&#xff0c;以其简洁和可读性著称。在开发和调试过程中&#xff0c;遇到错误和问题是不可避免的。Python为此提供了一个强大的调试工具——Pdb&#xff08;Python Debugger&#xff09;。 Pdb是Python标准库中自带的调试器&#xff0c;可以帮助…...

前端资源加载失败后重试加载(CSS,JS等引用资源)

前端资源加载失败后的重试 .前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时) 解决这个问题首先要明确一下几个步骤 1.什么情况或者什么时候重试 2.如何重试 3.重试过程中的边界处理 这里引入里三个测试脚本&#xff0c;分别加载里三个不同的脚…...

每日算法【双指针算法】(Day 2-复写零)

双指针算法 1.算法题目(复写零)2.讲解算法原理3.编写代码 1.算法题目(复写零) 注意&#xff1a;不要越界&#xff0c;不能开额外的数组&#xff0c;只能从现有数组上进行操作&#xff0c;没有返回值。 2.讲解算法原理 解法&#xff1a;双指针操作 先根据“异地”操作&#xf…...

【C++深入系列】:模版详解(上)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 你不需要很厉害才能开始&#xff0c;但你需要开始才能很厉害。 ★★★ 本文前置知识&#xff1a; 类和对象&#xff08;上&#xff09; …...

PyCharm Flask 使用 Tailwind CSS v3 配置

安装 Tailwind CSS 步骤 1&#xff1a;初始化项目 在 PyCharm 终端运行&#xff1a;npm init -y安装 Tailwind CSS&#xff1a;npm install -D tailwindcss3 postcss autoprefixer初始化 Tailwind 配置文件&#xff1a;npx tailwindcss init这会生成 tailwind.config.js。 步…...

设计模式每日硬核训练 Day 15:享元模式(Flyweight Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 14&#xff1a;组合模式小结 在 Day 14 中&#xff0c;我们学习了组合模式&#xff08;Composite Pattern&#xff09;&#xff1a; 适用于构建树状层级结构&#xff0c;使得“单个对象”和“对象集合”统一操作。广泛用于文件系统、UI 控件树、组织结…...

使用Service发布应用程序

使用Service发布应用程序 文章目录 使用Service发布应用程序[toc]一、什么是Service二、通过Endpoints理解Service的工作机制1.什么是Endpoints2.创建Service以验证Endpoints 三、Service的负载均衡机制四、Service的服务发现机制五、定义Service六、Service类型七、无头Servic…...

美家市场2025电视版分享码-美家市场电视直播软件分享码免费获取

美家市场2025电视版作为一款备受欢迎的应用市场&#xff0c;为用户提供了海量的电视直播软件&#xff0c;而分享码则是免费获取这些资源的重要途径。与此同时&#xff0c;乐看家桌面也是一款在智能电视领域极具特色的软件&#xff0c;它能与美家市场搭配使用&#xff0c;为用户…...

动手学深度学习:手语视频在NiN模型中的测试

前言 NiN模型是在LeNet的基础上修改&#xff0c;提出了1x1卷积层和全局平均池化层的概念&#xff0c;减少了全连接所带来的参数量很多的问题。本篇在之前代码的基础上添加了模型保存&#xff0c;loss和acc记录以及记录模型时间等功能&#xff0c;所以模型后面的代码会重新记录…...

医院数据中心智能化数据上报与调数机制设计

针对医院数据中心的智能化数据上报与调数机制设计,需兼顾数据安全性、效率性、合规性及智能化能力。以下为系统性设计方案,分为核心模块、技术架构和关键流程三部分: 一、核心模块设计 1. 数据上报模块 子模块功能描述多源接入层对接HIS/LIS/PACS/EMR等异构系统,支持API/E…...

Ubuntu命令速查

当你在Ubuntu系统中需要快速查询常用命令时&#xff0c;可以使用以下速查表&#xff1a; 列出文件和目录&#xff1a; ls切换目录&#xff1a; cd [目录路径]显示当前工作目录的绝对路径&#xff1a; pwd创建新目录&#xff1a; mkdir [目录名]删除文件或目录&#xff1a; rm […...

一次制作参考网杂志的阅读书源的实操经验总结(附书源)

文章目录 一、背景介绍二、书源文件三、详解制作书源&#xff08;一&#xff09;打开Web服务&#xff08;二&#xff09;参考网结构解释&#xff08;三&#xff09;阅读书源 基础&#xff08;四&#xff09;阅读书源 发现&#xff08;五&#xff09;阅读书源 详细&#xff08;六…...

python抓取HTML页面数据+可视化数据分析(投资者数量趋势)

本文所展示的代码是一个完整的数据采集、处理与可视化工具&#xff0c;主要用于从指定网站下载Excel文件&#xff0c;解析其中的数据&#xff0c;并生成投资者数量的趋势图表。以下是代码的主要功能模块及其作用&#xff1a; 1.网页数据获取 使用fetch_html_page函数从目标网…...

下拉框select标签类型

在我们很多页面里有下拉框的选择&#xff0c;这种元素怎么定位呢&#xff1f;下拉框分为两种类型&#xff1a;我们分别针对这两种元素进行定位和操作 select标签 &#xff1a; 通过select类处理。 非select标签 1、针对下拉框元素&#xff0c;如果是Select标签类型&#xff0c;…...

嵌入式C语言位操作的几种常见用法

作为一名老单片机工程师&#xff0c;我承认&#xff0c;当年刚入行的时候&#xff0c;最怕的就是看那些密密麻麻的寄存器定义&#xff0c;以及那些让人眼花缭乱的位操作。 尤其是遇到那种“明明改了寄存器&#xff0c;硬件就是不听话”的情况&#xff0c;简直想把示波器砸了&am…...

数据库原理及应用mysql版陈业斌实验四

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 实验四索引与视图 1.实验数据如下 student 表&#xff08;学生表&…...

【免登录ORACLE,jdk8安装包下载】jdk-8u441-windows-i586.exe和jdk-8u441-windows-x64.exe有什么区别

jdk-8u441-windows-i586.exe和jdk-8u441-windows-x64.exe主要有以下区别&#xff1a; 我用夸克网盘分享了「jdk」&#xff0c;链接&#xff1a;https://pan.quark.cn/s/c72666843e2b 适用系统架构&#xff1a; jdk-8u441-windows-i586.exe适用于32位的Windows操作系统&#x…...

Oracle日志系统之附加日志

Oracle日志系统之附加日志 在 Oracle 数据库中&#xff0c;附加日志&#xff08;Supplemental Log&#xff09;是一种增强日志记录的机制&#xff0c;用于在数据库的 redo log 中记录更多的变更信息&#xff0c;尤其是在进行数据迁移、复制和同步等任务时&#xff0c;能够确保…...

从零到一:管理系统设计新手如何快速上手?

管理系统设计是一项复杂而富有挑战性的任务&#xff0c;它要求设计者具备多方面的知识和技能&#xff0c;包括需求分析、架构设计、数据管理、用户界面设计等。对于初次接触这一领域的新手而言&#xff0c;如何快速上手并成为一名合格的管理系统设计者呢&#xff1f;本文将从管…...

Web 前端包管理工具深度解析:npm、yarn、pnpm 全面对比与实战建议

引言: 在现代web前端开发中,包管理工具的重要性不言而喻,无论是构建项目脚手架,安装ui库,管理依赖版本,还是实现monorepo项目结构,一个高效稳定的包管理工具都会大幅提升开发体验和协作效率 作为一名前端工程师,深入了解这些工具背后的机制与差异,对于提升项目可维护性和团队…...

Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(六)

一、具有多示例抗别名示例访问权限的 UAV Direct3D 11 允许光栅化到无序访问视图&#xff0c; (UAV) 没有呈现目标视图 (RTV) /DSV 绑定。 即使 UAV 可以具有任意大小&#xff0c;实现也可以使用视区/剪刀矩形的像素尺寸来操作光栅器。 DirectX 11 硬件的示例模式仅为单个示例…...

Jenkins 多分支流水线: 如何创建用于 Jenkins 状态检查的 GitHub 应用

使用 Jenkins 多分支流水线时&#xff0c;您可以将状态检查与 GitHub 拉取请求集成。 以下是状态检查的示例 要实现这些类型的状态检查&#xff0c;您需要创建一个与 Jenkins 主实例集成的 GitHub 应用。 在本博客中&#xff0c;我们将介绍如何创建一个 GitHub 应用&#xff…...

LeeCode912. 排序数组

给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))&#xff0c;并且空间复杂度尽可能小。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5]示例 2…...