搭建eth开发环境_2_ubuntu环境搭建

概述

本文是本人搭建 18.04版ubuntu 开发和服务环境 过程中, 包含了一些组件和程序,整个过程到处查验资料,十分不便,所以本人把主要指令整理到一起,方便以后参考,其中大量引用了一些在网上查到的资料, 如有侵权,请即使联系本人.
EMAIL:[email protected]

相关操作

下载ubuntu

选择server 版本安装
查看所有版本
http://releases.ubuntu.com/
选择当前最新版本
http://releases.ubuntu.com/18.04/

安装ubuntu

  • 下载安装vmware
  • 默认是nat 模式,需要先打开网桥模式
    打开vmware 菜单 ->编辑-> 虚拟网络编辑器->
  • 新建虚拟机:
    根据向导 配置安装目录,选择cd镜像位置
  • 完成后开启虚拟机自动安装
  • server版安装界面是英文的,基本不需要改选项, 选[done] 下一步即可
  • 注意:记住用户名和密码

ubuntu的配置和升级

以下操作都在vmware 窗口中进行:

  • 授权,以root身份登录,输入
    $ sudo su输入当前用户密码

  • 配置ip+网关,输入
    $ vi/etc/netplan/50-cloud-init.yaml
    关键是看清配置总共分为五个层次,逐层向后至少空一格,否则会报错
    第一层-network:
    第二层-- ethernets:
    第三层--- ens33:
    第四层----addresses: [192.168.1.55/24]
    第四层----gateway4: 192.168.1.254
    第四层----nameservers:
    第五层-----addresses: [114.114.114.114, 8.8.8.8]
    出现类似错误:line8 column 6:cloud not find expected ‘:’ #提示是冒号:后面没加空格
    出现类似错误:netplan found character that cannot start any token,#提示是没有按五个层次写配置文档,一定要下一层比上一层多空一格或以上。

  • 刷新网络配置,输入
    $ netplan apply
    ubuntu从17.10开始,已放弃在/etc/network/interfaces里固定IP的配置,即使配置也不会生效,而是改成netplan方式 ,配置写在/etc/netplan/01-netcfg.yaml或者类似名称的yaml文件里,18.04的server版本安装好以后,配置文件是:/etc/netplan/50-cloud-init.yaml,修改配置以后不用重启,执行 netplan apply 命令可以让配置直接生效。

  • 查看网络配置,输入
    $ ifconfig a 或者 $ ip a

  • 我们经常需要vi 编辑配置文件,vi 异常退出的解决:
    1查看所有文件 包含隐藏文件
    $ ls -a
    2删除以’.’开头的, ‘swp’ 或’swo’ 结尾的缓存文件
    $ rm *swp
    $ rm *swo

安装其他软件

我在window下 用putty软件连接客户端

  • 刷新apt 源
    $ vi /etc/apt/sources.list

ubuntu 的源列表
以下是 18.04源 注意之前提到的 源中 把 bionic 写成了 boinc 导致无法连接 ,正确写法请参考下面

deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe

bionic 是指18.04版本 main multiverse都是目录

  • 更新 apt
    $ sudo apt-get update

源码安装

一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
1) 配置$ sudo ./configure –prefix=....onePackage/install
2) 编译$ sudo make
3) 安装$ sudo make install
4) 删除临时文件$ sudo make clean

安装说明:
1.获取源码文件,解压后,cd进入源码文件目录,找到configure程序,使用./configure建立Makefile文件(必须保证Makefile文件正确建立,如果建立不成功的话,查看错误,并依据错误提示,解决后再次建立Makefile文件,直到正确建立Makefile文件)
2.成功生成 Makefile后 我们只需要使用sudo make命令进行编译
3.编译成功后,使用sudo make install进行安装软件
4.可以使用 ./configure –prefix=’File Path’命令,将软件安装在File Path位置,这样可以方便删除。

程序卸载

卸载程序也可以在原来的make目录下用一次make uninstall,但前提是Makefile文件有uninstall命令(nodejs的源码包里有uninstall命令,测试版本v0.10.35)。

关于卸载:
如果没有配置–prefix选项,源码包也没有提供make uninstall,则可以通过以下方式可以完整卸载:
找一个临时目录重新安装一遍,如:
$ ./configure --prefix=/tmp/to_remove && make install
然后遍历/tmp/to_remove的文件,删除对应安装位置的文件即可(因为/tmp/to_remove里的目录结构就是没有配置–prefix选项时的目录结构)。

nodejs安装

打开链接,参考nodejs安装手册
https://github.com/nodesource/distributions#debinstall
看这里:
这里写图片描述

因为ubuntu 的更新源没有nodejs ,无法直接用 apt install 安装 nodejs 只能 通过以下方式安装
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
查看版本
$ node -v

go 安装

  • 下载安装包
    wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
  • 解压安装包
    tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
  • 配置环境变量
    vi /etc/profile
export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin
  • 刷新环境变量
    source /etc/profile

docker-ce安装

  • 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
    $ sudo apt-get remove docker docker-engine docker-ce docker.io
  • 更新apt包索引:
    $ sudo apt-get update
  • 安装以下包以使apt可以通过HTTPS使用存储库(repository):
    $ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加Docker官方的GPG密钥和stable存储库:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

或者用阿里的GPG密钥stable存储库:

$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  • 添加阿里云的Docker Hub镜像:

    vi /etc/docker/daemon.json
    {
    “registry-mirrors”: [“https://obou6wyb.mirror.aliyuncs.com“]
    }

  • 再更新一下apt包索引:
    $ sudo apt-get update

  • 安装最新版本的Docker CE:
    $ sudo apt-get install -y docker-ce
  • 查看安装好的版本号:
    $ docker version
  • 查看docker服务是否启动:
    $ systemctl status docker
  • 若未启动,则启动docker服务:
    $ sudo systemctl start docker
  • 经典的hello world, 测试docker环境是否搭建完成, 是否可以运行:
    $ sudo docker run hello-world

在生产系统上,可能会需要应该安装一 version个特定版本的Docker CE,而不是总是使用最新版本:

  • 列出可用的版本:第二列是版本字符串
    $ apt-cache madison docker-ce
  • 安装指定的版本:
    $ sudo apt-get install docker-ce=<VERSION>

docker-compose

在安装Docker-Compose之前,需要安装Python-pip 见下文
pip install docker-compose

git安装

安装git
$ apt install git
查看git版本
$ git version

python 3安装

  • 安装python3
    $ apt install python3

pip安装

pip3安装

  • 安装pip3
    $ sudo apt-get install python3-pip
  • 安装distutils,解决报错问题
    $ sudo apt-get install python3-distutils
  • 安装开发工具
    $ apt install build-essential python3-dev python3-setuptools

python 2.7版本 把上面的 ‘python3’ 改为 ‘python’ 即可
例如:
$ sudo apt-get install python-pip

pip用法

假设我们想要安装一个名为scrapy的包,
- 安装包
$ pip install scrapy
- 卸载程序包:
$ pip uninstall scrapy
- 从PyPI搜索软件包:
$ pip search "search_query"
- 列出已安装的软件包:
$ pip list
- 要列出过期的软件包:
$ pip list --outdated

gcc 与 g++安装

查看版本
$ gcc --version

ubuntu的常用指令

curl网络指令 可以用来下载

—————GET请求——————————

$ curl http://www.baidu.com,回车之后,HTML内容打印在屏幕上;如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。
$ curl -i "http://www.baidu.com" 显示全部信息
$ curl -l "http://www.baidu.com"只显示头部信息
$ curl -v "http://www.baidu.com" 显示get请求全过程解析

—————下载——————————

$ wget "http://www.baidu.com"
$ curl –o linjiqin http://www.cnblogs.com/linjiqin把网页保存到linjiqin中。
$ http://www.cnblogs.com/linjiqin/p/5401969.html 把网页保存到5401969.html中。
注意 $ curl –O http://www.cnblogs.com 是会报错的,缺少文件名

—————上传——————————

上传多个文件
$ curl -T "img[1-1000].png" ftp://example.com/upload/
$ curl -T "{file1,file2}" http://www.example.com
-F或–form:将本地文件上传到服务器
$ curl -F "filename=@/home/test/test1.pic" -F "filename=@/home/test/test2.pic" http://example.com/example.php 。千万不能漏掉@符号。多个文件用多个-F

—————POST——————————

$ curl -d "id=1&name=test" http://example.com/example.php
$ curl -d "id=1" -d "name=test" http://example.com/example.php
以上两句 当提交的参数值中有特殊字符就需要先转义。如空格时,就需要转义成%20
data-urlencode参数:可以自动转义成特殊字符,无需人工事先转义。
$ curl --data-urlencode "name=April 1" http://example.com/example.php

—————伪装成指定的浏览器Chrome访问——————————

$ curl -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" www.baidu.com

—————伪造cookie——————————

一是指定参数和值 $ curl --cookie "name=xxx" http://www.example.com
二是从文件读取 $ curl -b /cookie.txt http://www.example.com

—————保存cookie——————————

$ curl -c ./cookie.txt -d username=aaaa -d pwd=****** http://www.example.com

—————定义输出显示内容——————————

-w/–write-out: 可以定义输出的内容
1、打印出返回的http码
$ curl -o /dev/null -s -w %{http_code} "http://www.baidu.com"
2、打印响应时间
$ curl -o /dev/null -s -w "time_total: %{time_total}\n" "http://www.baidu.com"

———————————————

打包压缩,解压,解包

以下文件名 都可以用*匹配
tar
打包 $ tar -cvf 目标文件名.tar 目录
解包到当前目录$ tar -xvf 目标文件名.tar
解包到指定目录,例子:$ tar -xvf 目标文件名.tar -C ~/tmp
———————————————
.tar.gz 和 .tgz
压缩$ tar -zcvf .....参数用法同上
解压$ tar -zxvf .....参数用法同上
———————————————
.tar.bz和 .tar.bz2(压缩率最好的文件)
压缩 $ tar -jcvf .....参数用法同上
解压 $ tar -jxvf .....参数用法同上
———————————————
.xz文件类型文件解压,例子
解压$ xz -d Gnome-OSC-HS-light-menu*.tar.xz
———————————————
.zip
解压 $ unzip 目标文件名
压缩 $ zip FileName.zip DirName
———————————————
.gz
解压 $ gunzip 目标文件名$ gzip -d 目标文件名
压缩 $ gzip 目标文件名
———————————————
.bz
解压$ bzip2 -d FileName.bz
———————————————
.rar
解压 $ rar x 目标文件名
压缩 $ rar a 目标文件名
———————————————
.rpm
解包$ rpm2cpio FileName.rpm | cpio -div
———————————————
.deb
解包$ ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压$ sEx x FileName.*
压缩$ sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

apt 指令

apt 命令 取代的命令 命令的功能
apt update apt-get update 重新获取软件包列表
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt source apt-get source 下载源码档案
apt clean apt-get clean 清除下载的归档文件
apt autoclean apt-get autoclean 清除旧的的已下载的归档文件
apt autoremove apt-get autoremove 自动移除全部不使用的软件包
apt check apt-get check 检验是否有损坏的依赖
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示装细节
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表

/etc/apt/sources.list 记录软件源的地址
/var/cache/apt/archives 已经下载到的软件包都放在这里

选项:
-h 本帮助文件。
-q 输出到日志 - 无进展指示
-qq 不输出信息,错误除外
-d 仅下载 - 不安装或解压归档文件
-s 不实际安装。模拟执行命令
-y 假定对所有的询问选是,不提示
-f 尝试修正系统依赖损坏处
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表
-b 获取源码包后编译 -V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp

gcc命令

一. 常用编译命令选项

假设源程序文件名为test.c。
- 无选项编译链接
用法:#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
选项 -o
用法:#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
选项 -E
用法:#gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。
选项 -S
用法:#gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。
选项 -c
用法:#gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
无选项链接
用法:#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。
选项 -O
用法:#gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

二. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]

  1. 多个文件一起编译
    用法:#gcc testfun.c test.c -o test
    作用:将testfun.c和test.c分别编译后链接成test可执行文件。
  2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
    用法:
gcc -c testfun.c //将testfun.c编译成testfun.o
gcc -c test.c //将test.c编译成test.o
gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

make命令

源码编译(源码安装通常安装比较麻烦,特别是解决依赖经常会出现问题,但是通常编译可以获得该软件的最新版本)

源码:程序代码,写给人开的程序语言,但机器无法识别,所以无法执行;
编译程序:将程序代码转译成为机器能看得懂的语言,相当与翻译器;
可执行文件:经过编译程序变成二进制程序后机器可以识别的可执行二进制文件;

 configure :在整个编译的过程,又需要设置软件安装路径,确定链接库位置,检测库依赖关系是否满足,判断目标系统上是否有合适的编译环境等复杂的过程。通常软件开发商都会写这样一个检测程序,来检测用户的操作环境,以及该操作环境是否满足开发商所需的其他功能,替我们完成上诉的复杂过程。检测完毕后,就会主动新建一个Makefile的规则文件,而这个检测程序的名字通常为configure(下载完软件源码会在源码文件中找到)。

其中–prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
如果配置了–prefix,如:
$ ./configure --prefix=/usr/local/test
安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。
使用–prefix选项的另一个好处是方便卸载软件或移植软件;当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;而迁移软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)。

 make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。
 
 make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。

 make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。

 make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。

 make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。

 make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境的人去重新编译。
configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。

猜你喜欢

转载自blog.csdn.net/zdyah/article/details/81835785