使用docker安装centos6.10镜像并安装新版gcc

环境:Linux Ubuntu 16.04.7 LTS

使用docker安装镜像

安装docker

sudo apt-get install docker.io

安装centos6.10镜像

  1. 下载镜像
docker pull centos:6.10
  1. 查看镜像ID
docker images


此处的IMAGE ID用于下一步建立容器

  1. 创建容器
    -name选项为给这个镜像命名
docker run -i -t -d --name centos6.10 48650444e419
  1. 输入docker ps 查看已启动容器
docker ps


此处的CONTAINER ID后续有用,用于本地服务器复制文件到docker

使用docker

  1. 启动已创建好的容器
docker start centos6.10
  1. 进入容器,需保证容器已启动
docker attach centos6.10
  1. 退出容器
	exit  	   #退出容器,会直接关闭容器

尽量用下面那个,否则退出了其他终端也会断开

	ctrl+p+q   #退出容器,不会直接关闭正在运行的容器
  1. 本地文件复制到docker
  • 使用scp或者mobaxterm或者其他上传到服务器
  • 使用命令从服务器传到docker里面
    例:
#登录远程服务器
cd /home/centos-share
docker cp gcc-7.5.0.tar.gz 9c404bc78b1c:/File
#注意,9c404bc78b1c是当前docker里面安装的centos的ID
#ID可以用docker ps查看

配置centos gcc环境

2020年12月2日,centos官方停止了对centos6的所有更新,并且下架了包括官方所有的centos6源,目前阿里、163、清华等centos6源已无法使用。CentOS 6已经停止更新支持,同时官方也把yum源删除了,目前CentOS 6系统使用yum命令安装软件包基本都是失败,因此需要更换yum源

具体表现就是使用 yum install xxx会报如下错误

Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Update Process
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base

修改镜像源

  1. 进入到/etc/yum.repos.d/目录
cd /etc/yum.repos.d/
  1. 保留一个原文件
cp CentOS-Base.repo CentOS-Base.repo.old
  1. 使用编辑器修改配置文件
vi CentOS-Base.repo
  1. 修改镜像文件
[base]
[updates]
[extras]

修改成

[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=https://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  1. 清空镜像缓存并且更新yum
yum clean all
yum update

安装基本的gcc

yum -y install gcc gcc-c++ kernel-devel
yum install -y bzip2 #下一步需要,用于自动解压安装gcc依赖

该gcc版本为4.8,一般不能满足日常开发需要,不支持C++11语法,所以需要升级gcc,也是本教程的目的

安装新版本的gcc

此处为安装gcc版本7.5.0的gcc

  1. 下载 gcc-7.5.0
    提取码:CliY
  2. 将gcc-7.5.0.tar.gz放置于/home/目录下,解压
tar -xzvf gcc-7.5.0.tar.gz
mkdir gcc-build-7.5.0 #创建目录,后续使用
cd /home/gcc-7.5.0 #进入解压目录
./contrib/download_prerequisites #执行以下命令下载安装依赖,会有三个ok
  1. 进入/usr/lib/gcc/x86_64-redhat-linux/目录下,使用以下命令新建安装文件夹
mkdir 7.5.0
  1. 进入/home/gcc-build-7.5.0/目录下,使用以下命令建立编译后的文件存放目录以及配置编译语言等
../gcc-7.5.0/configure --prefix=/usr/lib/gcc/x86_64-redhat-linux/7.5.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
  1. 执行安装,编译过程耗时较长,需要耐心等待,需要一两个小时
make && make install
  1. 安装完成后软连接
ln -s /usr/lib/gcc/x86_64-redhat-linux/7.5.0/bin/gcc /usr/bin/gcc
ln -s /usr/lib/gcc/x86_64-redhat-linux/7.5.0/bin/g++ /usr/bin/g++
gcc --version #应该显示7.5.0版本

若版本不是新的7.5.0则先将/usr/bin/gcc和/usr/bin/g++删除,使用以下指令

rm /usr/bin/gcc
rm /usr/bin/g++ #加了这个两步,删除软连接
ln -s /usr/lib/gcc/x86_64-redhat-linux/7.5.0/bin/gcc /usr/bin/gcc
ln -s /usr/lib/gcc/x86_64-redhat-linux/7.5.0/bin/g++ /usr/bin/g++
gcc --version #应该显示7.5.0版本
  1. 最后一步,链接新的动态库

源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决

  • 查找编译gcc时生成的最新动态库
find / -name "libstdc++.so*"

  • 将上面的最新动态库libstdc++.so.6.0.24复制到/usr/lib64目录下
cp /usr/lib/gcc/x86_64-redhat-linux/7.5.0/lib64/libstdc++.so.6.0.24 /usr/lib64
  • 切换工作目录至/usr/lib64
cd /usr/lib64
  • 查看当前软连接
ls -ll | grep "libstdc++"

可以看到libstdc++.so.6是软连接,此时链接的是6.0.13的动态库,下面修改他

  • 删除原来软连接,将默认库的软连接指向最新动态库
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6

至此,大功告成

天下大事,必作于细

参考链接:
https://arstech.net/centos-6-error-yumrepo-error-all-mirror-urls-are-not-using-ftp-http/
https://blog.csdn.net/ncdx111/article/details/106041764
https://blog.csdn.net/aganliang/article/details/103227028

使用docker安装centos6.10镜像并安装新版gcc的更多相关文章

  1. 安装centos6.10时,安装完成重启报错error 15,file not found

    今天在一台老式联想服务器上安装centos6.10操作系统,安装完成,重启时,出现报错 error 15, file not found...... 在百度上搜索到进grub编辑,可还是无法解决问题, ...

  2. docker 在window 10 专业版的安装 && .net core 在docker的部署

    1.如果无法安装Hyper-V,八成是自己的杀毒软件给关了,我的是 电脑管家-启动项里面 给关掉了. 2.如果部署.net core 后 运行 报 An assembly specified in t ...

  3. CentOS6.10下yum安装MySQL5.7

    MySQL官网的Yum仓库快速指南:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 检查是否安装有MySQL数据库 rpm -qa | ...

  4. redis 安装实战(10步完成安装)

    1 下载zip :https://redis.io/download   ---->redis-4.0.6 2 上传:利用wcp 上传到/usr/local/soft/ 3 解压:tar -zv ...

  5. SNMP服务安装 Centos6.8环境网络安装

    概念: snmp是英文“Simple Network Management Protocol”的缩写,意为:简单网络管理协议. snmp是目前最常用的环境管理协议. snmp被设计成与协议无关的. s ...

  6. 更改pip安装源的镜像解决安装总是timeout的情况

    由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...

  7. 更改pip安装源的镜像解决安装总是timeout的情况(pip 豆瓣镜像源)

    由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...

  8. VM12及CentOS-6.10的安装

    VM12的安装破解步骤 1:打开VMware 12安装界面后,点击[下一步]2:勾选[我接受许可协议中的条款]安装VMware Workstation 12 ,然后点击[下一步]3:修改默认安装路径, ...

  9. centos6.10环境安装nodejs8.2.1

    操作系统为centos6.10,在安装nodejs最新版本的时候报错,依赖glibc的高版本和gcc高版本,还要安装python2.7,操作系统上已经跑了很多应用,升级gcc风险过大,采用相对保守的方 ...

随机推荐

  1. think php 图像加水印

    1.将下载好的字体引入至 thinkPHP 框架的public/static 下(这里我建了一个文件夹叫font) (1.) (2.)   2.将字体路径写入config.php中 'font'=&g ...

  2. ESXI 虚拟化误删除管理端口Management Network (vmk0),导致无法访问后台解决方案

    按F2开启控制台shell,启用后返回.按Alt+F1打开终端. 输入 esxcfg-vmknic -a -i 192.168.1.10 -n 255.255.255.0 "Manageme ...

  3. 说说如何安装 Openfire

    Openfire 是一个基于 XMPP 协议的 IM 服务框架.这里我们来说一说如何安装它. 1 下载 zip 安装包 首先下载 Openfire 安装包,下载路径为:http://www.ignit ...

  4. 使用scrapy 创建爬虫项目

    使用scrapy 创建爬虫项目 步骤一: scrapy startproject tutorial 步骤二: you can start your first spider with: cd tuto ...

  5. Docker容器和虚拟机区别

    Docker .虚拟机之间区别 虚拟机技术的缺点: 1.资源占用太多 2.冗余步骤多 3.启动很慢 容器化技术 1.服务器资源利用率高 2.比较轻量化 3.打包镜像测试,一键运行 比较Docker和虚 ...

  6. ASP.NET Core 6框架揭秘实例演示[26]:跟踪应用接收的每一次请求

    很多人可能对ASP.NET Core框架自身记录的诊断日志并不关心,其实这些日志对纠错排错和性能监控提供了很有用的信息.如果需要创建一个APM(Application Performance Mana ...

  7. pycharm远程调试、开发(详细操作)

    如果仅是远程开发,新建 ssh Interpreter 并 apply tools -> deployment -> browser remote host 即可 1.服务器侧准备 准备调 ...

  8. 三大主流软件负载均衡器对比(LVS & Nginx & Haproxy)

    LVS:1.抗负载能力强.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低2.工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流 ...

  9. 嵌套OOPS导致系统卡死 每个CPU都上报softlockup的问题

    问题现象:在ARM服务器上,构造oops异常,本应该产生panic,进入dump流程,并且系统重启,但是系统并未重启,而是出现了卡死,在串口会隔一段时间就循环打印调用栈信息.如下所示 linux-fA ...

  10. 【论文阅读】CVPR2022: Learning from all vehicles

    Column: March 23, 2022 1:08 PM Last edited time: March 23, 2022 11:13 PM Sensor/组织: 现leaderboard第一名, ...