Ubuntu18.04下编译OpenWRT15.05遇到的问题和解决方案

最近,OpenWRT开发主战场,从ubuntu16.04 LTS 虚拟机环境迁移到了ubuntu18.04LTS,水土不服,各种不适。不多说,折腾!!!

1. 初检git出错

依赖提示 Please install Git (git-core) >= 1.6.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜  openwrt git:(master) ✗ make menuconfig
Checking 'working-make'... ok.
.
.
.
Checking 'svn'... ok.
Checking 'git'... failed.
Checking 'file'... ok.
Checking 'openssl'... ok.
Checking 'ldconfig-stub'... ok.

Build dependency: Please install Git (git-core) >= 1.6.5

/home/ubuntu/buildbot/compex/chaos_calmer/openwrt/include/prereq.mk:12: recipe for target 'prereq' failed
Prerequisite check failed. Use FORCE=1 to override.
/home/ubuntu/buildbot/compex/chaos_calmer/openwrt/include/toplevel.mk:140: recipe for target 'staging_dir/host/.prereq-build' failed
make: *** [staging_dir/host/.prereq-build] Error 1

明明已经安装了git,却提示我们安装git,只是openwrt里面prereq-build.mk的一个bug,可以通过打patch的方法来修复它。

解决方案

进到xxx/chaos_calmer/include目录,就是toplevel.mk所在的目录。

1
2
wget https://gitlab.labs.nic.cz/turris/openwrt/uploads/0673001b14ab1d1769604ff0ce7d8781/git-version-check-fix.patch
patch < git-version-check-fix.patch

回到openwrt根目录,再次检查依赖,发现没,没有问题了。

Ubuntu18.04安装docker并使用portainer

1、安装docker

1
apt install docker.io

2、修改成国内镜像源

1
2
3
4
5
6
cd /etc/docker
vim daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

重启docker服务

1
service docker restart

3、docker安装portainer

搜索portainer

1
docker search portainer

拉取portainer

1
docker pull portainer/portainer

创建portainer容器并启动

1
docker run -d --name portainerUI -p 8000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

4、访问portainer界面
http://192.168.1.102:8000

首次登陆时,初始化设置密码。


  • 安装docker
    1. apt install docker.io
    2. sudo systemctl enable docker
    3. sudo systemctl start docker
    4. sudo systemctl restart docker
    5. 测试: docker run hello-world
  • 通过Dockerfile构建docker image
    1. 获取镜像:sudo docker pull ubuntu:18.04
    2. 运行镜像:sudo docker run --net host -t -i ubuntu:18.04 /bin/bash
    3. 查看镜像:sudo docker images
    4. 查看镜像:sudo docker image ls
    5. 查看容器:sudo docker ps -a
    6. 查看当前工作容器:sudo docker ps
    7. 删除容器:sudo docker rm <容器id>
    8. 删除镜像:sudo docker image rm <镜像id>
    9. Dockerfile 创建镜像:sudo docker build -t <镜像名称> .
    10. flask 启动服务: python manager.py runserver –host 0.0.0.0 –port 5000
    11. commit: sudo docker commit -a “liutao” -m “face_detection_v1.0” <容器id> face_detection
    12. save: sudo docker save -o face_detection.tar face_detection
    13. load: sudo docker load < face_detection.tar
    14. 进入容器:sudo docker exec -it IMAGE ID或者NAMES /bin/bash
    15. 从容器拷贝文件到宿主机: sudo docker cp mycontainer:/face_detection/upload ~/upload
    16. 从宿主机拷贝文件到容器: sudo docker cp ~/upload mycontainer:/face_detection/upload
  • 多次测试,待程序在docker image正常运行后,可进行服务器部署

Docker ubuntu镜像更换apt-get

1
2
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
apt-get clean

Mac使用zsh快速打开SublimeText

通过配置~/.zshrc加入alias来通过命令行启动sublime。

  1. 打开 .zshr
1
vim ~/.zshrc
  1. 在 .zshrc增加别名
1
alias subl="/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"

其中 Sublime\ Text可以按照你系统上安装的Sublime版本的情况被替换成Sublime\ Text\ 2或是其他。取决于你的Sublime Text.app在~/Application里的实际名称。

  1. 更新改动,生效
1
source ~/.zshrc
  1. 即可使用sublime在命令行中创建和编辑文件
1
subl hello.c
  1. 即可使用sublime在命令行中打开当前文件夹
1
subl .

git指令备忘

基本配置

  • 通过终端命令修改
1
2
3
4
5
git config --global user.name "xxx"
git config --global user.email "xxx@gmail.com"
git config --global alias ci commit
git config --global alias dog log --all --decorate --oneline --graph
git config --global alias mg merge
  • vi ~/.gitconfig 直接修改文件配置也可以
1
2
3
4
5
6
7
8
9
10
[user]
name = xxx
email = xxx@gmail.com
[alias]
co = checkout
br = branch
ci = commit
st = status
dog = log --all --decorate --oneline --graph
mg = merge

你可能不知道的Shell

1、 sudo !!

以root的身份执行上一条命令 。

场景举例:比如Ubuntu里用apt-get安装软件包的时候是需要root身份的,我们经常会忘记在apt-get前加sudo。每次不得不加上sudo再重新键入这行命令,这时可以很方便的用sudo !!完事。

常用互联网技术工具

技术选型

后端技术

技术 说明 官网
SpringBoot 容器+MVC框架 https://spring.io/projects/spring-boot
SpringSecurity 认证和授权框架 https://spring.io/projects/spring-security
MyBatis ORM框架 http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisGenerator 数据层代码生成 http://www.mybatis.org/generator/index.html
PageHelper MyBatis物理分页插件 http://git.oschina.net/free/Mybatis_PageHelper
Swagger-UI 文档生产工具 https://github.com/swagger-api/swagger-ui
Hibernator-Validator 验证框架 http://hibernate.org/validator
Elasticsearch 搜索引擎 https://github.com/elastic/elasticsearch
RabbitMq 消息队列 https://www.rabbitmq.com/
Redis 分布式缓存 https://redis.io/
MongoDb NoSql数据库 https://www.mongodb.com
Docker 应用容器引擎 https://www.docker.com
Druid 数据库连接池 https://github.com/alibaba/druid
OSS 对象存储 https://github.com/aliyun/aliyun-oss-java-sdk
MinIO 对象存储 https://github.com/minio/minio
JWT JWT登录支持 https://github.com/jwtk/jjwt
LogStash 日志收集工具 https://github.com/logstash/logstash-logback-encoder
Lombok 简化对象封装工具 https://github.com/rzwitserloot/lombok
Jenkins 自动化部署工具 https://github.com/jenkinsci/jenkins

前端技术

技术 说明 官网
Vue 前端框架 https://vuejs.org/
Vue-router 路由框架 https://router.vuejs.org/
Vuex 全局状态管理框架 https://vuex.vuejs.org/
Element 前端UI框架 https://element.eleme.io
Axios 前端HTTP框架 https://github.com/axios/axios
v-charts 基于Echarts的图表框架 https://v-charts.js.org/
Js-cookie cookie管理工具 https://github.com/js-cookie/js-cookie
nprogress 进度条控件 https://github.com/rstacruz/nprogress

环境搭建

开发工具

工具 说明 官网
IDEA 开发IDE https://www.jetbrains.com/idea/download
RedisDesktop redis客户端连接工具 https://redisdesktop.com/download
Robomongo mongo客户端连接工具 https://robomongo.org/download
SwitchHosts 本地host管理 https://oldj.github.io/SwitchHosts/
X-shell Linux远程连接工具 http://www.netsarang.com/download/software.html
Navicat 数据库连接工具 http://www.formysql.com/xiazai.html
PowerDesigner 数据库设计工具 http://powerdesigner.de/
Axure 原型设计工具 https://www.axure.com/
MindMaster 思维导图设计工具 http://www.edrawsoft.cn/mindmaster
ScreenToGif gif录制工具 https://www.screentogif.com/
ProcessOn 流程图绘制工具 https://www.processon.com/
PicPick 图片处理工具 https://picpick.app/zh/
Snipaste 屏幕截图工具 https://www.snipaste.com/
Postman API接口调试工具 https://www.postman.com/
Typora Markdown编辑器 https://typora.io/

开发环境

工具 版本号 下载
JDK 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mysql 5.7 https://www.mysql.com/
Redis 3.2 https://redis.io/download
Elasticsearch 6.2.2 https://www.elastic.co/downloads
MongoDb 3.2 https://www.mongodb.com/download-center
RabbitMq 3.7.14 http://www.rabbitmq.com/download.html
Nginx 1.10 http://nginx.org/en/download.html

OpenWRT自定义ipk编译

Preparing, configuring and building the necessary tools

1
2
3
4
5
6
7
8
9
10
11
cd ~
mkdir buidbot
cd ~/buildbot
git clone https://git.openwrt.org/openwrt/openwrt.git source
cd /home/buildbot/source
git checkout v17.01.2
make distclean
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make toolchain/install
1
export PATH=/home/buildbot/source/staging_dir/host/bin:$PATH

Creating a package feed for your packages

1
mkdir -p mypackages/examples/helloworld

Creating the package manifest file

1
2
cd home/buildbot/mypackages/examples/helloworld
touch Makefile

MAC原生输入法

自接触计算机,最早是从“王旁青头兼五一”…王码五笔(86版),到后来的极点五笔。然后,因为Win8的发布,Metro天生对五笔支持不好。加上全拼也越来越盛行,最后终于下定决心,来到了Win8字带的全拼输入法。再后来,IBM放弃了ThinkPAD,又痛苦的放弃了小红点,转到了MAC阵营。于是QQ输入法,搜狗输入法,一开始感觉挺方便,但随着隐私的越来越重好。最后,还是卸载了所有第三方输入法,转回到原生自带的输入法。之前一直用的Tab键选项列表变成了声调切换,哪么选项列表如何展开呢?于是有了下面的文字记录。

其实macOS「版本:macOS Catalina 10.15.2」原生输入法很强大,简单介绍一些功能:

翻页选词

  • 1.如果输入拼音后目标没在当前行,按右中括号键]可以跳到下一行同时展开候选项列表,按左中括号键[可以跳到上一行。

    mac输入法1

  • 2.如果输入拼音后候选项太多,也可以按Tab键改变音调,从而筛选目标。