VMware安装CentOS最小化开发环境导引

目录

一、概要

二、介绍

三、下载

四、安装

4.1 创建虚拟机

4.2 安装CentOS

五、配置网卡

六、配置本地安装源

七、安装软件

7.1 gcc/g++

7.2 C++的atomic库

7.3 java

7.4 Cmake

7.5 MariaDB客户端(兼容mysql)

八、用户配置文件.bash_profile

九、命令速查


一、概要

        本文指引你用虚拟机建立本地开发的最小环境。好程序员和普通程序员的一个很大的区别就是好程序员会建立自己的开发环境,而不是指望别人提供开发环境,更不会坦然和别人共享开发环境。

       共享开发环境的理由很多,比如涉及到很多组件、涉及到第三方系统等等,甚至仅仅因为是小型机。没必要一一破解,因为懒人借口多

       为什么要用最小化开发环境呢?有几个理由:

  1. 本地虚拟机越小运行越顺畅,占用磁盘空间也更少
  2. 重新安装是减少本地磁盘占用的最佳方法,最小化系统安装最快
  3. 大部分情况下目标系统没有图形界面,虚拟机上装图形界面完全是浪费,不装图形界面可以保持操作方式一致
  4. 便于发现依赖项,减少部署时遇到突发状况

二、介绍

        CentOS是较常用的Linux发行版,由于被红帽(我们以前称之为“红帽子”,后来他们自己给自己起名叫“红帽”,不好听)公司收购,已经失去了前景,但是由于既往用户群太大,一时半会也替换不了。

        以前CentOS是作为红帽企业版的下游,在红帽企业版正式版上搞动作,现在CentOS则作为红帽企业版的上游,给红帽企业版做试用测试。

        现在CentOS分为正规发布版和Stream版,前者是我们以前用的,稳定可靠,后者是红帽企业版的测试版,充满了最新特性。

        红帽公司有多损呢?把CentOS7作为长期支持版,支持到2024,CentOS8则更早结束支持,现在已经不提供下载了(我保存有2105版)。很快就只能使用Stream版了。

        不过话说回来,白嫖这种事,咱们也没法理直气壮是不?

三、下载

        CentOS官方站点是www.centos.org,以https访问:

        点击“Download”进入下载页面:

        然后选择CPU架构,大部分用的都是x86-64,点击后进入镜像网站列表:

        随便选一个,比如清华大学的镜像网站:

        

        这么多文件,其实就是对应两个版本:2009和2207-2,每种又分为标准版、完整版和精简版,torrent是BT种子文件,iso是光盘镜像文件。

       不同镜像网站内容都一样,网速不一样,找个速度快的下就可以了。

       建议都下过来保存着,谁也不知道哪天就不给下了。而且很多时候只能用旧版,所以旧版也别删了。

四、安装

        以下用CentOS-7-x86_64-Everything-2207-02.iso来演示安装过程,不同版本安装界面或有不同但原理差不多。

        虚拟机使用的是VMware Workstation 17 Pro。虚拟机用什么没关系,能跑起来就行了。VirtualBox和windows自带的Hyper-v也行,不过实际体验确实VMWare最好。

4.1 创建虚拟机

        从VMware的菜单或主页开始,创建新的虚拟机:

        默认就是“典型”,一般没什么必要自定义:

        通过“浏览”选择iso,看一下能不能自动识别:

        上图表示正确识别了iso文件里的系统,不过我们并不使用默认安装,因为默认安装装的东西可能太多了,所以我们选择“稍后安装操作系统”: 

        在下面选择正确的操作系统:

        输入虚拟机名字和目录,默认位置是在用户的文档目录里,一般我们不这么做,我们会自己管理存放虚拟机的目录,注意这个目录是直接存放虚拟机文件的,所以要一个虚拟机一个目录:

        磁盘容量根据需要,如果没有很多数据的话,20G足够了,最好将虚拟磁盘存储为单个文件,性能高一些,至于提示的“轻松移动”是个什么意思?指的是用4G容量的U盘分多次拷贝吧?干程序的,谁没有几个大号移动硬盘啊,所以这不是个事。

       把磁盘改为单个文件:

        基本配置就差不多了,可以在下面的界面上点“自定义硬件”修改硬件配置:

        内存、处理器一般都要修改,改成满意的值,网络适配器也可以修改,不过本次先用默认的NAT。CD/DVD可以现在挂载,也可以等下再处理。这个界面就是虚拟机配置的一部分,随时可以从菜单或虚拟机页面打开。

        关闭自定义硬件,完成虚拟机设置,然后得到下面的界面:

        点击上面界面的CD/DVD,打开光驱设置:

        选中“启动时连接”,使用ISO文件,浏览选中iso文件,点确定关闭,然后“开启此虚拟机”,第一次开启可能得到如下提示:

        这是因为我的电脑上开启了Hyper-V的原因。点工具栏按钮关闭虚拟机,然后再点“编辑虚拟机设置”,选择“选项”-“高级”-“为启用了Hyper-V的主机禁用测通道缓解”:

        确定后再运行虚拟机就不会有这个提示了。

4.2 安装CentOS

        运行虚拟机,鼠标点进去,用方向键选择第一项“Install CentOS7”,想在虚拟机里面操作,可能需要先用鼠标点一下,想出来,则可能需要按下左边的ctrl+alt:

        选中第一项按下回车:

        敲一下回车,似乎不敲也能自动往下走,直到:

        找到自己想在安装过程中使用的语言,可以用鼠标滚动,注意如果改变了选项这个界面会立即变成那种语言:

        点击“继续”:

        

        稍等片刻安装源和软件选择的感叹号会消失,用鼠标往下滚动可以看到只有安装位置还有感叹号,点击进去,其实也不需要修改什么,直接点击“完成”接受自动分区即可。

       安装位置设置(什么都不用改):

        点击“完成”后返回,然后可以看到“开始安装”按钮可用了:

        然后可以点击“开始安装”,安装过程中可以设置root密码和创建用户:

        密码不够强会要求按两次“完成”:

        配置完用户等待安装完成:

        配置是自动的,很快完成,到这一步就彻底完成了:

        重启后看到登录界面时基本安装就算大功告成:

        不过这个系统只能在控制台登录,因为网卡还没有配置,无法使用telnet/SSH和FTP。

五、配置网卡

        登录root用户。

        查看IP地址:ip addr:

       由于默认网卡是未启动的,所以只能看到每个网卡,记住网卡名字后面用。

       输入cd /etc/sysconfig/network-scripts/

       查看目录下的文件,找到ifcfg-XX,后缀就是网卡名字:

        用vi编辑(命令为“vi 文件名” ),修改ONBOOT为yes:

       保存,重启系统

       Vi操作:按i进入编辑模式,按esc退出编辑模式,输入:wq回车保存并退出

       然后输入命令shutdown -r now,意思是立即重启:

        重启后再次登录查看IP:

        箭头所指处就是IP了,用PuTTY或者别的SSH工具登录:

       再试试WinSCP或者别的FTP工具,登录成功。

       这就算大功告成了,剩下的就是安装自己需要的个别软件和开发使用了。

       动态IP一般不变,如果变了就再查看一下就可以了。

       其实打开网卡这一步在安装时就可以选择了,或者直接选择特定虚拟网卡,预先配置静态IP地址。但是万一操作失误或者出了别的问题,还是要知道如何手动解决的。

六、配置本地安装源

        首先要在虚拟机设置里连接光盘。虽然我们设置了“启动时连接”,但是似乎安装好以后就给推出了,所以可以关掉虚拟机再重新打开,或者在菜单“虚拟机”-“设置”的CD/DVD勾选“已连接”:

        然后挂载光驱,输入命令mount /dev/cdrom /mnt(因为我们已经用客户端连接上,所以后续都用客户端来操作):

       然后就可以访问“/mnt”下的文件了。

       用FTP工具编辑文件/etc/yum.repos.d/CentOS-Media.repo:

        要修改的就是baseurl,选中的部分替换成“mnt”就可以了:

       保存以后就可以用了,仅使用本地安装源用这个命令格式:

yum --disablerepo=\*  --enablerepo=c7-media ……

七、安装软件

       安装好基本系统就可以上传代码进行开发了,然后当然会遇到各种命令不存在、头文件找不到、库文件找不到,这就说明我们缺东西,需要安装和配置。有些人可能觉得完全安装多省力啊,不就是多一点磁盘空间嘛——这种人我们不要理。

7.1 gcc/g++

       默认安装连gcc都没有,用如下命令列出相关软件包:

yum --disablerepo=\*  --enablerepo=c7-media list gcc*

       无脑装可以用这个命令:

yum --disablerepo=\*  --enablerepo=c7-media install gcc*

       会多装很多,也可以精确地一个一个安装。

       Yum会检查依赖关系,最后提示确认安装:

        输入y继续安装:

        又问,继续y,然后就开始安装了,可能需要一些时间,耐心等到最后:

        验证一下:

7.2 C++的atomic库

       列出可安装的清单:

yum --disablerepo=\*  --enablerepo=c7-media list *atomic*

       安装libatomic开头的全部:

yum --disablerepo=\*  --enablerepo=c7-media install libatomic*

7.3 java

       列出可用安装包:

yum --disablerepo=\*  --enablerepo=c7-media list java*

       选一个合适的版本,比如1.8:

yum --disablerepo=\*  --enablerepo=c7-media install java-1.8*

       依赖项非常多,时间会稍微久一点,不过安装源在本地,不用担心:

       注意你的程序可能依赖环境变量JAVA_HOME需要自己去设置具体位置可以搜索相关头文件,如果安装了多个版本,要仔细区分不同的安装。

7.4 Cmake

       列出安装包:

yum --disablerepo=\*  --enablerepo=c7-media list *cmake*

        安装:

yum --disablerepo=\*  --enablerepo=c7-media install cmake.x86_64

7.5 MariaDB客户端(兼容mysql)

       列出软件包:

yum --disablerepo=\*  --enablerepo=c7-media list *maria*

       安装mariadb-devel.x86_64:

yum --disablerepo=\*  --enablerepo=c7-media install  mariadb-devel.x86_64

    安装完就有mysql.h了。但是并不支持MariaDB Connector/C 3.0新增的函数mariadb_get_infov

        所以为了支持这个要去官网下载,用https访问mariadb.com/downloads/connectors/,可以看出来,CentOS只提供CentOS7(x86_64)版本的下载,不提供CentOS8的下载:

       点击下载会进入注册页面,不过不用担心,不是强迫注册,文件已经在下载中,下载到的文件叫做mariadb-connector-c-3.3.7-centos74-amd64.tar.gz。

       上传之后解压缩(tar -zxvf 文件名),得到一个目录。进入目录后手动复制文件:

cp -r include/* /usr/local/include/

cp -r lib/* /usr/local/lib/

       这两个应该就够了,还有man目录不知道放哪里去,也没用过。

       注意头文件和库文件分别在系统目录的子目录mariadb下,引用头文件和链接库文件都要增加配置(共三处,.bash_profile的LD_LIBRARY_PATH,makefile的-I和-L)。

八、用户配置文件.bash_profile

       默认情况下执行命令不会从当前目录搜索,所以要设置一下,在配置文件里增加:

export PATH=.:$PATH

        默认也没有开启coredump文件在配置文件里增加

ulimit -c unlimited顺便说一下CentOS8.2的coredump输出文件不在当前目录下需要额外设置

        除此而外一般还要设置动态库目录:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64/:/usr/local/lib/(这是程序执行时寻找动态链接库的位置,具体位置要看实际情况,编译程序则要在编译配置里面设置,可以和这个配置不同)

        这三句是这个样子的:

     有些写法是先写PATA=…,然后再写export PATH,分成两行,其实没必要,直接“export PATH=…”就可以了。

       修改完.bash_profile需要退出重新登录,或者用“.”命令立即执行:

. ~/.bash_profile

       其中“~”在shell里代表用户的主目录。

九、命令速查

挂载光驱:mount /dev/cdrom /mnt

切换到root:su

从root退回:exit

查找文件:find / -name 文件名(可带*号)

重新执行用户配置文件:. ~/.bash_profile

列出安装包:yum --disablerepo=\*  --enablerepo=c7-media list 包名(可带*号)

安装软件包:yum --disablerepo=\*  --enablerepo=c7-media install 包名(可带*号)

卸载软件包:yum erase 软件包

解压缩:tar -zxvf 文件名.tar.gz(输出到当前目录)

(这里是结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/181927.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能

一、开源项目简介 企业级在线办公系统 本项目使用了SpringBootMybatisSpringMVC框架,技术功能点应用了WebSocket、Redis、Activiti7工作流引擎, 基于TRTC腾讯实时音视频完成在线视频会议功能。 二、开源协议 使用GPL-3.0开源协议 三、界面展示 部分…

什么是单片机?它是如何工作的?

一.单片机是什么? 家用电器包含各种各样的集成电路板。 在集成电路板上最重要的就是单片机(单片微型计算机)。它是一种集成电路芯片。 二.单片机的组成 2.1 CPU CPU的主要功能是运算和控制。2.2 ROM 1.是什么? ROM的全称是Re…

Redis03-过期策略和淘汰策略

目录 Redis数据过期策略 Redis数据淘汰策略 Redis数据过期策略 Redis使用一种基于过期策略来处理键的过期和自动失效。这种策略可以确保不再需要的数据被自动删除,以释放内存并避免数据过期后仍然在缓存中存留。 Redis的过期删除策略主要有两种: 惰性…

【SpringSecuirty6.x】自动登录和注销登录

关于网站的安全设计,通常是有一些矛盾点的。我们在作为某些系统开发者的同时,也在充当着另外一些系统的用户,一些感同身受的东西可以带来很多思考。 5.1、为什么需要自动登录 当我们在某个网站上注册账号时,网站会对我们设置的登录密码提出要求。例如,有的网站要求使用固…

VS编译器中创建新源文件,自动添加----#define _CRT_SECURE_NO_WARNINGS 1

每次创建新的源文件时都需要添加比较麻烦,我们让每次创建时自动添加,步骤如下: 1、右键编译器--->属性--->目标(存放的是编译器的文件位置我们找到文件的位置) 2、如下步骤找到“newc file.cpp”文件&#xff0…

如何使用Ruby 多线程爬取数据

现在比较主流的爬虫应该是用python,之前也写了很多关于python的文章。今天在这里我们主要说说ruby。我觉得ruby也是ok的,我试试看写了一个爬虫的小程序,并作出相应的解析。 Ruby中实现网页抓取,一般用的是mechanize,使…

Linux安装配置awscli命令行接口工具及其从aws上传下载数据

官网技术文档有全面介绍:安装或更新 AWS CLI 的最新版本 - AWS Command Line Interface在系统上安装 AWS CLI。https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html#getting-started-install-instructionsawscli常用命令参考&…

深度学习之基于Tensorflow卷积神经网络花卉识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法,它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…

ClickHouse 学习之基础入门(一)

第 1 章 ClickHouse 入 门 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C 语言编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。 …

Linux环境基础开发工具使用(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Linux项目自动化构建工具-make/Makefile1、背景2、实例代码3、依赖关系4、依赖方法5、原理…

【Head First 设计模式】-- 策略模式

一、背景 Head First 设计模式第一章设计模式入门–策略模式 二、工具箱的工具(本章) 1、OO基础 封装 继承 多态 抽象 2、OO原则 封装变化 面向接口编程,而非面向实现编程 组合优于继承 3、OO模式 策略模式,所谓策略模式就是定义…

spring-boot中实现分片上传文件

一、上传文件基本实现 1、前端效果图展示&#xff0c;这里使用element-ui plus来展示样式效果 2、基础代码如下 <template><div><el-uploadref"uploadRef"class"upload-demo":limit"1":on-change"handleExceed":auto-…

【算法】单调栈 每日温度 接雨水

文章目录 例题739. 每日温度42. 接雨水 相关练习1475. 商品折扣后的最终价格901. 股票价格跨度1019. 链表中的下一个更大节点84. 柱状图中最大的矩形 单调栈【基础算法精讲 26】 例题 739. 每日温度 https://leetcode.cn/problems/daily-temperatures/description/ 提示&a…

Git 的基本操作 ——命令行

Git 的工作流程 详解如下&#xff1a; 本地仓库&#xff1a;是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库) 远程仓库&#xff1a;是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器…

php去除字符串两边空格空字符串换行方法

在PHP中&#xff0c;可以使用以下几种方法去除字符串两边的空格、空字符串和换行符&#xff1a; 使用trim()函数去除字符串两边的空格和空字符串&#xff0c;例如&#xff1a; $str " Hello World! "; $trimmed trim($str); echo $trimmed; 使用preg_replace(…

Angular-07:组件生命周期

三个阶段&#xff1a; ① 挂载阶段1.1 constructor1.2 ngOnInit ② 更新阶段2.1 ngOnChanges2.2 ngAfterViewInit2.3 ngAfterContentInit2.4 ngDoCheck ③ 卸载阶段3.1 onOnDestroy ④ 在组件中添加所有方法并打印 该表按照执行顺序编写 编号函数名实现名说明1constructorcons…

Java 开发常用的 Linux 命令

基本操作 Linux关机,重启 # 关机 shutdown -h now# 重启 shutdown -r now查看系统,CPU信息 # 查看系统内核信息 uname -a# 查看系统内核版本 cat /proc/version# 查看当前用户环境变量 envcat /proc/cpuinfo# 查看有几个逻辑cpu, 包括cpu型号 cat /proc/cpuinfo | grep name …

【Spring Boot 源码学习】JedisConnectionConfiguration 详解

Spring Boot 源码学习系列 JedisConnectionConfiguration 详解 引言往期内容主要内容1. RedisConnectionFactory1.1 单机连接1.2 集群连接1.3 哨兵连接 2. JedisConnectionConfiguration2.1 RedisConnectionConfiguration2.2 导入自动配置2.3 相关注解介绍2.4 redisConnectionF…

FreeRTOS笔记【一】 任务的创建(动态方法和静态方法)

一、任务创建和删除API函数 函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreateStatic()使用静态的方法创建一个任务xTaskCreateRestricted()创建一个使用MPU进行限制的任务&#xff0c;相关内存使用动态内存分配vTaskDelete()删除一个任务 二、动态创建任务 2.1 …

C语言——选择排序

完整代码&#xff1a; //选择排序 // 选择排序是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;大&am…