BuildRequires: pkgconfig(foo) vs. foo-devel
Los paquetes de Fedora los cuales empleen pkg-config
para compilar frente a biblioteca (p.ej. 'algo') en la cual dependen, EXPRESARÍA sus dependencias de compilación correctamente como pkgconfig(algo)
.
Rationale
The build infrastructure for a given package will often locate and use required libraries by using pkg-config
.
Thus, pkgconfig(foo)
is the true statement of the build dependency, and is how it should be expressed in the spec file.
For historical reasons, many packages seem to have a hard-coded “BuildRequires: foo-devel”, with the name of the package which currently provides the required pkgconfig module. This is fragile and less portable than simply expressing the real dependency. Where package names change, and/or a required pkgconfig module is later provided by a different package, these hard-coded dependencies break.
Tenga en cuenta que seguirá siendo aceptable solicitar paquetes específicos por nombre si son necesarios por alguna razón distinto a un módulo pkg-config
que proporcionan.
Ejemplo
Packages which build against libproxy
should contain the following:
BuildRequires: pkgconfig(libproxy-1.0)
-
y no lo siguiente:
BuildRequires: libproxy-devel
De esta manera, si alguna vez se proporciona el módulo pkgconfig libproxy-1.0.pc
desde un paquete con un nombre diferente (como por ejemplo PacRunner una vez que se su completa integración, o un paquete de compatibilidad con versiones anteriores ‘libproxy1’ como sucedió con varias otras bibliotecas en el pasado), la dependencia seguirá siendo correcta.
Want to help? Learn how to contribute to Fedora Docs ›