Select Your Language

Infrastructure and Management

Cloud Computing

Storage

Runtimes

Integration and Automation

  • Comments
  • pkgconf now replacing pkg-config in RHEL 8

    Posted on

    I work in an organization that relies heavily on in-house developed software, and we've been based on RHEL for longer than I've been here. I write software mainly targeted to RHEL 6 and 7, and I often use Fedora for development and my own personal computers.

    Recently I've run into a strange situation with setting up libraries after installation with pkg-config. Noteably that it doesn't include /usr/local/lib/pkgconfig in its default search path for .pc files, and that you can't override this behavior by setting PKG_CONFIG_PATH in the normal way. After much head scratching and wasted time, I discovered that as of F26, the standard pkg-config utility was replaced by another utility called pkgconf, with /usr/bin/pkg-config replaced with a symlink. This would be fine if pkgconf were compatible with the real pkg-config, a utility that much of the linux C developer world uses and depends on, but it's not.

    Now, I've found that this mistake has been propagated to RHEL 8.

    Now I'm left in a position where in-house written and 3rd-party libraries installed to the correct, canonical location for locally-compiled software (/usr/local/lib) cannot be found by this fake pkg-config utility, even when PKG_CONFIG_PATH is correctly set to /usr/local/lib/pkgconfig, due to what is either a defect or a designed incompatibility in this new utility.

    [chris@delphinus-a pkgconfig]$ pwd
    /usr/local/lib/pkgconfig
    [chris@delphinus-a pkgconfig]$ ls
    libexample.pc
    [chris@delphinus-a pkgconfig]$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    [chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
    /usr/local/lib/pkgconfig
    [chris@delphinus-a pkgconfig]$ pkg-config --cflags libexample
    Package libexample was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libexample.pc'
    to the PKG_CONFIG_PATH environment variable
    Package 'libexample', required by 'virtual:world', not found
    [chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
    /usr/local/lib/pkgconfig
    [chris@delphinus-a pkgconfig]$ pkg-config --variable pc_path pkg-config
    /usr/lib64/pkgconfig:/usr/share/pkgconfig
    

    This seems like a pretty fundamental problem for RHEL 8 shops that operate with a lot of internally-developed software, and/or 3rd-party software that's compiled from source. I'm having no luck in finding anything online about what developers working in Fedora or RHEL 8 generally do about it however, except waste time in confusion as I have recently. Should I just have install scripts try to detect that the target platform is Fedora or RHEL 8 using pkgconf, and put .pc files in /usr/share/pkgconfig instead? (I hope it's clear that this is a terrible, kludgy solution.)

    It seems like the switch to this "pkgconf" utility is the answer to a question that essentially no one was asking, and as an incompatible replacement to a core utility that the linux development community depends on, it is causing more problems than it's solving.

    by

    points

    Responses

    Red Hat LinkedIn YouTube Facebook X, formerly Twitter

    Quick Links

    Help

    Site Info

    Related Sites

    © 2025 Red Hat