duckdb: Failed to download extension "httpfs" at …/linux_arm64_gcc4/…
What happens?
python-duckdb fails to download extensions
HTTP Error: Failed to download extension “httpfs” at URL “http://extensions.duckdb.org/v0.8.1/linux_arm64_gcc4/httpfs.duckdb_extension.gz”
To Reproduce
Inside a docker container (I’m using python:3.11-slim) for arm64.
docker run -it --rm python:3.11-slim /bin/bashpip install duckdbpythonimport duckdbduckdb.query("install 'httpfs';")
It seems like it is looking for extensions in linux_arm64_gcc4 and those don’t exist. I tried grabbing the ones at linux_arm64 and putting them in the ~/.duckdb/extensions/v0.8.1/linux_arm64_gcc4/ directory, but they fail to load.
OS:
docker on macOS on aarch64
DuckDB Version:
0.8.1
DuckDB Client:
python
Full Name:
michael conrad tadpol tilstra
Affiliation:
Exosite
Have you tried this on the latest master branch?
- I agree
Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there?
- I agree
About this issue
- Original URL
- State: closed
- Created a year ago
- Reactions: 17
- Comments: 71 (15 by maintainers)
Following https://github.com/duckdb/duckdb/issues/8035#issuecomment-1833331284, the sqlite_scanner extension works by building the extension and installing duckdb from that build:
In order to use the extension with Python I had to create the connection with
config={"allow_unsigned_extensions": "true"}and load the extension created under the above directory (sqlite_scanner/build/release/extension/sqlite_scanner/sqlite_scanner.duckdb_extension).@faridgt you might need something similar for postgres_scanner.
Looking into this further (now that I’m back from holidays), looks like there was some user error on my part. The results I pasted in my earlier comment were from my local dev build, which I had enabled the httpfs extension as part of. It isn’t actually built into any of the Python versions that I can see
What this actually means is that we need to update the DuckDB Python extensions job to build for linux_arm64 as well as amd64
Hey! Any news on this issue? This should affect many people using containers on their Apple silicon Macs. I might try to help if given some pointers.
Thanks!
Given the solution leaves us (those who develop/deploy on arm under docker) without full support…
hope this helps.
Hello everyone,
This thread has been quite frequently commented on in the last few months.
To clarify the status of the
linux_arm64_gcc4extensions, I added the following line to the working with extensions page:The rationale behind this is that distributing these packages would require a complex CI setup that’s difficult to maintain and likely incurs a large cost to run. Extensions can still be built manually for this platform.
Gabor
For those that want a ready to use image, I just pushed
phidata/duckdb:0.9.2built from source.Run it using:
I’m subscribed to this ticket and got confused by all this hubbub from people facing problems, so I did the Docker-based reproduction steps at the top of the ticket (and expanded a bit on them) and I see it working just fine:
The
python:3.11-slimimage is currently based on Debian 12 (Bookworm); you may get different results on other operating systems, but that’s down to those OSes.Also I don’t know anything about Rust, but this ticket was very clearly filed to cover the DuckDB Python extension, which is a completely different matter than the Rust API.
With duckdb v0.10.0, I’m facing the invalid ELF header issue on linux_amd64_gcc4
I am following those instructions but have one little issue related to postgres extension /postgres_scanner/src/include/postgres_utils.hpp:12:10: fatal error: libpq-fe.h: No such file or directory I installed libq but still not resolved apt-get install libpq-dev
Update: it works after I edit the reference to libpq-fe.h: edit postgres_scanner/src/include/postgres_utils.hpp - change to #include “/usr/include/postgresql/libpq-fe.h”
edit postgres_scanner/src/postgres_scanner.cpp - change #include “/usr/include/postgresql/libpq-fe.h”
@acirtep one note as we do python -m pip install . no need to load extension manually just a normal install and load will works as the extension already deployed as part of the python package
million thanks @acirtep
Thanks for the update, @Mause. I’ve subscribed to the following GitHub issue to make sure I get updates about linux_arm64 runners: https://github.com/actions/runner-images/issues/5631 (it’s locked, so I’m hoping it’s still relevant).
Would you consider trying one of these options in the meantime?
I can confirm that I’m running into these issues as well and that having a sense of the timelines or priorities here would help plot out things on my end too regarding whether it’d be more prudent to wait or to continue to iterate on on the self-build process.
You can find the extensions in the
builddirectory, e.g.:DuckDB can install from a local path, so you can run the SQL query to install an extension:
@stanoswald I thought about your comment for a while longer, and realized we could probably update the manylinux standard version we compile for to also update the version of gcc we use. While this will fix this issue, it will also mean dropping support for some very old Linux versions, so we’re going to test it out first before we commit
In summary, thanks for the comment!
We’re running into the same issue at Hugging Face:
Happening in a linux docker container on mac m2