[Bug 2103828] Re: unixodbc-dev doesn't include odbc_config tool needed to locate header and library files.

Andreas Hasenack 2103828 at bugs.launchpad.net
Thu Apr 3 13:59:35 UTC 2025


Turns out this was done on purpose. I got a reply in the debug bug[1]:

  Debian never packaged odbc_config because the script got several things 
  wrong. See #422207 [1] for more details.

  odbc_config is also incompatible with Debian's multi-arch support, as it 
  only supports the host architecture.

  Anyone wanting to link with the odbc, odbccr or odbcinst libraries 
  should use pkg-config to get the headers and libraries as required.

  Packaging the script would also break multi-arch support.

  Here is a minimal example using cmake:

    cmake_minimum_required(VERSION 3.31)
    project(unixodbc_test)
    include(FindPkgConfig)
    pkg_check_modules(ODBC REQUIRED odbc)

We (Ubuntu) are therefore likely not going to reintroduce odbc_config,
specially not in an SRU.

@spierepf does the suggestion of using pkg-config work for you?


1. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1101206#10

** Changed in: unixodbc (Ubuntu)
       Status: Confirmed => Incomplete

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to unixodbc in Ubuntu.
https://bugs.launchpad.net/bugs/2103828

Title:
  unixodbc-dev doesn't include odbc_config tool needed to locate header
  and library files.

Status in unixodbc package in Ubuntu:
  Incomplete
Status in unixodbc package in Debian:
  New

Bug description:
  The unixodbc library includes a odbc_config tool that build systems
  can use to locate header and library files. This tool is not available
  in unixodbc-dev and so tools like CMake do not know where to find the
  library's headers and binary.

  $ lsb_release -rd
  No LSB modules are available.
  Description:	Ubuntu 24.04.2 LTS
  Release:	24.04

  $ apt-cache policy unixodbc-dev
  unixodbc-dev:
    Installed: 2.3.12-1ubuntu0.24.04.1
    Candidate: 2.3.12-1ubuntu0.24.04.1
    Version table:
   *** 2.3.12-1ubuntu0.24.04.1 500
          500 http://ca.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
          500 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages
          100 /var/lib/dpkg/status
       2.3.12-1build2 500
          500 http://ca.archive.ubuntu.com/ubuntu noble/main amd64 Packages

  I expected CMake to find the ODBC package when building a project that
  depends on unixodbc.

  $ cmake .. --debug-find-pkg=ODBC
  Running with debug output on for the 'find' commands for package(s) ODBC.
  CMake Debug Log at /usr/share/cmake-3.28/Modules/FindODBC.cmake:112 (find_program):
    find_program called with the following settings:

      VAR: ODBC_CONFIG
      NAMES: "odbc_config"
             "iodbc-config"
      Documentation: Path to unixODBC or iODBC config program
      Framework
        Only Search Frameworks: 0
        Search Frameworks Last: 0
        Search Frameworks First: 0
      AppBundle
        Only Search AppBundle: 0
        Search AppBundle Last: 0
        Search AppBundle First: 0
      CMAKE_FIND_USE_CMAKE_PATH: 1
      CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1
      CMAKE_FIND_USE_INSTALL_PREFIX: 1

    find_program considered the following locations:

      /home/peter/.local/share/reflex/bun/bin/odbc_config
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/odbc_config
      /home/peter/.pyenv/shims/odbc_config
      /home/peter/.pyenv/bin/odbc_config
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/odbc_config
      /home/peter/.sdkman/candidates/maven/current/bin/odbc_config
      /home/peter/.sdkman/candidates/java/current/bin/odbc_config
      /home/peter/.sdkman/candidates/grails/current/bin/odbc_config
      /home/peter/.sdkman/candidates/gradle/current/bin/odbc_config
      /home/peter/.cargo/bin/odbc_config
      /home/peter/.nvm/versions/node/v18.9.1/bin/odbc_config
      /home/peter/.local/bin/odbc_config
      /usr/local/sbin/odbc_config
      /usr/local/bin/odbc_config
      /usr/sbin/odbc_config
      /usr/bin/odbc_config
      /sbin/odbc_config
      /bin/odbc_config
      /usr/games/odbc_config
      /usr/local/games/odbc_config
      /snap/bin/odbc_config
      /home/peter/.local/share/JetBrains/Toolbox/scripts/odbc_config
      /home/peter/.local/share/reflex/bun/bin/iodbc-config
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/iodbc-config
      /home/peter/.pyenv/shims/iodbc-config
      /home/peter/.pyenv/bin/iodbc-config
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/iodbc-config
      /home/peter/.sdkman/candidates/maven/current/bin/iodbc-config
      /home/peter/.sdkman/candidates/java/current/bin/iodbc-config
      /home/peter/.sdkman/candidates/grails/current/bin/iodbc-config
      /home/peter/.sdkman/candidates/gradle/current/bin/iodbc-config
      /home/peter/.cargo/bin/iodbc-config
      /home/peter/.nvm/versions/node/v18.9.1/bin/iodbc-config
      /home/peter/.local/bin/iodbc-config
      /usr/local/sbin/iodbc-config
      /usr/local/bin/iodbc-config
      /usr/sbin/iodbc-config
      /usr/bin/iodbc-config
      /sbin/iodbc-config
      /bin/iodbc-config
      /usr/games/iodbc-config
      /usr/local/games/iodbc-config
      /snap/bin/iodbc-config
      /home/peter/.local/share/JetBrains/Toolbox/scripts/iodbc-config

    The item was not found.

  Call Stack (most recent call first):
    CMakeLists.txt:3 (FIND_PACKAGE)

  
  CMake Debug Log at /usr/share/cmake-3.28/Modules/FindODBC.cmake:160 (find_path):
    find_path called with the following settings:

      VAR: ODBC_INCLUDE_DIR
      NAMES: "sql.h"
      Documentation: Path to a file.
      Framework
        Only Search Frameworks: 0
        Search Frameworks Last: 0
        Search Frameworks First: 0
      AppBundle
        Only Search AppBundle: 0
        Search AppBundle Last: 0
        Search AppBundle First: 0
      CMAKE_FIND_USE_CMAKE_PATH: 1
      CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1
      CMAKE_FIND_USE_INSTALL_PREFIX: 1

    find_path considered the following locations:

      /home/peter/.local/share/reflex/bun/bin/sql.h
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/sql.h
      /home/peter/.pyenv/shims/sql.h
      /home/peter/.pyenv/bin/sql.h
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/sql.h
      /home/peter/.sdkman/candidates/maven/current/bin/sql.h
      /home/peter/.sdkman/candidates/java/current/bin/sql.h
      /home/peter/.sdkman/candidates/grails/current/bin/sql.h
      /home/peter/.sdkman/candidates/gradle/current/bin/sql.h
      /home/peter/.cargo/bin/sql.h
      /home/peter/.nvm/versions/node/v18.9.1/bin/sql.h
      /home/peter/.local/bin/sql.h
      /usr/local/sbin/sql.h
      /usr/local/bin/sql.h
      /usr/sbin/sql.h
      /usr/bin/sql.h
      /sbin/sql.h
      /bin/sql.h
      /usr/games/sql.h
      /usr/local/games/sql.h
      /snap/bin/sql.h
      /home/peter/.local/share/JetBrains/Toolbox/scripts/sql.h

    The item was not found.

  Call Stack (most recent call first):
    CMakeLists.txt:3 (FIND_PACKAGE)

  
  CMake Debug Log at /usr/share/cmake-3.28/Modules/FindODBC.cmake:170 (find_library):
    find_library called with the following settings:

      VAR: ODBC_LIBRARY
      NAMES: "odbc"
             "iodbc"
             "unixodbc"
      Documentation: Path to a library.
      Framework
        Only Search Frameworks: 0
        Search Frameworks Last: 0
        Search Frameworks First: 0
      AppBundle
        Only Search AppBundle: 0
        Search AppBundle Last: 0
        Search AppBundle First: 0
      CMAKE_FIND_USE_CMAKE_PATH: 1
      CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
      CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1
      CMAKE_FIND_USE_INSTALL_PREFIX: 1

    find_library considered the following locations:

      /home/peter/.local/share/reflex/bun/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.local/share/reflex/bun/bin/libodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/odbc/libodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/libodbc(\.so|\.a)
      /home/peter/.pyenv/shims/odbc/libodbc(\.so|\.a)
      /home/peter/.pyenv/shims/libodbc(\.so|\.a)
      /home/peter/.pyenv/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.pyenv/bin/libodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/libodbc(\.so|\.a)
      /home/peter/.cargo/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.cargo/bin/libodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/libodbc(\.so|\.a)
      /home/peter/.local/bin/odbc/libodbc(\.so|\.a)
      /home/peter/.local/bin/libodbc(\.so|\.a)
      /usr/local/sbin/odbc/libodbc(\.so|\.a)
      /usr/local/sbin/libodbc(\.so|\.a)
      /usr/local/bin/odbc/libodbc(\.so|\.a)
      /usr/local/bin/libodbc(\.so|\.a)
      /usr/sbin/odbc/libodbc(\.so|\.a)
      /usr/sbin/libodbc(\.so|\.a)
      /usr/bin/odbc/libodbc(\.so|\.a)
      /usr/bin/libodbc(\.so|\.a)
      /sbin/odbc/libodbc(\.so|\.a)
      /sbin/libodbc(\.so|\.a)
      /bin/odbc/libodbc(\.so|\.a)
      /bin/libodbc(\.so|\.a)
      /usr/games/odbc/libodbc(\.so|\.a)
      /usr/games/libodbc(\.so|\.a)
      /usr/local/games/odbc/libodbc(\.so|\.a)
      /usr/local/games/libodbc(\.so|\.a)
      /snap/bin/odbc/libodbc(\.so|\.a)
      /snap/bin/libodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/odbc/libodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/libodbc(\.so|\.a)
      /home/peter/.local/share/reflex/bun/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.local/share/reflex/bun/bin/libiodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/odbc/libiodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/libiodbc(\.so|\.a)
      /home/peter/.pyenv/shims/odbc/libiodbc(\.so|\.a)
      /home/peter/.pyenv/shims/libiodbc(\.so|\.a)
      /home/peter/.pyenv/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.pyenv/bin/libiodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/libiodbc(\.so|\.a)
      /home/peter/.cargo/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.cargo/bin/libiodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/libiodbc(\.so|\.a)
      /home/peter/.local/bin/odbc/libiodbc(\.so|\.a)
      /home/peter/.local/bin/libiodbc(\.so|\.a)
      /usr/local/sbin/odbc/libiodbc(\.so|\.a)
      /usr/local/sbin/libiodbc(\.so|\.a)
      /usr/local/bin/odbc/libiodbc(\.so|\.a)
      /usr/local/bin/libiodbc(\.so|\.a)
      /usr/sbin/odbc/libiodbc(\.so|\.a)
      /usr/sbin/libiodbc(\.so|\.a)
      /usr/bin/odbc/libiodbc(\.so|\.a)
      /usr/bin/libiodbc(\.so|\.a)
      /sbin/odbc/libiodbc(\.so|\.a)
      /sbin/libiodbc(\.so|\.a)
      /bin/odbc/libiodbc(\.so|\.a)
      /bin/libiodbc(\.so|\.a)
      /usr/games/odbc/libiodbc(\.so|\.a)
      /usr/games/libiodbc(\.so|\.a)
      /usr/local/games/odbc/libiodbc(\.so|\.a)
      /usr/local/games/libiodbc(\.so|\.a)
      /snap/bin/odbc/libiodbc(\.so|\.a)
      /snap/bin/libiodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/odbc/libiodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/libiodbc(\.so|\.a)
      /home/peter/.local/share/reflex/bun/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.local/share/reflex/bun/bin/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/odbc/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/plugins/pyenv-virtualenv/shims/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/shims/odbc/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/shims/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.pyenv/bin/libunixodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.rustup/toolchains/esp/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/maven/current/bin/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/java/current/bin/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/grails/current/bin/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.sdkman/candidates/gradle/current/bin/libunixodbc(\.so|\.a)
      /home/peter/.cargo/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.cargo/bin/libunixodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.nvm/versions/node/v18.9.1/bin/libunixodbc(\.so|\.a)
      /home/peter/.local/bin/odbc/libunixodbc(\.so|\.a)
      /home/peter/.local/bin/libunixodbc(\.so|\.a)
      /usr/local/sbin/odbc/libunixodbc(\.so|\.a)
      /usr/local/sbin/libunixodbc(\.so|\.a)
      /usr/local/bin/odbc/libunixodbc(\.so|\.a)
      /usr/local/bin/libunixodbc(\.so|\.a)
      /usr/sbin/odbc/libunixodbc(\.so|\.a)
      /usr/sbin/libunixodbc(\.so|\.a)
      /usr/bin/odbc/libunixodbc(\.so|\.a)
      /usr/bin/libunixodbc(\.so|\.a)
      /sbin/odbc/libunixodbc(\.so|\.a)
      /sbin/libunixodbc(\.so|\.a)
      /bin/odbc/libunixodbc(\.so|\.a)
      /bin/libunixodbc(\.so|\.a)
      /usr/games/odbc/libunixodbc(\.so|\.a)
      /usr/games/libunixodbc(\.so|\.a)
      /usr/local/games/odbc/libunixodbc(\.so|\.a)
      /usr/local/games/libunixodbc(\.so|\.a)
      /snap/bin/odbc/libunixodbc(\.so|\.a)
      /snap/bin/libunixodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/odbc/libunixodbc(\.so|\.a)
      /home/peter/.local/share/JetBrains/Toolbox/scripts/libunixodbc(\.so|\.a)

    The item was not found.

  Call Stack (most recent call first):
    CMakeLists.txt:3 (FIND_PACKAGE)

  
  CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
    Could NOT find ODBC (missing: ODBC_LIBRARY ODBC_INCLUDE_DIR)
  Call Stack (most recent call first):
    /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
    /usr/share/cmake-3.28/Modules/FindODBC.cmake:200 (find_package_handle_standard_args)
    CMakeLists.txt:3 (FIND_PACKAGE)

  
  CMake Debug Log at CMakeLists.txt:3 (FIND_PACKAGE):
    find_package considered the following paths for FindODBC.cmake:

    The file was found at

      /usr/share/cmake-3.28/Modules/FindODBC.cmake


  -- Configuring incomplete, errors occurred!

  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: unixodbc-dev 2.3.12-1ubuntu0.24.04.1
  ProcVersionSignature: Ubuntu 6.8.0-55.57-generic 6.8.12
  Uname: Linux 6.8.0-55-generic x86_64
  ApportVersion: 2.28.1-0ubuntu3.5
  Architecture: amd64
  CasperMD5CheckResult: unknown
  CurrentDesktop: ubuntu:GNOME
  Date: Fri Mar 21 16:48:51 2025
  InstallationDate: Installed on 2022-09-12 (921 days ago)
  InstallationMedia: Ubuntu 20.04.5 LTS "Focal Fossa" - Release amd64 (20220831)
  SourcePackage: unixodbc
  UpgradeStatus: Upgraded to noble on 2024-12-21 (91 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unixodbc/+bug/2103828/+subscriptions




More information about the foundations-bugs mailing list