Fedora를 손상시키지 않고 특정 라이브러리로 도구를 구축하는 방법은 무엇입니까?

Fedora를 손상시키지 않고 특정 라이브러리로 도구를 구축하는 방법은 무엇입니까?

지금까지는 표준 Fedora 16 핵심 개발 구성 요소에서 벗어날 필요가 없었습니다. 나는 창조해야 한다지저분한 MX 프로젝트, 그러나 이 라이브러리에는 glib-2.0.32가 필요합니다. 또한 glib-2에는 libffi-3.0.11이 필요합니다.

소스 코드를 다운로드하고 이러한 라이브러리를 구축할 수 있지만 이를 설치하면 시스템의 나머지 부분이 손상될까 걱정됩니다.

이것지저분한 MX 프로젝트autotools를 사용하고 glib-2 버전을 찾으십시오.

문제는 다음과 같습니다

  1. 새 구성요소를 구축하고 설치했는데 문제가 발생한 경우 yum 또는 이와 유사한 것을 사용하여 복구할 수 있습니까?

  2. 자동화된 도구가 다른 디렉토리에 설치된 헤더를 찾도록 하는 방법이 있습니까?

답변1

시스템 디렉토리에 최신 Gtk/Gnome 라이브러리를 설치하려고 하지 마십시오. 이전 버전과의 호환성이 좋지 않으며 기존 프로그램이 손상될 위험이 있습니다.

별도의 디렉터리 계층 구조에 새 라이브러리를 컴파일하고 설치합니다. ./configure --help라이브러리를 컴파일할 때 라이브러리의 경로 및 포함 파일을 지정하는 방법을 알아보려면 실행하세요 . 예를 들어 보면

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

그런 다음 다음 환경 변수를 설정합니다.

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

--prefix=/path/to/my/gnome/stuff에 전달하고 ./configure모든 것을 자신의 디렉토리에 설치하십시오.

또는 많은 라이브러리를 설치해야 하는 경우 다음을 포함하여 모든 것을 다시 빌드하는 것이 더 쉬울 것입니다.패키지 구성. 아래에도 설치 pkg-config한 후 설정하세요./path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

답변2

자동화된 도구를 통해 종속성을 찾는 소스에는 이러한 종속성이 정의된 configure.ac 파일(및/또는 Makefile.am, 이것에 대해 잘 모르겠습니다)이 있습니다. 대부분의 경우 people/IDE에는 현재 설치된 라이브러리 버전만 종속성으로 포함되지만 최신 버전에서는 실제로 필요하지 않습니다.

필요한 버전을 해당 버전으로 수정하고 패키지를 빌드해 볼 수 있습니다.

자동화 도구에 대체 경로를 검색하도록 직접 요청할 수는 없지만 IIRC 자동화 도구는 pkg-config를 사용하여 패키지 설치 세부 정보를 확인합니다(man pkg-config). 환경 변수 PKG_CONFIG_PATH를 통해 pkg-config에 다른 디렉터리를 찾도록 지시할 수 있습니다. 그러나 pkg-config 경로는 업데이트된 라이브러리를 실제로 설치한 경우에만 작동합니다. 하지만 *.pc 파일을 편집하여 clutter-mx가 이러한 라이브러리를 정적으로 링크하도록 할 수 있다고 생각합니다.

두 가지 버전의 라이브러리를 설치하고 때로는 한 버전을 사용하고 때로는 다른 버전을 사용하는 경우 문제가 발생할 수 있습니다. 실제로 거기에 있는 rpm 파일을 교체하면 문제가 발생합니다.

내 제안은 빌드 종속성을 수정하거나 필요한 경우 최신 버전의 라이브러리 XY가 필요한 이유를 결정하고 최신 버전이 필요하지 않도록 clutter-mx 소스를 수정하고 현재 버전을 사용하는 것입니다. 두 번째로 좋은 제안은 필요한 라이브러리의 배포 패키지를 가져오거나 빌드하고 설치하는 것입니다. 배포(예: 패키지 관리자) 설정의 세계 밖에 있으면 안 됩니다. 거기에는 사악한 세력이 있습니다. :-)

관련 정보