当前位置:   article > 正文

ubuntu安装软件包及问题集锦apt_bash: add-apt-repository: command not found

bash: add-apt-repository: command not found

     以下各种问题是在docker的ubunt20.04容器中操作

1.bash: add-apt-repository: command not found

原因:add-apt-repository包未安装

解决:执行如下命令

sudo apt-get install software-properties-common python-software-properties

2.安装gcc 9

  1. sudo apt-get update
  2. sudo apt-get install build-essential

该命令会安装很多软件包,其中包括gccg++make

3.安装cmake

Ubuntu16.04安装cmake3.14.5_天启的博客-CSDN博客

4.安装redis

  1. #更新
  2. sudo apt-get update
  3. #安装redis
  4. sudo apt-get install redis-server
  5. #查看redis服务状态
  6. ps -ef |grep redis

配置redis

1.设置redis端口

默认端口为6379,可以修改为自己想要的

2.设置密码

 3.允许远程访问

目前只允许本地访问,要允许远程连接,需要注释掉#bind 127.0.0.1::1之前的

 启动连接redis

1.启动redis 服务

终端执行redis-server

 2.连接redis

本地启动 redis-cli
远程连接(需要本地安装redis客户端) redis-cli -h host(远程ip) -p port(端口号) -a password(密码)

5.安装python3.7.12

1)下载

wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz

 2)解压

 tar xvJf Python-3.7.12.tar.xz

3)安装依赖

sudo apt install build-essential libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev zlib1g-dev -y

4)编译

  1. ./configure --enable-optimizations
  2. make&&sudo make install

此时,通过python3可以使用python

5)设置软连接

有时python默认的是python2.x,每次输入python3比较麻烦,可以更改设置

这种方式比较慢,另一种方式:

  1. #更新
  2. apt-get update
  3. #安装必要组件
  4. apt install software-properties-common
  5. #添加PPA存储库
  6. add-apt-repository ppa:deadsnakes/ppa
  7. #安装
  8. sudo apt update
  9. sudo apt install python3.7

6安装pip

  1. #安装pip,会同时安装python和pip
  2. apt-get install python3-pip
  3. #升级
  4. pip3 install --upgrade pip
  5. #卸载
  6. apt-get remove python3-pip

结果如下

要同时安装python3.7和pip3.7可以如下

  1. apt-get update
  2. apt install software-properties-common -y //需要手动选择时区,可在dockerfile中设置
  3. add-apt-repository ppa:deadsnakes/ppa -y
  4. apt search python3.7
  5. apt install python3.7 -y
  6. python3.7 -V #查看
  7. ln -sf /usr/bin/python3.7 /usr/bin/python3 #将指定版本切换为Python3.7
  8. #安装pip3.7
  9. apt-get install curl -y
  10. apt-get install vim -y
  11. curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  12. apt install python3.7-distutils -y
  13. apt-get install python3.7-dev -y
  14. python3.7 get-pip.py
  15. //安装成功
  16. # 安装 launchpadlib
  17. sudo pip install launchpadlib
  18. 测试是否安装成功
  19. pip3.7 --version
  20. 如果有遇到 C 实现的 pip 安装不了, 则需要安装。
  21. sudo apt-get install python3.7-dev
  22. ##安装指定版本的python包,通过==指定
  23. pip3.7 install pyarrow==6.0.0

6.1安装kafka-python,pymysql

  1. 安装kafka-python,pymysql
  2. pip3 install kafka-python
  3. pip3 install pymysql

6.2安装numpy

      ubuntu安装numpy可以使用如下命令

  1. apt-get update
  2. pip3 install numpy

    因为上述安装的是python3,若不是,则使用python-numpy

验证numpy

  1. root@9583aba11679:/install# python3
  2. Python 3.7.12 (default, Mar 3 2022, 12:29:54)
  3. [GCC 9.3.0] on linux
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> from numpy import *
  6. >>> eye(4)
  7. array([[1., 0., 0., 0.],
  8. [0., 1., 0., 0.],
  9. [0., 0., 1., 0.],
  10. [0., 0., 0., 1.]])
  11. >>>

      切记不可将文件名命名为numpy.py,否则运行python3 numpy.py时会出错(若numpy.py文件内使用了numpy模块)

6.3安装其他

  1. #安装scipy
  2. pip3 install scipy
  3. #安装pandas
  4. pip3 install pandas
  5. #安装matplotlib
  6. pip3 install matplotlib
  7. #安装Django,此处安装的3.0.6版本,此处可以修改版本
  8. pip3 install Django==3.0.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

6.4安装pyton3.9

  1. apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
  2. wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
  3. tar xzf Python-3.9.0.tgz
  4. cd Python-3.9.0
  5. ./configure --enable-optimizations
  6. make
  7. make install
  8. root@8400ffb964bb:/# python3
  9. Python 3.9.0 (default, Sep 1 2022, 07:58:41)
  10. [GCC 9.4.0] on linux
  11. Type "help", "copyright", "credits" or "license" for more information.
  12. >>>
  13. 安装python3.9对应的pip,要使用python3.9执行get-pip.py,下述的python3已经执行python3.9
  14. curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  15. python3 get-pip.py
  16. root@8400ffb964bb:/# pip -V
  17. pip 22.2.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

另一种方式

  1. apt-get update
  2. apt install software-properties-common
  3. add-apt-repository ppa:deadsnakes/ppa
  4. apt install python3.9
  5. python3
  6. root@0c5624fa0249:/# python3
  7. Python 3.8.10 (default, Jun 22 2022, 20:18:18)
  8. [GCC 9.4.0] on linux
  9. Type "help", "copyright", "credits" or "license" for more information.
  10. 删除原来的,建立软连接
  11. rm -rf /usr/bin/python3
  12. ln -s /usr/local/bin/python3 /usr/bin/python3
  13. 安装pip,并升级到最新版
  14. apt-get install python3-pip -y
  15. pip3 install --upgrade pip

关于pip与pip3

  1. 如果只安装了python2.x,则只能使用pip
  2. 如果只安装了python3.x,则pip和pip3是等价的
  3. 如果同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3

7.安装boost-1.78

此处主要是获得boost-python模块,因为使用了python3.7

1)下载解压

  1. wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz
  2. tar xvJf boost_1_78_0.tar.gz

2)安装,进入解压后的目录

  1. ./bootstrap.sh --with-python=/usr/local/bin/python3
  2. ./bootstrap.sh --with-libraries=system,thread,python
  3. ./b2 install
  4. ./b2 cxxflags=-fPIC cflags=-fPIC --c++11

会在usr/local目录下分别生成include和lib目录

此时得到

3)安装,进入解压后的目录

  1. ./bootstrap.sh --with-python=/usr/local/bin/python3
  2. ./b2 install
  3. ./bootstrap.sh --with-python=/usr/bin/python3 --prefix=/usr/local/boost-1.78
  4. ./b2 install
  5. 其中/usr/bin/python3 软连接到/usr/local/bin/python3

同样会在/usr/local目录下生成include和lib目录,和2)的include目录是一样的,此时lib目录为

编译安装libcurl

  1. wget https://curl.se/download/curl-7.81.0.tar.gz
  2. tar zxvf curl-7.81.0.tar.gz
  3. cd /curl-7.81.0
  4. ./configure --prefix=/usr/local/curl-7.81.0/ --with-wolfssl
  5. make
  6. make install

8.安装glibc

     由于原来的glibc太高,需要降级,ldd  --version查看glibc版本

  1. root@9697b27b4cca:/glibc-2.17# ldd --version
  2. ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31
  3. Copyright (C) 2020 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions. There is NO
  5. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  6. Written by Roland McGrath and Ulrich Drepper.

安装glibc2.17步骤如下

  1. wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
  2. tar xzvf glibc-2.17.tar.gz
  3. cd glibc-2.17
  4. mkdir build
  5. cd build
  6. ../configure --prefix=/opt/glibc-2.17
  7. make
  8. make install

9.安装neo4j

推荐第三种方式

方式1

  1. #下载
  2. wget https://neo4j.com/business-subscription/?edition=enterprise&release=4.4.4&flavour=unix
  3. #解压
  4. cd /neo4j-community-4.4.4/bin
  5. ./neo4j console
  6. 这一步会提示没有java环境,需要安装Java SDK

安装Java jdk 

  1. sudo apt-get update
  2. sudo apt-get -y install openjdk-11-jdk
  3. java --version

继续操作,执行./neo4j console,结果如下

也可以使用./neo4j start这种方式启动。 

这种方式使用wget经常会失败,不方便

方式2:

  1. #1.更新软件包
  2. apt-get update
  3. #2.安装一些必需软件包,将允许apt使用https链接软件包
  4. apt install apt-transport-https ca-certificates curl software-properties-common -y
  5. #3.添加Neo4j包存储库的GPG密钥到系统
  6. curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | apt-key add -
  7. #4.将neo4j 4.4存储库添加到系统的APT源中
  8. add-apt-repository "deb https://debian.neo4j.com stable 4.1"
  9. #5.安装neo4j,此步骤会同时安装java11,和cypher-shell(用来与neo4j交互)
  10. apt install neo4j -y

这种方式安装的有点多,不方便。

方式3:

第一步:安装neo4j

  1. #1.添加GPG
  2. wget -O - https://debian.neo4j.com/neotechnology.gpg.key | apt-key add -
  3. #2.将Neo4j添加到列表中,此处可以指定要安装的neo4j版本,此处指定4.4
  4. echo 'deb https://debian.neo4j.com stable 4.4' | tee /etc/apt/sources.list.d/neo4j.list
  5. #3.更新
  6. apt-get update
  7. #4.查看可以的4.4版本
  8. apt list -a neo4j
  9. #5.安装neo4j 4.4.4,输入选项631
  10. apt install neo4j=1:4.4.4 -y
  11. #6.查看neo4j版本号
  12. neo4j --version
  13. neo4j 4.4.4

第二步:安装java jdk

上一步会自动安装java jdk,若未安装,则手动安装

  1. #安装java jdk
  2. apt-get update
  3. sudo apt-get -y install openjdk-11-jdk
  4. java --version

第三步:启动neo4j

  1. which neo4j
  2. neo4j start

  结果如下:

9.1配置

        配置文件的位置在etc/neo4j/neo4j.conf

  1. # 监听地址(四个0表示所有IP地址可以访问,默认为localhost,仅本机可以访问)
  2. dbms.connectors.default_listen_address=0.0.0.0
  3. # 指定http监听端口(默认为7474,在此可以指定服务器开放的端口号,例如此处的5002
  4. dbms.connector.http.listen_address=:5002
  5. # 指定bolt监听端口(默认为7687,在此可以指定服务器开放的端口号,例如此处的5003
  6. dbms.connector.bolt.listen_address=:5003
  7. # 指定数据库文件存储路径【默认为系统的/var/lib/neo4j/data,考虑数据存储安全,因此不建议存储到默认的系统磁盘目录下,进行自定义配置比较好】
  8. dbms.directories.data=/var/lib/neo4j/data
  9. # 指定默认的数据库名称【graph.db】
  10. dbms.active_database=graph.db

1.允许远程访问

2.neo4j服务开机自启动

     neo4j没有设置为系统重新启动时启动,设置如下

9.2使用neo4j

     主要介绍命令行如何使用neo4j,提供cypher-shell与neo4j交互,默认的用户名、密码都是neo4j,首次使用需要修改密码,这里我将新密码修改为newneo4j

输入:exit退出cypher-shell 

在其他服务连接neo4j时可能报如下错误

  1. {
  2. "errors" : [ {
  3. "code" : "Neo.ClientError.Security.Unauthorized",
  4. "message" : "No authentication header supplied."
  5. } ]
  6. }

解决方法如下:

  1. 停止neo4j服务,并且删除data/dbms/auth,重新启动
  2. 修改neo4j.conf配置文件,取消验证机制,修改如下:
dbms.security.auth_enabled=false

10.安装elasticsearch

1)安装并启动es

  1. #1.导入es公共GPG密钥
  2. wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
  3. #2.
  4. apt-get install apt-transport-https
  5. #2.添加es软件源
  6. echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
  7. #4.更新软件源
  8. apt-get update
  9. #5.安装es
  10. apt-get install elasticsearch
  11. #6.启动es
  12. /etc/init.d/elasticsearch start
  13. #查看es状态
  14. /etc/init.d/elasticsearch status

2)使用curl 验证

  1. #终端输入curl http://localhost:9200
  2. curl http://localhost:9200
  3. #返回内容如下
  4. {
  5. "name" : "cd4e0f85340e",
  6. "cluster_name" : "elasticsearch",
  7. "cluster_uuid" : "c9VWYT4KS5Wi4gum0LcWxg",
  8. "version" : {
  9. "number" : "7.17.1",
  10. "build_flavor" : "default",
  11. "build_type" : "deb",
  12. "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
  13. "build_date" : "2022-02-23T22:20:54.153567231Z",
  14. "build_snapshot" : false,
  15. "lucene_version" : "8.11.1",
  16. "minimum_wire_compatibility_version" : "6.8.0",
  17. "minimum_index_compatibility_version" : "6.0.0-beta1"
  18. },
  19. "tagline" : "You Know, for Search"
  20. }

   3)修改配置文件

4)允许远程访问

5)设置随docker容器或主机开机自启动

在安装es时会提示使用

  1. ### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
  2. sudo systemctl daemon-reload
  3. sudo systemctl enable elasticsearch.service
  4. ### You can start elasticsearch service by executing
  5. sudo systemctl start elasticsearch.service

6)安装kibana

  1. wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.1-linuxx86_64.tar.gz
  2. tar -xzf kibana-7.17.1-linux-x86_64.tar.gz
  3. cd kibana-7.17.1-linux-x86_64/
  4. ./bin/kibana --allow-root

10.1简单使用

  1. #1.创建索引
  2. curl -XPOST 'localhost:9200/test'
  3. #插入数据
  4. curl -XPUT 'localhost:9200/student/user/1?pretty' -H 'Content-Type: application/json' -d '{"name": "wqh","gender":"male","age":"18","about":"I will carry you","interests":["cs","it"]}'

11.Ubuntu安装软件时自动选择Geographic area和Time zone

        在ubuntu安装一些软件时经常需要手动选择

     主要是因为从tzdata2018开始,系统默认采用交互方式,导致安装一些软件的过程中涉及到配置tzdata时需要手动输入。

      docker容器中解决方法如下:ubuntu20.04 

  1. #1.设置tzdata前端类型(通过export)
  2. export DEBIAN_FRONTEND=noninteractive
  3. #2.安装tzdata,此时采用的默认时区为etc/utc
  4. apt-get install -y tzdata
  5. #3.修改时区
  6. ln -fs /usr/share/zoneinfo/Europe/Stockholm /etc/localtime
  7. #4.重新配置tzdata,使时区设置生效
  8. dpkg-reconfigure -f noninteractive tzdata
  9. #查看时区
  10. root@cd4e0f85340e:/# date
  11. Mon Mar 21 18:22:20 HKT 2022

      若是在dockerfile中可以使用ENV设置环境变量,在第一个RUN之前添加如下命令

DEBIAN_FRONTEND=noninteractive

然后安装tzdata的步骤和上面一样即可。

12.vim 中文乱码

 1)临时解决办法

每次打开vim后,输入

:set encoding=utf-8

2)一次性解决办法

  1. cd ~/.vimrc
  2. ##输入如下内容
  3. set encoding=utf-8

保存退出,再打开vim文件,可以显示中文了。

13.安装mysql

安装前准备工作

  1. ##安装前,检测是否有自带的MySQL
  2. rpm -qa |grep mysql
  3. ##若提示rpm not found,则先安装rpm apt-get install rpm -y
  4. ##若有自带MySQL,先卸载
  5. rpm -e mysql //普通方式卸载
  6. rpm -e --nodeps mysql //强力方式卸载

1)下载

  1. wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

2)解压

  1. tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

3)移动并重命名

  1. ##移动
  2. mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/
  3. ##重命名
  4. cd /usr/local
  5. mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql-5.7.26

4)创建MySQL用户组和用户

  1. ##创建MySQL用户组和用户
  2. groupadd mysql
  3. useradd -r -g mysql mysql

5)创建MySQL数据目录并修改权限

  1. ##创建MySQL数据目录
  2. cd /
  3. mkdir -p data
  4. cd data/
  5. mkdir -p mysql
  6. ##赋予权限
  7. chown mysql:mysql -R /data/mysql

6)配置参数

  1. vim /etc/my.cnf
  2. 内容为
  3. [mysqld]
  4. bind-address=0.0.0.0
  5. port=3306
  6. user=mysql
  7. basedir=/usr/local/mysql-5.7.26
  8. datadir=/data/mysql
  9. socket=/tmp/mysql.sock
  10. log-error=/data/mysql/mysql.err
  11. pid-file=/data/mysql/mysql.pid
  12. #character config
  13. character_set_server=utf8mb4
  14. symbolic-links=0

7)初始化MySQL

  1. cd /usr/local/mysql-5.7.26/bin/
  2. ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.26/ --datadir=/data/mysql/ --user=mysql --initialize
  3. 这一步可能报错./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
  4. 解决:
  5. apt-get install libaio* numactl -y
  6. 重新执行上一步即可

8)查看初始密码

vim /data/mysql/mysql.err

9)启动MySQL,修改密码

../support-files/mysql.server start

这一步步需要

10)添加软连接并启动

  1. ln -s /usr/local/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysql
  2. ln -s /usr/local/mysql-5.7.26/bin/mysql /usr/bin/mysql
  3. service mysql restart

查看运行情况

  1. ps -ef |grep mysql
  2. root@8f333be57d2c:/usr/local/mysql-5.7.26/bin# ps -ef |grep mysql
  3. root 3974 1 0 11:28 pts/0 00:00:00 /bin/sh /usr/local/mysql-5.7.26/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid
  4. mysql 4197 3974 0 11:28 pts/0 00:00:10 /usr/local/mysql-5.7.26/bin/mysqld --basedir=/usr/local/mysql-5.7.26 --datadir=/data/mysq --plugin-dir=/usr/local/mysql-5.7.26/lib/plugin --user=mysql --log-error=/data/mysql/mysql.err --pid-file=/data/mysql/mysql.pid --socket=/tmp/mysql.sock --port=3306
  5. root 4290 1 0 12:39 pts/0 00:00:00 grep --color=auto mysql

11)启动mysql,修改密码

mysql -u root -p

可能会提示确实依赖,安装如下

apt-get install libncurses5

修改密码,输入

  1. SET PASSWORD = PASSWORD('123456');
  2. ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  3. flush privileges;
  1. root@8f333be57d2c:/usr/local/mysql-5.7.26/bin# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 11
  5. Server version: 5.7.26
  6. Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql> set password=password('123456')
  12. -> ;
  13. Query OK, 0 rows affected, 1 warning (0.01 sec)
  14. mysql> alter user 'root'@'localhost' password expire never;
  15. Query OK, 0 rows affected (0.01 sec)
  16. mysql> flush privileges;
  17. Query OK, 0 rows affected (0.00 sec)
  18. mysql> exit
  19. Bye

现在再执行mysql -u root -p 可以输入123456进入了

12.1解决MySQL表中中文乱码或显示为问号

1)进入MySQL输入如下指令查看编码格式

  1. show variables like 'char%';
  2. mysql> show variables like 'char%';
  3. +--------------------------+-----------------------------------------+
  4. | Variable_name | Value |
  5. +--------------------------+-----------------------------------------+
  6. | character_set_client | latin1 |
  7. | character_set_connection | latin1 |
  8. | character_set_database | utf8 |
  9. | character_set_filesystem | binary |
  10. | character_set_results | latin1 |
  11. | character_set_server | utf8 |
  12. | character_set_system | utf8 |
  13. | character_sets_dir | /usr/local/mysql-5.7.26/share/charsets/ |
  14. +--------------------------+-----------------------------------------+
  15. 8 rows in set (0.01 sec)

2)修改/etc/my.cnf

  1. [mysqld]
  2. bind-address=0.0.0.0
  3. port=3306
  4. user=mysql
  5. basedir=/usr/local/mysql-5.7.26
  6. datadir=/data/mysql
  7. socket=/tmp/mysql.sock
  8. log-error=/data/mysql/mysql.err
  9. pid-file=/data/mysql/mysql.pid
  10. #character config
  11. init_connect='SET NAMES utf8' ##新增
  12. character_set_server=utf8 ##修改
  13. symbolic-links=0
  14. [mysql]
  15. default-character-set=utf8 ##新增

3)重启mysql

service mysql restart
apt-get install libatlas-base-dev

14.编译安装OpenCV4.6

参考在Ubuntu20.04 LTS中安装OpenCV4.5.4_wanghq2013的博客-CSDN博客

1)下载4.6源码

  1. apt-get install git -y
  2. git clone https://github.com/opencv/opencv.git

2)安装依赖

依次安装gcc,cmake,python3---gcc9.3,cmake3.14.5,python3.7

为支持GUI , Camera (v4l)和Media (ffmpeg, gstreamer) 等,安装GTK,

  1. apt-get install libavcodec-dev libavformat-dev libswscale-dev
  2. apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

为支持gtk3*

apt-get install libgtk-3-dev

可选项用于支持PNG, JPEG, JPEG2000, TIFF, WebP 等图片格式。

  1. apt-get install libpng-dev
  2. apt-get install libjpeg-dev
  3. apt-get install libopenexr-dev
  4. apt-get install libtiff-dev

3)设置安装路径

  1. cd opencv
  2. mkdir build
  3. cd build
  4. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.6 ..
  5. 或者
  6. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.6 -D_GLIBCXX_USE_CXX11_ABI=0 ..
  7. 该方式的目的在于关闭C++11 特性

也可以在CMakeLists.txt中设置

  1. add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
  2. 或者
  3. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")

4)安装

  1. make
  2. make install

15.编译arrow

编译CPP组件

官方文档见Building Arrow C++ — Apache Arrow v10.0.0

1)拉取指定分支

此时使用apache-arrow-9.0.0分支,更高的版本部分特性使用了C++17 

  1. git clone --recursive https://github.com/apache/arrow.git
  2. git checkout apache-arrow-9.0.0
  3. cd arrow/cpp
  4. mkdir build

2)修改CMakeLists.txt

指定使用C++14,且是以CXX11_ABI旧版本

  1. ##2.修改CMakeLists.txt
  2. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  3. SET(CMAKE_CXX_STANDARD 14)
  4. SET(CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")

3)编译

需要设置一些编译选项,parquet和plasma默认不编译,若需要,则需要指定

  1. #3.编译
  2. cd build
  3. cmake -DCMAKE_INSTALL_PREFIX=/arrow/cpp/build/install -DCMAKE_BUILD_TYPE=release -DARROW_PLASMA=ON -DARROW_PARQUET=ON -DARROW_PYTHON=ON ..
  4. make
  5. make isntall
  6. arrow-10.0以上的版本可以使用如下命令
  7. cmake -DCMAKE_INSTALL_PREFIX=/arrow/cpp/build/install -DCMAKE_BUILD_TYPE=release -DARROW_BUILD_EXAMPLES=ON -DARROW_BUILD_TESTS=ON -DARROW_PLASMA=ON -DARROW_PARQUET=ON -DARROW_CSV=ON -DARROW_BUILD_UTILITIES=ON -DARROW_FILESYSTEM=ON -DARROW_JSON=ON -DARROW_DATASET=ON ..

此时可在/arrow/cpp/build/install目录下看到include,lib,share三个目录

4)其他知识:

可选目标

  • -DARROW_BUILD_BENCHMARKS=ON:构建可执行基准。

  • -DARROW_BUILD_EXAMPLES=ON:构建使用 Arrow C++ API 的示例。

  • -DARROW_BUILD_INTEGRATION=ON:构建额外的可执行文件,用于在不同的 Arrow 实现之间练习协议互操作性。

  • -DARROW_BUILD_UTILITIES=ON:构建可执行实用程序。

  • -DARROW_BUILD_TESTS=ON:构建可执行的单元测试。

  • -DARROW_ENABLE_TIMING_TESTS=ON:如果构建单元测试,请启用那些依赖挂钟计时的单元测试(此标志在 CI 上被禁用,因为它会使测试结果不稳定)。

  • -DARROW_FUZZING=ON:构建模糊测试目标和相关的可执行文件。

可选组件

  • -DARROW_BUILD_UTILITIES=ON: 构建 Arrow 命令行实用程序
  • -DARROW_COMPUTE=ON:计算内核函数和其他支持
  • -DARROW_CSV=ON: CSV 阅读器模块
  • -DARROW_CUDA=ON:用于 GPU 开发的 CUDA 集成。取决于 NVIDIA CUDA 工具包。用于构建库的 CUDA 工具链可以使用$CUDA_HOME环境变量进行自定义。
  • -DARROW_DATASET=ON: 数据集 API,意味着文件系统 API
  • -DARROW_FILESYSTEM=ON: 用于访问本地和远程文件系统的文件系统 API
  • -DARROW_FLIGHT=ON:Arrow Flight RPC系统,至少依赖gRPC
  • -DARROW_FLIGHT_SQL=ON: 箭飞行 SQL
  • -DARROW_GANDIVA=ON: Gandiva 表达式编译器,依赖于 LLVM、Protocol Buffers 和 re2
  • -DARROW_GANDIVA_JAVA=ON: Java 的 Gandiva JNI 绑定
  • -DARROW_GCS=ON:使用 GCS 支持构建 Arrow(需要 GCloud SDK for C++)
  • -DARROW_HDFS=ON: Arrow 与 libhdfs 集成以访问 Hadoop 文件系统
  • -DARROW_JEMALLOC=ON: 构建基于 Arrow jemalloc 的分配器,默认开启
  • -DARROW_JSON=ON: JSON 阅读器模块
  • -DARROW_MIMALLOC=ON: 构建基于 Arrow mimalloc 的分配器
  • -DARROW_ORC=ON: Arrow 与 Apache ORC 的集成
  • -DARROW_PARQUET=ON: Apache Parquet 库和 Arrow 集成
  • -DPARQUET_REQUIRE_ENCRYPTION=ON: Parquet 模块化加密
  • -DARROW_PLASMA=ON: Plasma 共享内存对象存储
  • -DARROW_PLASMA_JAVA_CLIENT=ON: 为 Plasma 构建 Java 客户端
  • -DARROW_PYTHON=ON:此选项自 10.0.0 起已弃用。这将在未来的版本中删除。请改用 CMake 预设。或者,您可以直接启用ARROW_COMPUTEARROW_CSVARROW_DATASET、 ARROW_FILESYSTEMARROW_HDFSARROW_JSON
  • -DARROW_S3=ON:支持与 Amazon S3 兼容的文件系统
  • -DARROW_WITH_RE2=ON使用 re2 库构建对正则表达式的支持,默认情况下启用,并在何时ARROW_COMPUTE或是ARROW_GANDIVA时使用ON
  • -DARROW_WITH_UTF8PROC=ON: 使用 utf8proc 库构建对 Unicode 属性的支持,默认开启,并在ARROW_COMPUTEARROW_GANDIVA 时使用ON
  • -DARROW_TENSORFLOW=ON: 在启用 TensorFlow 支持的情况下构建 Arrow

ARROW中可用的压缩选项有

  • -DARROW_WITH_BROTLI=ON: 构建对 Brotli 压缩的支持
  • -DARROW_WITH_BZ2=ON: 构建对 BZ2 压缩的支持
  • -DARROW_WITH_LZ4=ON: 构建对 lz4 压缩的支持
  • -DARROW_WITH_SNAPPY=ON: 构建对 Snappy 压缩的支持
  • -DARROW_WITH_ZLIB=ON: 构建对 zlib (gzip) 压缩的支持
  • -DARROW_WITH_ZSTD=ON: 构建对 ZSTD 压缩的支持

        如果系统中安装了多个Python版本,则需要将参数传递给CMAKE,以便找到正确的可执行文件、头文件和库,如-DPython3_EXECUTABLE=<path/to/bin/python>让 CMake 选择您正在使用的 Python 可执行文件。

       对于旧版本的 CMake (<3.15),您可能需要通过-DPYTHON_EXECUTABLE 而不是-DPython3_EXECUTABLE.

编译python组件

  1. cd arrow/python
  2. 修改CMakeLists.txt
  3. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  4. SET(CMAKE_CXX_STANDARD 14)
  5. SET(CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
  6. mkdir build
  7. cd build
  8. cmake -DCMAKE_BUILD_TYPE=release ..

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/511919
推荐阅读
相关标签
  

闽ICP备14008679号