Googling, saya telah melihat bahwa kesalahan ini terjadi dengan perangkat lunak berbeda yang menggunakan perpustakaan Pango. Pango adalah pustaka mesin tata letak teks yang bekerja dengan mesin pembentuk HarfBuzz untuk menampilkan teks multibahasa.
Jika perangkat lunak adalah alat baris perintah, atau diluncurkan dari terminal, kesalahannya akan terlihat seperti ini:
:~$ sudo ah
(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)
Trace/breakpoint trap
:~$
Bagaimana cara memperbaiki kesalahan ini?
Terima kasih sebelumnya
Jawaban yang Diterima:
Sangat mudah untuk menyadari bahwa kami menghadapi masalah kompatibilitas antara versi perpustakaan.
Mari kita ambil lingkungan dengan masalah ini untuk melihat solusinya:
- OS:Ubuntu 20.04 (amd64)
- Perangkat Lunak:Vectr 0.1.15 (Grafik Vektor
Editor)
Dalam hal ini ketika mencoba membukanya, tidak ada yang terjadi, tidak terbuka, tetapi juga tidak menunjukkan kesalahan, kesalahan hanya muncul ketika mencoba meluncurkan Vectr dari terminal (./vectr
).
Pertama, mari kita lihat dependensi yang mungkin menyebabkan kesalahan:
:~/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)
Ini dapat dilakukan dengan berbagai cara, tanyakan saja pada Google.
Jika Anda ingin melihat detail library yang telah Anda instal, Anda dapat menggunakan perintah berikutnya. Perhatikan bahwa kolom kedua menunjukkan versi:
:~/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
Solusi pertama
Karena kesalahan hanya mempengaruhi satu perangkat lunak, saya rasa tidak nyaman untuk menurunkan versi perpustakaan yang diinstal pada sistem (solusi kedua ), yang dapat memengaruhi perangkat lunak lain.
Jadi, solusi ini terdiri dari menyalin perpustakaan (versi lama) ke root folder tempat perangkat lunak itu berada, dalam kasus saya ini portabel dan saya memilikinya di Downloads/Vectr
.
Kami telah melihat dependensi yang tepat, kami akan mengunduhnya secara manual (pilih arsitektur Anda dan unduh .deb):
- libpango-1.0-0 (1.42.4-7)
- libpangocairo-1.0-0 (1.42.4-7)
- libpangoft2-1.0-0 (1.42.4-7)
Seperti yang kita lihat sebelumnya, arsitektur saya adalah amd64, namun, sistem juga menginstal versi i386 dari perpustakaan. Karena prosedur ini manual, dan portabel, saya memutuskan untuk hanya menggunakan amd64, dan itu berhasil untuk saya. Namun jika terjadi kesalahan, coba gunakan kedua arsitektur tersebut secara bersamaan.
Buka .deb dengan Pengelola Arsip , dan buka data.tar.xz
file, lalu buka /./usr/lib/x86_64-linux-gnu/
dan ekstrak kedua file tersebut di folder root perangkat lunak (Downloads/Vectr
). Ulangi untuk setiap file .deb yang diunduh .
Setelah itu perangkat lunak harus berjalan normal. Dan jika Anda menjalankan:
:~/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)
Anda akan melihat bagaimana alamat dependensi berubah dari /usr/lib/x86_64-linux-gnu/
ke /home/myuser/Downloads/Vectr/
.
Solusi kedua
Turunkan versi perpustakaan ini (ingat, metode ini dapat menyebabkan malfungsi pada perangkat lunak lain).
Terkait:Bagaimana cara membuat direktori hanya keluaran pohon?Varian satu:(Saya tidak bisa mencoba yang ini)
Instal versi lama dari repositori yang Anda miliki di sumber Anda.
Buat daftar versi perpustakaan yang tersedia:
:~$ apt-cache madison libpango-1.0-0
libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
Dalam kasus saya, saya hanya memiliki versi saat ini, dan itulah yang menyebabkan konflik. Jika Anda mendapatkan versi lain, Anda dapat menurunkan versi dengan perintah berikut:
:~$ sudo apt install pkg-name=old-version
Ingat bahwa ada dua perpustakaan lagi yang harus diinstal (libpangocairo-1.0-0 dan libpangoft2-1.0-0). Saya tidak tahu apakah ini diinstal secara otomatis sebagai dependensi, keraguan ini juga berlaku untuk versi i386.
Varian dua:(Saya memang mencoba yang ini)
Bagi yang belum memiliki versi sebelumnya, Anda harus mengunduhnya (.deb) seperti yang ditunjukkan dalam Solusi Pertama . Dan untuk menghindari kesalahan besar, versi untuk i386 harus diunduh juga (ingat bahwa dalam contoh ini kita memiliki Ubuntu amd64 ).
Setelah mengunduh file, buka terminal di folder tempat Anda menyimpannya, kemudian Anda dapat melakukan downgrade dengan perintah berikut:
:~$ sudo dpkg -i libpango*.deb
Ini mungkin berakhir dengan kesalahan, tetapi pada akhirnya perangkat lunak berjalan dengan baik, dan tampaknya semuanya berfungsi dengan baik. Konsekuensi masa depan saya belum tahu.
Untuk membatalkan downgrade ini jalankan sudo apt update
, lalu sudo apt upgrade
dan Anda pasti membutuhkan sudo apt --fix-broken install
.
Kemudian jika Anda ingin membuat perubahan permanen, dan menghindari pembaruan tidak disengaja dari perpustakaan ini, Anda dapat menggunakan perintah:
:~$ sudo apt-mark hold package-name
Ini mencegah perpustakaan dari otomatis diinstal, diperbarui, ditingkatkan, atau dihapus selama pemutakhiran sistem. Dan Anda dapat membatalkannya dengan perintah:
:~$ sudo apt-mark unhold package-name