https://github.com/baidu/AnyQ
1. 风险警告写在前面——前置风险:
- 这个库并不像PaddleOCR那个库那么流行,维护更新那么及时。这个库——github-AnyQ,最近一次更新时间是2020.11.28。(这个库第一次提交是2018年7月2号,也有可能是因为经过两年的完善,没有更多人试出更多错误。。。)
- 另外根据网上很多安装教程,最好使用docker安装,而且可能会由于gcc等的版本问题,安装失败,还可能会由于网络原因失败。
- 另外,AnyQ这个库的迭代更新并不与PaddlePaddle一致,所以下载安装包的时候最好按照官方推荐来进行。
- 网上没有特别多的资料,大部分只介绍了安装,也没有使用体验之类的,问问题的倒是有,但是解答问题的没几个,github的issue回复也没有paddleocr那么及时,虽然也有2.3k个star。
- 同时查看了一下issue中一些内容,
- 系统多并发时内存溢出 #105,这个并发问题是实际使用一个很严重的问题。
- 如何动态增加语料? #211,这个问题也很可怕,这个东西毕竟不是产品,只是一个开源库,很多产品需要支持的功能它并没有。
参考:
Linux系统上 编译安装百度开源AnyQ(非docker环境)
先确定一些基础组件的版本,官方文档推荐的是:
- cmake 3.0以上(推荐3.2.2版本),
- g++ >=4.8.2,
- bison >=3.0
gcc --version > gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.02. 查看glibc库版本(其实这步可以不做。)
# 使用的命令类似以下 strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
如果报错strings: '/lib64/libc.so.6': No such file,那么需要注意:
- 当前的目录,这个lib64可能会在根目录或者是当前用户目录下,自己切过去,查看一下,
- 另外这个文件的名称可能也随着系统版本不一样而不同,自己ls看一下这个lib64目录下的以.so结尾的文件。
- 如下所示
# 切换到根目录 cd / # 切换到当前用户的home目录下 cd ~
整体如下:
(base) / > cd lib64 (base) /lib64 > ls ld-linux-x86-64.so.2 (base) /lib64 > strings ld-linux-x86-64.so.2|grep GLIBC_ GLIBC_2.2.5 GLIBC_2.3 GLIBC_2.4 GLIBC_PRIVATE GLIBC_TUNABLES # 另外,还可以直接以下面的代码查看版本 ldd --version >ldd (Ubuntu GLIBC 2.27-3ubuntu1.4) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper. # 另外,捎带检测一下CXXABI版本 strings /lib64/ld-linux-x86-64.so.2| grep 'CXXABI' # 什么都没有返回 没有这个库。。
可以看到,本机glibc的版本还挺高的,有三个版本,2.2.5,2.3以及2.4
3. 查看cmake及make版本glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux *** 作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个 *** 作系统。
所以新版本,旧版本都有。
# linux编译使用的语句中用到了cmake和make mkdir build && cd build && cmake .. && make cmake --version # 上一句很可能报错 zsh: command not found: cmake make -v # make这个命令默认倒是有的 # 如果没有cmake,则需要进行安装,默认好像是没有的,只有make 可以查看3.1.1 安装cmake部分 cmake --version > cmake version 3.20.6 CMake suite maintained and supported by Kitware (kitware.com/cmake).4. bison安装和版本查看
GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR(1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR(1) 或规范 LR(1) 解析表。一旦您熟练使用 Bison,您可以使用它开发广泛的语言解析器,从简单的桌面计算器中使用的解析器到复杂的编程语言。
Bison与Yacc向上兼容:所有正确编写的Yacc语法都可以在Bison上正常使用。熟悉Yacc的任何人都应该可以轻松使用Bison。您需要精通C,C ++或Java编程才能使用Bison。
Bison及其生成的解析器是可移植的,它们不需要任何特定的编译器。
直接进行安装,如果报错,参考 3.1.2 bison安装报错 解决
sudo apt-get install bison
反正安装完就会显示类似下面的信息
这里的版本是3.0.2,应该这个库不会频繁更新,AnyQ的要求是:bison >=3.0,符合要求。
python --version > Python 3.8.5 java -version # 没有返回信息,说明ubuntu默认不带java,需要自己安装
要求中,jdk>=1.8,所以需要安装一下java/jdk。
截止到这里因某种不可抗力失败了。
3. docker安装 3.1 基本安装参考:
- 小白编译AnyQ-docker&linux[CentOs]——AnyQ系列之一
- 百度 AnyQ 安装
按照建议,去用centos的镜像搞,
(base) /ws/paddle21 > docker pull centos:centos7 centos7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987 Status: Downloaded newer image for centos:centos7 docker.io/library/centos:centos7 (base) /ws/paddle21 > docker images |grep centos centos centos7 eeb6ee3f44bd 4 weeks ago 204MB # 镜像好小,只有204MB,不容易 docker run -itd --name centos-anyq -p 0.0.0.0:8888:8999 centos:centos7 # 这句话其实有问题,把容器放到后台执行了 docker exec -it centos-anyq /bin/bash # 把容器放回到前台 cd home/ # 切入home目录 # 如果提示没有wget,就安装一下 yum -y install wget # 安装jdk wget http://anyq.bj.bcebos.com/jdk-8u171-linux-x64.tar.gz #解压 tar xzvf jdk-8u171-linux-x64.tar.gz #添加路径 export PATH=`pwd`/jdk1.8.0_171/bin:$PATH ##安装gcc yum install -y gcc gcc-c++ make automake ##安装cmake v3.3.2 wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz tar -zxvf cmake-3.3.2.tar.gz ##进入cmake目录,设置、编译、安装 cd cmake-3.3.2/ ./bootstrap # 就是这样执行这个命令的,最后会提示下面这句话 > CMake has bootstrapped. Now run gmake. gmake gmake install ##安装bison yum install -y bison # 安装git yum install -y git # 设置上网代理 export http_proxy="http://192.168.1.105:10809" export https_proxy="http://192.168.1.105:10809" # 取消代理设置 unset http_proxy unset https_proxy # 安装anyQ git clone https://github.com/baidu/AnyQ.git # 不管设置或者不设置代理,都无法git clone这个项目 # 那就直接下载安装包解压好了,反正也没啥区别 cd ../ # 之前在 cmake3.3.2目录里一直就没出来 # 如果不小心忘了cd出来 就 mv AnyQ-master ../ 都移动出来就好了 wget https://github.com/baidu/AnyQ/archive/refs/heads/master.zip # 安装解压软件 yum install -y unzip zip # 解压到当前文件夹 unzip master.zip cd AnyQ-master/ mkdir build && cd build && cmake .. && make # 等着编译就好了3.1.2 编译
很不幸,在一开始的时候,这个东西就遇到了一个大困难
Scanning dependencies of target extern_zlib [ 0%] Creating directories for 'extern_zlib' [ 1%] Performing download step (git clone) for 'extern_zlib' Cloning into 'extern_zlib'... error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly
这东西还是要走git clone。
善意的提醒
接下来的cmake和make速度非常慢,建议在tmux中进行,不然可能会被中断。
但是centos的yum源里没有tmux,所以如果要使用的话,需要手动编译安装,相对麻烦。
tmux使用:
- CentOS下Tmux安装和使用
- 如何在Docker容器中运行tmux?
- docker中使用screen报错 /bin/sh: 1: __git_ps1: not found
参考:百度 AnyQ 安装
3.1.3 修改hosts文件其中cmake … && make 的过程是一个艰难的过程,但凡出现网络卡住的时候,可以ctrl+c中止,然后通过重新执行cmake … && make继续执行,直到完全成功
参考:Linux系统上 编译安装百度开源AnyQ(非docker环境)
配置github加速(可选 *** 作)
我用的是更改hosts文件方法,如果你有更好的请告诉我,谢谢
所以这里不用代理,直接进行git clone,并不是无法下载,而是下载的很慢。。。
尝试修改一下hosts吧。
改了之后,比没改能好一点点,起码可以找到这个paddle的地址了
[ 0%] Creating directories for 'extern_paddle' [ 1%] Performing download step (git clone) for 'extern_paddle' Cloning into 'extern_paddle'... fatal: unable to access 'https://github.com/PaddlePaddle/Paddle.git/': Failed connect to github.com:443; Connection timed out Cloning into 'extern_paddle'...
这个需要重启网络服务,参考:centos解决bash: service: command not found 错误
yum list | grep initscripts # 列出可以安装的源 > initscripts.x86_64 9.49.53-1.el7_9.1 updates yum install initscripts -y # 然后安装就好,最后安装成功会提示: > Complete! # 安装好之后再进行网络重启 service network restart # 或者下面这个命令都可以重启 /etc/init.d/network restart
依然很慢,似乎没什么作用。然后。。。反正都是老版本,为什么一定要去github上。
查看cmake文件,
以其中的paddle.cmake为例,可以看到:
去gitee上看看,https://gitee.com/paddlepaddle/Paddle,可以发现,也有这个版本(不用管链接里的大小写,这个无所谓)
改make文件,一个一个试一下。 只需要把github改成gitee即可。
果然,改了之后就开始动起来了
基本上paddle搞定了之后,后面的好像就会快很多。但是该错的还是会错
继续从github上转到gitee上,看能不能找到对应的库。不幸的是,基本都找不到,只能终止重来,不断尝试,希望哪次运气好,网络好一些。
发现其中有一个zlib,很久不更新了,而且确实有人把github上的项目转到gitee上,来提高国内下载的速度。。。考虑注册个账号,把那些项目转存过来??
对于zlib.cmake文件,将其中的git链接改为https://gitee.com/zeekim/zlib.git。
但是对于大部分的库来说,还是只能不断去ctrl+C终止,然后再cmake .. && make重启。一卡就重来。
3.1.4 继续修改我没有选择坐以待毙,而是继续折腾,找了好几个人收集的内容:
来自:
- github访问加速-修改hosts文件
- 2021-04-16 - Github访问加速 - 收集/实践
# windows 刷新IP配置 ipconfig /flushdns # linux刷新 service network restart # 或者下面这个命令都可以重启 /etc/init.d/network restart
vi /etc/hosts 13.127.152.42 codeload.github.com 151.101.88.133 github.map.fastly.net 151.101.88.133 favicons.githubusercontent.com 151.101.88.133 raw.github.com 151.101.88.133 raw.githubusercontent.com 151.101.88.133 camo.githubusercontent.com 151.101.88.133 cloud.githubusercontent.com 151.101.88.133 avatars.githubusercontent.com 151.101.88.133 avatars0.githubusercontent.com 151.101.88.133 avatars1.githubusercontent.com 151.101.88.133 avatars2.githubusercontent.com 151.101.88.133 avatars3.githubusercontent.com 151.101.88.133 user-images.githubusercontent.com 185.199.111.154 github.githubassets.com 52.69.239.207 api.github.com 52.74.223.119 gist.github.com # DNS Parsing speed for GitHub 140.82.113.3 github.com 185.199.108.153 assets-cdn.github.com 199.232.69.194 github.global.ssl.fastly.net
然后每次基本都可以按好一个,然后坏掉,然后重新cmake .. && make,继续搞。
随着你不断尝试,每次安好一个包,如下图变化
前面这个百分比进度会有变化,同时Built target XXX表示这个包是已经构建好的。正在一步步走向成功。
最后再extern_protobuffer这里一直卡住,
确认对应的gitee上有对应的github项目:https://gitee.com/mirrors/protobufsource
继续改protobuffer对应的cmake文件。
然后就可以找到咧
关于glog的安装,查看1.4的意外惊喜。glog搞完,显示下面的提示
继续安装,
boost的时候,开始下载文件了。。。等待。速度非常之慢,39M的文件,20k/s的下载。。。
数了一下,cmake/external文件夹中一共有18个.cmake文件,也就是要安装18个东西。。。确实挺漫长的。
根据参考的这几个网友的经验,这个东西编译下来,超级慢。。。而且网友似乎都是硬刚github,没有转到gitee或别的地方去。那就这样吧。
折腾下来,差不多从下午3点到
3.2 打包成镜像这个东西按起来确实太复杂了,还是要稳一点,持久化一下,不然下次再来一遍也不知道还有没有这个运气。
同时为了也可以重新映射到其他端口,最好是将其保存成一个镜像。
# ctrl+C 终止刚刚的./run_server服务 # exit 退出容器 # 容器中执行 [root@a14447576c14 build] #exit > exit # 服务器中执行 (base) /ws/huangshan/paddle21 > docker ps -a|grep centos a14447576c14 centos:centos7 "/bin/bash" 4 days ago Up 4 days 0.0.0.0:8888->8999/tcp centos-anyq # 将刚刚安装配置好的anyQ容器保存为一个镜像 docker commit -m "FAQ anyq image" -a "huangshan" centos-anyq anyq/base # centos-anyq 是要保存为容器的镜像名称 # anyq/base 是要保存的镜像名称 # 然后等一会就好了 (base) /ws/huangshan/paddle21 > docker images |grep anyq anyq/base latest 526d859789e4 34 seconds ago 8.47GB # 可以看到,虽然基础镜像centos只有400多MB,但是paddle就有这么大。。。
查看一下docker commit命令的帮助信息
(base) /ws/huangshan/paddle21 > docker commit --help Usage: docker commit [OPTIONS] ConTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes # 从容器的变化中创建一个镜像 options 和repository都是可选的,可以直接提交到本地docker列表中,不一定要建立一个有网络url链接的docker hub,供别人使用 Options: -a, --author string Author (e.g., "John Hannibal Smith") -c, --change list Apply Dockerfile instruction to the created image -m, --message string Commit message -p, --pause Pause container during commit (default true)
搜索可知:容器可以保存为镜像!(可以不通过dockerfile构建镜像)
其他代码示例:
# 启动一个centos6.8的镜像 docker pull centos:6.8 docker run -it -p 1022:22 centos:6.8 /bin/bash # 将容器提交为镜像 docker commit brave_mcclintock centos6-ssh # 使用新的镜像启动容器 docker run -d -p 1122:22 centos6-ssh:latest /usr/sbin/sshd -D
所以重点就是要有一个本地的docker hub或者什么的,把这个容器存的镜像放到一定的位置上去。
或者另一个比较清晰的例子
$ sudo docker commit <当前运行的container id> <仓库名称>:$ sudo docker save -o <仓库名称>- .img <仓库名称>: # 示例如下: $ sudo docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 111111111111 222222222222 "/bin/bash" 5 minutes ago Up 5 minutes jello $ sudo docker commit 111111111111 bash:1.0 $ sudo docker save -o bash-1.0.img bash:1.0
参考:
- docker如何将运行中的容器保存为docker镜像?
- Docker容器保存为镜像文件
Gitee上有一个专题,就叫mirror,国内镜像的意思 ,https://gitee.com/mirrors
里面包含一些常用库的镜像,虽然有点卑微,但是十分感谢,直接进入仓库,进行搜索,例如:
就可以找到国内镜像咧,https://gitee.com/mirrors/glog,然后就可以继续去改cmake文件里的链接咧。
fatal: unable to access 'https://github.com/google/protobuf.git/': Encountered end of file Cloning into 'extern_protobuf'... fatal: unable to access 'https://github.com/google/protobuf.git/': Encountered end of file Cloning into 'extern_protobuf'... fatal: unable to access 'https://github.com/google/protobuf.git/': Encountered end of file -- Had to git clone more than once: 3 times. CMake Error at /home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/tmp/extern_protobuf-gitclone.cmake:40 (message): Failed to clone repository: 'https://github.com/google/protobuf.git' make[5]: *** [third_party/protobuf/src/extern_protobuf-stamp/extern_protobuf-download] Error 1 make[4]: *** [CMakeFiles/extern_protobuf.dir/all] Error 2 make[3]: *** [all] Error 2 make[2]: *** [third_party/paddle/src/extern_paddle-stamp/extern_paddle-build] Error 2 make[1]: *** [CMakeFiles/extern_paddle.dir/all] Error 2 make: *** [all] Error 2
切换到/home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/tmp/extern_protobuf-gitclone.cmake 这个文件中,可以看到,如果出错,其实是会重新下载protobuf这个库的,所以还是要再改一遍。在这个文件里也改掉。
vi /home/AnyQ-master/cmake/external/protobuf.cmake vi /home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/tmp/extern_protobuf-gitclone.cmake https://gitee.com/mirrors/protobufsource
# try the clone 3 times incase there is an odd git clone issue set(error_code 1) set(number_of_tries 0) while(error_code AND number_of_tries LESS 3) execute_process( COMMAND "/usr/bin/git" clone "https://github.com/google/protobuf.git" "extern_protobuf" WORKING_DIRECTORY "/home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/src" RESULT_VARIABLE error_code ) math(EXPR number_of_tries "${number_of_tries} + 1") endwhile() if(number_of_tries GREATER 1) message(STATUS "Had to git clone more than once: ${number_of_tries} times.") endif() if(error_code) message(FATAL_ERROR "Failed to clone repository: 'https://github.com/google/protobuf.git'") endif()
改了之后还有个错误
Submodule 'third_party/benchmark' (https://github.com/google/benchmark.git) registered for path 'third_party/benchmark' Cloning into 'third_party/benchmark'... error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly Clone of 'https://github.com/google/benchmark.git' into submodule path 'third_party/benchmark' failed
可以看出来,错的是third_party/benchmark所以这部分出错对应的代码是:
execute_process( COMMAND "/usr/bin/git" submodule update --recursive WORKING_DIRECTORY "/home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/src/extern_protobuf" RESULT_VARIABLE error_code ) if(error_code) message(FATAL_ERROR "Failed to update submodules in: '/home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/src/extern_protobuf'") endif()
比较幸运的是,竟然搜到了一个一样的错误,哈哈哈,
- git submodule update --init时报错:Failed to recurse into submodule path third_party/protobuf
- cockroach(v20.2)源码编译
都是编译的时候出错,也都是因为github下载的问题。
所以要找一下对应于protobuf的git repo位置,其实就是上面提示的/home/AnyQ-master/build/third_party/install/paddle/third_party/protobuf/src/extern_protobuf这里。
git branch * (detached from v3.1.0) master
确认版本是3.1,但是3.1版本的.gitmodules文件并不在最外层,需要找一下.
参考:git submodule 的使用
先git status,如果有第三方库,就会看到gitmodules文件(但是不知道为什么,之前就没看到)
[root@a14447576c14 extern_protobuf]# git status # HEAD detached at 9f75c5a # Changes not staged for commit: # (use "git add/rm..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # deleted: third_party/benchmark # no changes added to commit (use "git add" and/or "git commit -a")
其实可以看到目录下有
然后点进去改掉里面的url地址即可
[submodule "third_party/benchmark"] path = third_party/benchmark url = https://github.com/google/benchmark.git # url改为 https://gitee.com/mirrors/benchmark
修改之后,虽然显示的还是Submodule 'third_party/benchmark' (https://github.com/google/benchmark.git) registered for path 'third_party/benchmark' Cloning into 'third_party/benchmark',但是已经可以继续编译下去了,证明修改生效了。
[ 24%] Performing download step for 'extern_xgboost' Cloning into 'xgboost'... fatal: unable to access 'https://github.com/dmlc/xgboost.git/': Encountered end of file make[2]: *** [third_party/xgboost/src/extern_xgboost-stamp/extern_xgboost-download] Error 128 make[1]: *** [CMakeFiles/extern_xgboost.dir/all] Error 2 make: *** [all] Error 23.4.2 xgboost文件夹问题
继续卡主了,考虑把这个文件也改成国内镜像好了,也确实找到了,https://gitee.com/mirrors/xgboost
改了源就好多了,贼快
但是这东西也有submodule,而且还有三个。。
Submodule 'cub' (https://github.com/NVlabs/cub) registered for path 'cub' Submodule 'dmlc-core' (https://github.com/dmlc/dmlc-core) registered for path 'dmlc-core' Submodule 'gputreeshap' (https://github.com/rapidsai/gputreeshap.git) registered for path 'gputreeshap' Cloning into 'cub'...
也找找看,能不能改吧。cub太小众了,根本没有。就多试一次,或者再找点hosts,记得重启一下service。
重新打断再运行,继续出错:
[ 20%] Performing download step for 'extern_xgboost' fatal: destination path 'xgboost' already exists and is not an empty directory. make[2]: *** [third_party/xgboost/src/extern_xgboost-stamp/extern_xgboost-download] Error 128 make[1]: *** [CMakeFiles/extern_xgboost.dir/all] Error 2 make: *** [all] Error 2
文件夹删了重新运行。就是删除下面这个目录
/home/AnyQ-master/build/third_party/xgboost # 如果还在build目录下的话 就 rm -rf /third_party/xgboost
另外,参考:
- make 发生错误 #192
- 百度AnyQ的编译部署
如果多次编译开始报错:/data/xiaoyichao/projects/AnyQ/build/third_party/xgboost 的文件夹不为空这样的信息,则需要手动删除一下这个文件下的内容。
3.4.3 make[ 18%] No patch step for 'extern_xgboost' [ 19%] No update step for 'extern_xgboost' [ 19%] No configure step for 'extern_xgboost' [ 20%] No build step for 'extern_xgboost' [ 20%] Performing install step for 'extern_xgboost' Makefile:31: MAKE [make] - checked OK # 然后下面报了一些warning,但是不影响,还是继续运行了
然后下载,等待。
然后就一屏幕一屏幕的输出信息,各种安装什么的。中间还是不断有新的包从github上clone,对网络的依赖非常高!
openssl
Scanning dependencies of target extern_leveldb [ 32%] Creating directories for 'extern_leveldb' [ 32%] Performing download step for 'extern_leveldb' Cloning into 'leveldb'... fatal: unable to access 'https://github.com/google/leveldb.git/': Encountered end of file make[2]: *** [third_party/leveldb/src/extern_leveldb-stamp/extern_leveldb-download] Error 128 make[1]: *** [CMakeFiles/extern_leveldb.dir/all] Error 2 make: *** [all] Error 2
运气不好,网络就会一致报错
如果是 openssl报错,还是可以改cmake文件,转到gitee源进行下载。
https://gitee.com/mirrors/openssl
# 在build目录时,执行以下 vi ../cmake/external/openssl.cmake # 然后把链接替换为 https://gitee.com/mirrors/openssl.git
然后再执行,不然确实太慢了
bcpc
没有找到国内源。。
可以看到整体进度是60%了,虽然这个确实不好下载。。但是,等着吧。
试了大概7、8遍,才有反应。只能靠干等,也许下午5点github响应会好一些???
这个编译完之后又是大屏的输出信息,还有warning,没事,不管。也会不断显示进度,98%。。。。。
编译成功!
3. 问题记录 3.1 问题和解决 3.1.1 安装cmake
cmake安装参考:
- ubuntu16.04安装cmake3.14.2步骤
- ubuntu18.04安装最新cmake3.15.2
- ✅Ubuntu 18.04下安装最新CMake及CMake简单使用
先查看系统版本
(base) ~ ! > cat /proc/version > Linux version 4.4.0-186-generic (buildd@lcy01-amd64-002) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) ) #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 (base) ~ > uname -a > Linux ubuntu 4.4.0-186-generic #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
看到自己本地的系统是16.04,根据自己的系统版本去找对应的安装方式。
cmake网站链接:https://cmake.org/download/,
- 截止到2021.10.14,cmake已经到了3.21.3,建议的是 cmake 3.0以上(推荐3.2.2版本),
- 参考其他博客,安一个新的应该没啥问题。
- 从官网中下载Binary distributions版本的,该版本是编译过的,下载后解压就可以用。
# 下载3.20.6的版本,其实都是从github上下载的,所以可能会有些慢。 wget https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-x86_64.tar.gz # 解压 tar zxvf cmake-3.20.6-linux-x86_64.tar.gz # 解压后可以稍微查看一下这个文件夹的内容 tree -L 2 cmake-3.20.6-linux-x86_64
bin下面有各种cmake家族的产品程序。
然后为了让系统可以找到cmake命令,有两种方式
- 修改配置(这里有一定的隐患,我目前用的zsh的shell,而不是bash的shell)
# 打开个人path配置 vim~/.bashrc # 在末尾添加如下的内容 export PATH=/home/hsn/cmake-3.15.2-Linux-x86_64/bin:$PATH # 接着在终端source一下.bashrc文件让path立即生效 source ~/.bashrc
- 创建软链接(还是直接把这个cmake软件放到系统默认目录下好了)
# 这里注意路径 mv cmake-3.20.6-linux-x86_64 /opt/cmake-3.20.6 # 注意 上面命令执行一次,那个文件夹就移动走了,可能需要sudo执行 cd /opt ls # 就可以看到转移后的情况了 # 然后创建软链接 可能也需要 sudo ln -sf /opt/cmake-3.20.6/bin/* /usr/bin/
配置好了之后,使用cmake --version看一下
cmake --version > cmake version 3.20.6 CMake suite maintained and supported by Kitware (kitware.com/cmake).3.1.2 bison安装报错
dpkg: error processing package ppp (–configure): subprocess installed post-installation script ret
这主要是由于不完全安装导致的。解决方式是删除或编辑安装信息文件。
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults insserv: Service gdm has to be enabled to start service pppd-dns insserv: exiting now! update-rc.d: error: insserv rejected the script header dpkg: error processing package `ppp` (--configure): subprocess installed post-installation script returned error exit status 1 Setting up m4 (1.4.17-2ubuntu1) ... Setting up libbison-dev:amd64 (2:3.0.2.dfsg-2) ... Setting up bison (2:3.0.2.dfsg-2) ... update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode Processing triggers for man-db (2.7.5-1) ... Processing triggers for install-info (6.1.0.dfsg.1-5) ... Errors were encountered while processing: ppp E: Sub-process /usr/bin/dpkg returned an error code (1)
参考:
- dpkg: error processing package bluez (–configure) 解决方法
- dpkg: error processing package *** (–configure)错误解决办法
$ sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ # 移动到别的新房 $ sudo mkdir /var/lib/dpkg/info/ # 新建一个文件 $ sudo apt-get update # 重新安装素有的 $ sudo apt-get -f install # 上面那步执行完就是下面的截图,安装bison时,出错时候的依赖包是 ppp $ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/ # 把新生效的都移回去 $ sudo rm -rf /var/lib/dpkg/info # 删除刚刚建的用作临时 *** 作的文件夹 $ sudo mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/ # 再整个都移回来3.1.3 java jdk安装
- 但是并不建议直接修改配置文件,
sudo add-apt-repository ppa:openjdk-r/ppa > sudo: add-apt-repository: command not found sudo apt-get install software-properties-common # 为了使用 命令 sudo apt-get update
参考:
- ✅ Linux之Ubuntu18.04安装Java JDK8的三种方式
- ✅Unable to locate package错误解决办法以及jdk的切换
- Ubuntu安装java
- Ubuntu 18.04 安装java8
- 这个人博主应该是AnyQ的维护人员之一,issue上放的解决方案就是他的博客:AnyQ如何配置solr动态读取数据库——AnyQ系列之二
- CSDN专栏(主要就是使用AnyQ的):问答-开源问答系统
- CSDN博客:搭建AnyQ
- 知乎文章:II AnyQ对话框架的安装与运行
- 机器之心文章:百度开源 FAQ 问答系统—AnyQ
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)