离线安装vim详细步骤_Justin_zz的博客-程序员宅基地_离线安装vim

技术标签: 运维  linux  服务器  vim  

背景

一台 Centos7.5 的服务器需要进行一些在线编辑操作,自带的 vi 功能太薄弱,因为希望安装一个 vim,然而该服务器是不能访问外网,因此在网上找了一些教程尝试安装。

思路

1. 找 vim 二进制包。

任何安装最先考虑的就是看看 vim 是否有对应的 linux 二进制包文件,如果有就直接下载下来,然后传到服务器上 /usr/local/bin 目录下即可,然而经过多次搜索并没有找到。

2. 直接编译 vim

首先在选择这种方案时,一定要确保服务器上已经安装好了 gcc 等编译工具,如果没有,则可以直接跳过了,因为会非常费时。

3. 找对应的 rpm 包

使用 rpm 包最头疼的问题就是依赖问题,如果下载一个 vim 对应 rpm 包就装成功了,那么就不用参考这篇文章了,这里因为服务器是最小化安装,因此很多包都没有安装,于是这种貌似是行不通的。

然而网上有大佬利用 Docker 来构建与服务器类似的环境,然后把所有的依赖包都找出来并下载,这样把这些依赖全部上传到服务器上,即可安装成功,下面则是操作步骤:

  • 获取离线服务器的系统信息
    cat /etc/centos-release
    # CentOS Linux release 7.5.1804 (Core)
    
  • 使用 Docker 在本地构建离线服务器环境
    # 这里需要进入 dockerhub 里面找到 centos 官方源,查看下是否有离线服务器相同的镜像版本,
    # 如果找到了,则可以运行下面的命令
    #下面命令会自动下载 centos 镜像,然后创建容器
    docker run -d --rm --name centos-demo centos:centos7.5.1804 tail -f /dev/null
    
  • 在 Docker 容器中下载 vim 所有依赖
    # 使用容器里面的环境下载 vim 相关依赖
    docker exec -it centos-demo yum install --downloaddir=/tmp/vim-lib --downloadonly vim
    # 将依赖从容器中拷贝到宿主机
    docker cp centos-demo:/tmp/vim-lib .
    
  • 将 vim 依赖上传到离线服务器,然后安装
    # 将vim-lib 文件夹上传到离线服务器上,然后进入到文件夹执行下列命令
    yum install -y vim-*
    

通过上面的操作即完成了 vim 的离线安装,因为 docker 镜像一般时最小化的,所以它会把所有的依赖都下载下来,因为一定是满足服务器的依赖要求的。

总结

之前好几次遇到这种离线部署的情况,找不到对应的二进制包,弄 rpm 的依赖简直到崩溃,今天有时间尝试了下网上大佬的方案,非常的高效,详情可以阅读参考中的第一个链接。

上面的方法可用于所有的包安装,只要能在 docker hub 上找到对应的版本镜像即可。

参考

https://www.jianshu.com/p/9d6b138e366f
https://hub.docker.com/_/centos?tab=tags

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42272411/article/details/121703568

智能推荐

Linux CGI----文件上传实例(5)_ztq小天的博客-程序员宅基地

HTML设置上传文件的表单需要设置 enctype 属性为 multipart/form-data1.在cgi-bin目录下新建权限为755的download_file.py,代码如下所示:#!/usr/bin/python# -*- coding: UTF-8 -*-# HTTP 头部print "Content-Disposition: attachment; filename=...

Spark:SQL(一)_多么哇塞的陈哇塞的博客-程序员宅基地

目录01:上篇回顾02:学习目标03:数据结构抽象:设计04:数据结构抽象:区别与联系05:数据结构抽象:Row类型06:数据结构抽象:关系转换07:数据结构抽象:反射构建08:数据结构抽象:自定义Schema09:DSL与SQL分析10:电影评分案例:数据与需求分析11:电影评分案例:SQL实现12:电影评分案例:DSL实现13:SaveMode与Shuffle分区数14:DataSet的设计15:数据源Source:设计17:数据源So

命令行计算器_不入流的IT宅男的博客-程序员宅基地_命令行计算器

  在命令行下操作时,有时需要做一些计算。这时再打开图形界面的计算器比较麻烦,而Linux下的bc只能做一些简单的计算。使用C++实现命令行下计算器。一、程序功能执行+,-,*,/,%(取两个整数相除的余数),^(乘方)运算程序可以执行的函数有sin,cos,tan,cot,sec,csc,exp,asin,acos,atan,ln,log,log2,log10,sqrt(开二次方), ...

2020-12-30_weixin_46315812的博客-程序员宅基地

java基础算法题(末考)总结三(冒泡、杨辉、回文等) 老王WHH 2020-12-26 18:53:51 ...

[经典面试题]排序数组中绝对值最小元素[email protected]的博客-程序员宅基地

【题目】题目为:有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。【分析】给定数组是已经排好序的,且是升序,没有重复元素。一

随便推点

黑马程序员-javaBean内省 泛型 类加载器 动态代理_gzbbxu的博客-程序员宅基地

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------1,由内省引出的 javaBean讲解        内省→IntroSpector(检查,视察,了解内部的细节)→对JavaBean操作→是一个特殊的java类,方法的名称符合某种约定的规则的java类。

解决方法:FAILED: ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: java._DataWorkder_QIng的博客-程序员宅基地_odps-0130071

**产生原因:**上游数据中的字段类型为decimal(38,18),下游数据类型也为decimal**解决方法:**将两表数据类型统一。上游数据的类型为decimal,下游数据类型也为decimal

Lyapunov、Sylvester和Riccati方程的Matlab求解_NoEndForLearning的博客-程序员宅基地_riccati方程求解

一、Lyapunov方程1、连续Lyapunov方程连续Lyapunov方程可以表示为 Lyapunov方程来源与微分方程稳定性理论,其中要求C为对称正定的n×n方阵,从而可以证明解X亦为n×n对称矩阵,这类方程直接求解比较困难,不过有了Matlab...

Objective-C Runtime的基本使用(iOS Runtime的初体验)_建古的博客-程序员宅基地

一、Runtime前言搞懂Runtime好像很难,需要一些底层基础,我看了好久,也才懂得一些些,这里做一个笔记,OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类的对象相应的方法。利用runtime机制让我们可以在程序运行时动态修改类,对象中的所有属性,方法,就算是私有方法以及私有属性都可以动态的修改。所以我所理解的就是 动态创建类,修改类,访问私有方法等一些基本特性,应该说理解ru

JavaScript的学习4——面向对象编程_十五春会的博客-程序员宅基地

前言JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有,因此,我们可以编写一个函数来创建xiaoming:// 原型对象:var Student = { name: 'Robot', height: 1.2, run: function () { console.log(this.name + ' is r

vxWorks 命令_weixin_34302798的博客-程序员宅基地

sp( )            缺省參数创建一个任务(priority="100" 返回值为任务ID。或错误)(taskSpawn)sps( )                创建一个任务。并挂起它tr( )                  恢复一个挂起的任务(与taskResume同样)ts( )                  挂起...

推荐文章

热门文章

相关标签