避坑指南:麒麟系统ARM架构下PostGIS离线安装常见问题解析

国产麒麟ARM64离线安装POSTGIS 阅读详情

麒麟系统ARM架构下PostGIS离线部署:从镜像兼容到权限配置的深度避坑实践

最近在几个国产化项目中,我频繁遇到一个场景:客户的生产环境是麒麟系统ARM64架构,服务器完全离线,但业务又必须依赖PostGIS的空间数据处理能力。这种组合听起来就让人头疼——麒麟系统的软件生态本就特殊,ARM架构的包管理又和x86差异巨大,再加上离线环境,简直是“地狱级”的部署挑战。我见过不少团队在这里卡壳数天,甚至被迫调整技术方案。

经过多次实战,我摸索出了一套相对稳定可靠的离线部署路径。这篇文章不会给你一个“万能脚本”,因为离线环境千差万别,但我希望分享那些最容易踩坑的关键节点和背后的原理。无论你是选择Docker容器化部署,还是坚持源码编译安装,理解这些共性问题,都能让你在遇到报错时不再茫然,快速定位到症结所在。

1. 部署路径选择:Docker容器化 vs 源码编译

面对麒麟ARM64离线环境,首先需要做一个战略决策:走Docker容器化路线,还是源码编译路线?这两种方式背后的逻辑、所需的准备和面临的坑截然不同。

Docker容器化的核心思路是“环境隔离与移植”。我们在一台联网的、架构匹配的机器上,拉取或构建好包含PostgreSQL和PostGIS的Docker镜像,然后将整个镜像打包(docker save),传输到离线服务器上加载运行。这种方式最大的优势在于屏蔽了底层系统的复杂性。只要宿主机内核支持容器,镜像内的依赖、库文件都是自包含的,理论上与麒麟系统本身的软件源关系不大。

注意:这里有一个关键认知——Docker镜像的架构必须与宿主机一致。你无法在ARM64的麒麟服务器上运行一个x86_64的PostGIS镜像。许多“镜像找不到”或“无法启动”的问题,根源就在这里。

而源码编译则是更“原生”的方式。你需要准备PostgreSQL和PostGIS以及它们所有依赖库(如GEOS、PROJ、GDAL等)的源代码包,在离线服务器上逐个编译安装。这种方式的好处是与系统集成度高,性能理论上更优,且不依赖Docker服务。但代价是过程极其繁琐,对依赖管理的要求极高,任何一个库的编译失败都会导致整个流程中断。

为了帮你更直观地对比,我整理了一个决策表格:

考量维度 Docker容器化部署 源码编译安装
部署复杂度 较低。主要工作在镜像准备和传输。 极高。需处理数十个依赖包的编译和兼容性问题。
对麒麟系统的依赖 低。仅需基础Docker环境。 极高。依赖系统编译器(gcc)、基础库(如readline-devel)等,这些在离线环境下可能缺失。
架构兼容性风险 风险集中。确保镜像为aarch64/arm64即可。 风险分散。每个依赖包都需确保能在ARM64架构下成功编译。
后期维护 方便。升级或回滚等同于更换镜像。 困难。升级需重新编译整个链条。
性能 略有损耗(约3-5%),但绝大
麒麟ARM64服务器离线部署PostGIS全攻略:从Docker镜像导出到容器启动 本文详细介绍了在国产麒麟ARM64服务器上离线部署PostGIS数据库的完整方案。通过利用Docker镜像导出与导入技术,有效解决了内网或隔离环境中复杂GIS系统的部署难题。文章从环境准备、兼容镜像获取、离线迁移到容器启动与验证,提供了一套经过实战检验的ARM64架构离线安装全攻略,大幅提升部署效率与一致性。 阅读详情

相关推荐

麒麟ARM64环境下Docker镜像离线迁移部署PostGIS全攻略

本文详细介绍了在国产银河麒麟V10 ARM64架构服务器上,通过Docker镜像离线迁移的方式部署PostGIS数据库的完整攻略。针对内网隔离环境,文章提供了从镜像获取、验证、打包到内网导入、启动及验证的全流程操作指南,并分享了数据持久化、性能调优等进阶配置与常见避坑经验,为国产化环境下地理信息系统的离线部署提供了高效、可靠的解决方案。

i0j1k2l3m的博客 660

在国产麒麟V10SP2服务器上,我踩了PostgreSQL 12 + PostGIS 3.1.4离线安装的所有坑,这是保姆级避坑指南

本文详细介绍了在国产银河麒麟V10SP2服务器上离线安装PostgreSQL 12与PostGIS 3.1.4的全流程实战经验。从依赖管理、源码编译优化到性能调优,提供了保姆级的避坑指南,特别针对国产化环境中的常见问题给出了解决方案,帮助技术团队顺利完成地理信息系统(GIS)服务的迁移与部署。

dingqiongliang0363的博客 399

不用联网也能装!银河麒麟V10+PostGIS3的Docker离线部署保姆教程

本文详细介绍了在银河麒麟V10(ARM64架构)环境下,通过Docker-Compose实现PostGIS3的离线部署全流程。涵盖环境准备、Docker离线安装、PostGIS镜像迁移及性能优化等关键步骤,特别针对国产化环境中的时区配置、权限管理和架构兼容性问题提供解决方案,助力政企单位在内网隔离环境中高效搭建GIS服务。

v6b7n8m9q0的博客 1053

麒麟系统离线部署PostgreSQL?手把手教你用dnf和repotrack搞定所有依赖包

本文详细介绍了在麒麟系统上离线部署PostgreSQL的完整方案,包括使用dnf和repotrack工具解决依赖包问题。通过对比最小化下载与全量下载策略,提供实战步骤帮助用户在隔离网络环境中高效构建本地仓库,确保PostgreSQL部署的顺畅与安全。

weixin_33724570的博客 754

国产化GIS平台部署实战:银河麒麟V10SP2离线环境搭建PostgreSQL 12与PostGIS 3.1.4完整流程

本文详细介绍了在银河麒麟V10SP2国产服务器操作系统上离线部署PostgreSQL 12与PostGIS 3.1.4的完整流程,打造自主可控的GIS平台基础环境。内容涵盖技术选型逻辑、离线资源获取策略、源码编译优化技巧、空间数据库扩展管理以及生产环境调优方案,特别适用于涉密网络环境下的地理信息系统建设。

dingqiongliang0363的博客 422

银河麒麟(arm64)环境下通过docker安装postgis3,并实现数据整体迁移

银河麒麟环境下通过docker安装postgis3,并实现数据整体迁移具体的步骤参考https://blog.csdn.net/qq_34817440/article/details/103914574注意设置为开机自启动,端口号docker pswindows11上安装docker,详见https://blog.csdn.net/btaworld/article/details/138505501EOF。

一醉千秋的专栏 1142

银河麒麟系统V10(arm版)postgresql数据库建库和导入数据使用说明

前文说明如何在银河麒麟系统V10(arm版)上安装docker镜像,本文跟大家分享下如何进行数据导入。启动docker:systemctl start docker。注意:不加具体的数据库名称,默认进入postgres。(3)启动postgresql的镜像。(9) 切换到postgres库中。(2)查看docker容器列表。(5)切换postgres用户。(1)启动docker服务。(4)进入docker镜像。(11)查询数据库所有表。docker启动该镜像。(10)查看所有数据库。(6)登录PG数据库。

爱T小毛驴的专栏 1020

postgis-3.1.2.tar.gz

postgis-3.1.2.tar.gz,postgres的gis离线包

arm架构下的postgresql库文件

arm架构下的postgresql库文件,postgresql版本postgresql-11.1.tar.bz2。本类库我为编译poco,poco可编译。

R语言的下载、安装及环境配置(Rstudio&VSCode)

R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。提供的图形界面,可以在其中访问控制台、创建脚本或安装其他软件包。

zegeai的博客 2万+

基于OFDM的实时图像传输系统MATLAB仿真:MPSK与MQAM调制性能对比与误码率分析

本文详细介绍了基于OFDM的实时图像传输系统在MATLAB中的仿真实现,重点对比了MPSK与MQAM调制方式的性能差异与误码率分析。通过搭建OFDM系统模型,探讨了QPSK和16QAM在不同信道条件下的表现,包括频谱效率、抗噪能力和误码率等关键指标。文章还提供了MATLAB代码示例和实用技巧,帮助读者快速掌握OFDM图像传输系统的核心算法与优化方法。

weixin_29064009的博客 352

Mathtype公式下标深度调整技巧:解决固定行距下的显示不全问题

本文针对在Word等文档中设置固定行距时,Mathtype公式下标显示不全的问题,提供了专业解决方案。核心在于调整Mathtype软件内部的“下标深度”参数,通过修改单个公式或批量格式化全文,使公式完美适配固定行距,确保下标清晰完整,且不影响文档整体排版。

pepsi的博客 1485

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5378

组合导航-IMU-GPS-RTK基本介绍

在实际应用中,需要利用 GPS、北斗等方式产生的信号进行初始化,结合惯导信号和卫星导航信号进行进行卡尔曼滤波处理,得出其最佳推算的定位信息。惯导比起卫星定位具有自身的技术优势,测量方法不依赖外界,短期精度高,能稳 定高频地输出信号。工作原理是通过感知物体在空间的角速度、线速度,进而获取物体的姿态、位置和速度等信息,实现对运动物体姿态和运动轨迹的测量,可以实现全天候全地点地工作。但惯导也有自身的缺陷,由于采用积分算法,定位误差随 载体运行不断累积。

NCU_wander的博客 7994

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 797

61、增益调度控制器:原理、建模与调优

本文详细介绍了增益调度控制器的原理、建模方法和调优流程。增益调度是一种针对非线性系统的控制策略,通过在不同工作点使用不同的线性控制器实现全局控制。文章涵盖了在Simulink中使用Control System Toolbox模块建模的具体步骤,以及如何利用systune进行增益调度表的调优。同时,还讨论了实际应用中的注意事项、典型案例(如化学反应器和飞机控制),并与其它控制方法进行了对比。最后,文章展望了增益调度控制器的未来发展趋势,包括与人工智能的结合、多目标优化调优以及实时调优能力的提升。

rgv234567的博客 181

37、免驱动USB双目同步测距3D活体深度检测和RV1126结合V4L开发USB摄像头使用

基本思想:需要使用双目摄像头在rv1126上进行活体检测,然后将画面实时返回到桌面上,记录一下。第二步:刷机rv1126开发板系统和ssh远程连接,见参考目录。第一步:购买可见光的红外摄像头,见参考连接,在PC端测试可用。

sxj731533730 2612

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 从零开始:使用NNoM在MCU上部署你的第一个神经网络模型
下一篇: 【实战指南】解决Google Play上架报错:从Debug到Release的完整转换流程
Python
博客等级 码龄26年 1972粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值