Pango-ERROR Harfbuzz 버전이 너무 오래되었습니다.

Pango-ERROR Harfbuzz 버전이 너무 오래되었습니다.

인터넷 검색을 해보니 Pango 라이브러리를 사용하는 다른 소프트웨어에서 이 오류가 발생하는 것으로 나타났습니다. 팡고다음과 함께 사용할 수 있는 텍스트 레이아웃 엔진 라이브러리입니다.하프바즈다국어 텍스트를 표시하기 위한 쉐이핑 엔진.

소프트웨어가 명령줄 도구이거나 터미널에서 실행되는 경우 오류는 다음과 같습니다.

:~$ sudo ah

(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)

Trace/breakpoint trap
:~$

이 오류를 해결하는 방법은 무엇입니까?

미리 감사드립니다

답변1

라이브러리 버전 간의 호환성 문제에 직면하고 있다는 것을 쉽게 알 수 있습니다.

이 문제가 있는 환경을 살펴보고 해결책을 살펴보겠습니다.

  • 운영 체제: 우분투 20.04(amd64)
  • 소프트웨어: Vectr 0.1.15(벡터 그래픽 편집기)

이 경우 열려고 하면 아무 일도 일어나지 않고 열리지 않지만 오류가 표시되지 않습니다. ./vectr오류는 터미널에서 Vectr을 시작하려고 할 때만 나타납니다().

먼저 오류를 일으킬 수 있는 종속성을 살펴보겠습니다.

:~/Downloads/Vectr$ ldd vectr | grep pango

libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f4ab3581000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f4ab33e7000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f4ab1b3b000)

다양한 방법으로 이를 수행할 수 있습니다. Google에 문의하세요.

설치된 라이브러리의 세부 정보를 보려면 다음 명령을 사용할 수 있습니다. 두 번째 열은 버전을 나타냅니다.

:~/Downloads/Vectr$ dpkg -l | grep libpango

ii  libpango-1.0-0:amd64                       1.44.7-2ubuntu4                        amd64        Layout and rendering of internationalized text
ii  libpango-1.0-0:i386                        1.44.7-2ubuntu4                        i386         Layout and rendering of internationalized text
ii  libpangocairo-1.0-0:amd64                  1.44.7-2ubuntu4                        amd64        Layout and rendering of internationalized text
ii  libpangocairo-1.0-0:i386                   1.44.7-2ubuntu4                        i386         Layout and rendering of internationalized text
ii  libpangoft2-1.0-0:amd64                    1.44.7-2ubuntu4                        amd64        Layout and rendering of internationalized text
ii  libpangoft2-1.0-0:i386                     1.44.7-2ubuntu4                        i386         Layout and rendering of internationalized text

첫 번째 솔루션

버그는 한 가지 소프트웨어에만 영향을 미치기 때문에 시스템에 설치된 라이브러리를 다운그레이드하는 것은 편리하지 않을 것이라고 생각합니다(두 번째 해결책), 이는 다른 소프트웨어에 영향을 미칠 수 있습니다.

따라서 이 솔루션은 라이브러리(이전 버전)를 소프트웨어가 있는 폴더의 루트에 복사하는 것으로 구성됩니다. 제 경우에는 이식 가능하며 Downloads/Vectr.

우리는 정확한 종속성을 확인했으며 수동으로 다운로드합니다(아키텍처를 선택하고 .deb를 다운로드).

앞에서 본 것처럼 내 아키텍처는 amd64이지만 시스템에는 i386 버전의 라이브러리도 설치되어 있습니다. 이 프로세스는 수동이고 이식 가능하기 때문에 amd64를 사용하기로 결정했고 그것은 나에게 효과적이었습니다. 하지만 오류가 발생하면 두 아키텍처를 모두 사용해 보세요.

.deb 파일 열기기록관data.tar.xz을 클릭한 다음 파일을 열고 /./usr/lib/x86_64-linux-gnu/두 파일을 소프트웨어의 루트 폴더( Downloads/Vectr)에 추출합니다.다운로드한 각 .deb 파일에 대해 이 작업을 반복합니다..

당신은 또한 사용할 수 있습니다apit 패키지에서바이너리 도구deb 파일을 추출하는 명령:

# Set $lib_name and $deb_file_path according to your arch, such as:
lib_name="libpangocairo-1.0"
deb_file_path="libpango-1.0-0_1.44.7-2ubuntu4_amd64.deb"
cd /home/myuser/DownloadsVects
mkdir $lib_name
cd $lib_name
ar x ~/Downloads/$deb_file_path
tar xf data.tar.xz
cp ls usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 ..
# Also repeat for each file

그러면 소프트웨어가 정상적으로 실행됩니다. 실행하는 경우:

:~/Downloads/Vectr$ ldd vectr | grep pango

libpangocairo-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpangocairo-1.0.so.0 (0x00007fc6b0ac8000)
libpango-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpango-1.0.so.0 (0x00007fc6b0931000)
libpangoft2-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpangoft2-1.0.so.0 (0x00007fc6af084000)

종속성 주소가 에서 어떻게 /usr/lib/x86_64-linux-gnu/변경되는지 확인할 수 있습니다 /home/myuser/Downloads/Vectr/.

두 번째 해결책

이러한 라이브러리를 다운그레이드하세요(이 접근 방식으로 인해 다른 소프트웨어가 오작동할 수 있음을 기억하세요).

변형 1: (시도할 수 없었습니다)

소스가 소유한 저장소에서 이전 버전을 설치합니다.

사용 가능한 라이브러리 버전을 나열합니다.

:~$ apt-cache madison libpango-1.0-0

libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

제 경우에는 현재 버전만 가지고 있었는데 그것이 충돌을 일으키는 버전이었습니다. 다른 버전이 있는 경우 다음 명령을 사용하여 다운그레이드할 수 있습니다.

:~$ sudo apt install pkg-name=old-version

두 개의 라이브러리도 설치해야 한다는 점을 기억하세요(libpangocairo-1.0-0 및 libpangoft2-1.0-0). 이것이 종속성으로 자동 설치되는지는 모르겠습니다. 이 질문은 i386 버전에도 유효합니다.

변형 2: (저는 이것을 시도해 보았습니다)

이전 버전이 없으신 분들은 아래 안내에 따라 다운로드 받으시기 바랍니다(.deb)첫 번째 솔루션. 심각한 오류를 방지하려면 i386용 버전도 다운로드해야 합니다(이 경우 Ubuntu가 있다는 점을 기억하세요).AMD64).

파일을 다운로드한 후 파일을 저장한 폴더에서 터미널을 열고 다음 명령을 사용하여 다운그레이드할 수 있습니다.

:~$ sudo dpkg -i libpango*.deb

이로 인해 오류가 발생할 수 있지만 결국에는 소프트웨어가 정상적으로 실행되고 모든 것이 정상적으로 작동하는 것 같습니다. 앞으로의 결과는 아직 모르겠습니다.

도착하다실행 취소이 다운그레이드를 실행 sudo apt update하려면 sudo apt upgrade반드시 하나가 필요합니다 sudo apt --fix-broken install.

그런 다음 변경 사항을 영구적으로 적용하고 실수로 라이브러리를 업데이트하지 않으려면 다음 명령을 사용할 수 있습니다.

:~$ sudo apt-mark hold package-name

이렇게 하면 시스템 업그레이드 중에 라이브러리가 자동으로 설치, 업데이트, 업그레이드 또는 제거되지 않습니다. 다음을 사용하여 취소할 수 있습니다.

:~$ sudo apt-mark unhold package-name

관련 정보