postgresql 在Apache AGE安装过程中出现“Flex is missing on your system”错误,即使已安装

fiei3ece  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(7)|浏览(397)

我正在按照this教程安装Apache AGE,并收到以下错误:

$ make && make install
***
ERROR: `flex` is missing on your system. It is needed to create the
file `src/backend/parser/ag_scanner.c`. You can either get flex from a GNU mirror
site or download an official distribution of PostgreSQL, which
contains pre-packaged flex output.
***
make: *** [/usr/local/pgsql/lib/pgxs/src/makefiles/../../src/Makefile.global:758
: src/backend/parser/ag_scanner.c] Error 1
$ flex --version
flex 2.6.4

正如你所看到的,我已经安装了Flex,但它给了我这个错误。
我试过重新安装Flex,但无济于事。

m528fe3b

m528fe3b1#

我建议您重新安装所有要求,然后重新安装PostgreSQL。如果您是从软件包管理安装,请确保您安装了版本11、12或13的postgresqlpostgresql-server-dev。默认情况下,二进制文件安装在目录/usr/lib/postgresql/{version}/bin中,其中{version}是您安装的PostgreSQL版本(例如:13)。
之后,您可以尝试AGE的干净安装。首先,配置PATH变量,并通过运行以下命令设置PG_CONFIG变量来安装AGE:

export PATH=/usr/lib/postgresql/{version}/bin
sudo make PG_CONFIG=/usr/lib/postgresql/{version}/bin/pg_config install

如果你想了解如何通过Apache AGE的包管理安装PostgreSQL的详细教程,你可以参考这篇文章:Step-by-Step Guide to Install PostgreSQL via Package Management for Apache AGE on Ubuntu

cgyqldqp

cgyqldqp2#

似乎make不知道flex存在于您的系统中。
请在尝试makemake install之前再次尝试运行./configure

gj3fmq9x

gj3fmq9x3#

以sudo的形式运行make命令。问题可能在于sudo和非sudo环境的不同。

uurity8g

uurity8g4#

再次执行此命令sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison。然后执行抛出错误的命令。检查您的PostgreSQL和年龄版本。因为age只支持PostgreSQL 11和12。
如果上述说明不起作用。.我建议您重新开始,删除之前安装的文件,并按照以下步骤顺利安装年龄:

安装依赖项:

首先,我们将安装age For,创建一个新目录和一个子目录:

mkdir age_installation
cd age_installation
mkdir pg
cd pg

在开始安装Apache Age之前,请使用以下命令下载一些重要的库。由于我们专门使用Linux来安装apache age,因此我们将使用以下命令。
请记住,下面的命令可能会因操作系统而异。
sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison

从源安装PostgreSQL:

首先,我们将从源代码安装PostgreSQL。我们需要一个年龄兼容的PostgreSQL版本。目前,age仅支持Postgres 11和12。
下载文件夹age-installation/pg中的文件

wget https://ftp.postgresql.org/pub/source/v11.18/postgresql-11.18.tar.gz && tar -xvf postgresql-11.18.tar.gz && rm -f postgresql-11.18.tar.gz

该命令将为Linux用户从工作目录中的Source下载并解压缩tar文件。安装PG:现在我们将安装PostgreSQL。

cd postgresql-11.18

# configure by setting flags
./configure --enable-debug --enable-cassert --prefix=$(path) CFLAGS="-ggdb -Og -fno-omit-frame-pointer"

# now install
make install

# go back
cd ../../

在上面的命令中,前缀标志将包含您希望安装PSQL的路径。将路径替换为括号中的路径。

年龄:

下载中:

从GitHub仓库下载年龄。例如,将其克隆到age_installation目录中。
git clone https://github.com/apache/age.git

安装:

使用PostgreSQL配置age。

cd age/
sudo make PG_CONFIG=/home/talhastinyasylum/Desktop/age_installation/pg/postgresql-11.18/bin/pg_config install
make PG_CONFIG=/home/talhastinyasylum/Desktop/age_installation/pg/postgresql-8/bin/pg_config installcheck

在上述命令中,PG_CONFIG需要pg_config文件的路径。第二个命令将检查安装是否成功。
在check命令结束时,您将收到一条消息,表明所有测试都通过了。
您也可以在下面的链接中查看更多:

  1. www.example. com
ma8fv8wu

ma8fv8wu5#

我假设你是从源代码安装的。在你开始安装PostgreSQL和AGE之前,有一些依赖关系需要安装在你的机器上,比如build-essential,libreadline-dev,zlib 1g-dev,flex和野牛。我在我的博客link中解释过。访问AGE documentation获取更多信息。
我建议你使用make clean删除所有对象,或者删除并重新提取postgresql源代码,然后重新运行。/configure使用make的前缀和标志来了解这些依赖关系。现在可以运行gmakegmake install来重新编译postgresql

wqsoz72f

wqsoz72f6#

请运行下面的命令来查看是否有flex可执行文件:

echo $PATH

如果flex变量不在PATH中,则可以通过以下方式配置它

export PATH=$PATH:{path to flex}/flex

您还可以将此命令添加到shell的启动文件(~/.bashrc或~/。zshrc),这样每次打开新的终端会话时,PATH变量都会自动更新。

r8uurelv

r8uurelv7#

问题可能是您在安装AGE时没有检查依赖项。请根据您的操作系统检查依赖项。Althpugh如果你正在使用ubntu尝试运行命令。
sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison
另外,我建议遵循本教程轻松安装guide to install AGE and AGE-Viewer。它有助于处理安装的依赖关系,还可以告诉安装的兼容版本。

相关问题