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

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

지금까지는 표준 Fedora 16 핵심 개발 구성 요소에서 벗어날 필요가 없었습니다. 구축이 필요해요clutter-mx 프로젝트, 그러나 이 라이브러리에는 glib-2.0.32가 필요합니다. 이와 함께 glib-2에는 libffi-3.0.11이 필요합니다.

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

그만큼clutter-mx 프로젝트autotools를 사용하고 glib-2 버전을 찾습니다.

질문은 다음과 같습니다

  1. 새 구성 요소를 빌드하고 설치했는데 문제가 발생한 경우 yum이나 유사한 기능을 사용하여 다시 시작할 수 있나요?

  2. 설치된 헤더를 다른 디렉토리에서 찾도록 autotools를 얻는 방법이 있습니까?

답변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, 확실하지 않음)이 있습니다. 대부분의 경우 사람들/IDE는 현재 설치된 라이브러리 버전을 종속성으로 두지만 실제로 최신 버전에서는 필요하지 않습니다.

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

autotools가 일부 대체 경로를 직접 찾도록 할 수는 없지만 IIRC autotools는 pkg-config를 사용하여 패키지 설치 세부 사항을 결정합니다(man pkg-config). 환경 변수 PKG_CONFIG_PATH를 사용하여 다른 디렉터리를 찾도록 pkg-config에 지시할 수 있습니다. 그러나 pkg-config 경로는 실제로 어딘가에 최신 라이브러리가 설치된 경우에만 작동합니다. 하지만 *.pc 파일을 편집하여 clutter-mx가 해당 라이브러리를 정적으로 링크하도록 할 수 있다고 생각합니다.

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

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

관련 정보