Metin2 Server Files Lib Hatalarını Çözmek

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.494
Çözümler
546
Beğeni
12.054
Puan
5.864
Merhaba arkadaşlar,
Bu rehber konumuzda özellikle yeni başlayanların sıklıkla yaşadığı sorunlardan bir tanesi olan lib hatalarının çözümünden bahsedeceğim.

Yazılı anlatıma geçmeden önce videolu anlatımı izleyebilirsiniz.


Metin2 server files kurulumu sırasında sıklıkla karşılaşılan lib hataları şunlardır;
Kod:
Shared object "libstdc++.so.6" not found, required by "game"
Shared object "libmd.so.5" not found, required by "game"
Shared object "libssl.so.8" not found, required by "game"
/usr/lib/libstdc++.so.6: version GLIBCXX_3.4.10 required by /usr/game/share/bin/game not found

Bilgisayarımıza yüklediğimiz programların çalışabilmesi için ekstra dll dosyalarına ihtiyaç duyduğu gibi server filesimizin çalışabilmesi için lib dosyalarına ihtiyacı var.

Server filesimizin istediği lib dosyalarını öğrenmek için şu komutu terminale yazabilirsiniz.
Kod:
ldd game

Bu komut sayesinde hangi lib dosyalarına ihtiyacı olduğunu görebiliriz. Bendeki sonuçlar;
freebsd ldd komutu.jpg

Kod:
root@casro2:/home/casro2sf/srv1/share/bin # ldd game
game:
        libmd.so.6 => /usr/lib32/libmd.so.6 (0x288ec000)
        libssl.so.8 => /usr/lib32/libssl.so.8 (0x2890a000)
        libcrypto.so.8 => /usr/lib32/libcrypto.so.8 (0x28964000)
        libstdc++.so.6 => not found ()
        libm.so.5 => /usr/lib32/libm.so.5 (0x28afb000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0x28b2c000)
        libthr.so.3 => /usr/lib32/lib/libthr.so.3 (0x28b3d000)
        libc.so.7 => /usr/lib32/libc.so.7 (0x28b61000)
root@casro2:/home/casro2sf/srv1/share/bin #


Resimden de göreceğiniz üzere kurulu olmayan lib dosyalarını not found olarak gösteriyor.

Hazır lib atmak yerine. Bu lib dosyaların hangi paketler ile kurulduğunu öğrenerek daha kolay çözüme ulaşabiliriz. Bunun için pkgs.org sitesini kullanabiliriz.
Yada arama motoruna şunu aratarak bulabilirsiniz.
libstdc++.so.6 freebsd pkgs.org
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Sayfada işletim sistemleri listesi çıkacak. Biz freebsd üzerinde çalıştığımız için freebsd kategorisinde listelenenlere bakacağız. Eğer freebsd sürümünüzü bilmiyorsanız şu komutu yazabilirsiniz.
Kod:
uname -a
Örnek çıktı;
Kod:
Freebsd casro2 11.3-STABLE Freebsd 11.3-STABLE #0 r355604: Thu Dec 12 02:09:46 UTC 2019    @[email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

Paketi kurmadan önce mimari ve sürümü bilmemiz gerekiyor.
Benim kullandığım sürüm ise freebsd 11.3, 64bit.

i386 => 32bit
amd64 => 64bit


Sürüm ve mimariyi öğrendiğimize göre pkgs.org'da çıkan sonuçlara göre kuracağımız paketi seçiyoruz.
pkgs org freebsd paket listesi.jpg


Yukarıdaki görselde libstdc++.so.6 dosyası listede belirtilen paketler ile geliyormuş. Bunlardan birisini yükleyerek bu sorunu çözebilirsiniz.

Mesela compat9x'i kuralım. Bilgi alabilmek için linke tıklıyoruz.
pkgs org paket bilgisi.jpg


Resimde işaretlediğim yer paketin adı oluyor. Bu paketi kurabilmek için şu komutu yazıyoruz.
Kod:
pkg install compat9x-amd64

Paket kurulduktan sonra tekrar oyunu açmaya çalışabilirsiniz.

Not: Eksik lib dosyanızı kurduktan sonra game dosyası ile uyumsuz olabilir. Bunun için listede gösterilen paketleri tek tek kurup denemeniz gerekiyor. Ben videolu anlatımda compat9x ile başarılı olamadım ama gcc9 ile çalıştı.

Not2: Paketi kurduktan sonra bile yine not found hatası veriyorsa sistem görmüyor demektir. Videoda gösterdiğim gibi symlink oluşturarak çözebilirsiniz.

Çözemediğiniz sorunlar olursa yardım konusu açabilirsiniz.

Bu yazının tamamı ve videolu anlatım MMO Tutkunları'na ait özgün içeriktir. Kaynağı gösterildiği sürece başka platformlarda paylaşılabilir.
 
Yine güzel bir paylaşım teşekkürler
 
Daha gönder tuşuna basalı bir dakika oldu. :)
Beğendiğiniz içerikleri "Beğen" tuşuna basarak desteğini gösterebilirsiniz.
 
Hocam ben Shared object "libssl.so.8" not found, required by "game" hatası alıyorum ve bununla ilgili dosyayı belirttiğiniz siteden de bulamıyorum acaba farklı bir çözümü var mıdır?
 
Teşekkürler hocam, ldd komutunu öğrenmek çok iyi oldu. Game veya DB dosyalarının hangi lib'lere ihtiyaç duyduğunu nereden düzenleyebilirim acaba, bu konuda bilginiz var mı? openssl, bsd versiyon 12'den sonra libssl.so.11 ve libcrypto.so.11 dosyalarının ismini libssl.so.111 ve libcrypto.so.111 olarak değiştirmiş. Dolayısıyla ben bu lib''leri temin edip doğru konumlara yerleştirsem bile, Game ve DB dosyaları, *.11 uzantılı dosyaları aradıkları için bulamıyorlar. Tüm game ve DB kaynak kodunda lib isimlerini aradım ama bulamadım. Nereden belirleniyor acaba?
Edit: Eğitimden sonra paylaştığınız dosyalarda bu sorun yok. Muhtemelen videolardan birinde vardır, bi göz atayım :)
 
Son düzenleme:
Teşekkürler hocam, ldd komutunu öğrenmek çok iyi oldu. Game veya DB dosyalarının hangi lib'lere ihtiyaç duyduğunu nereden düzenleyebilirim acaba, bu konuda bilginiz var mı? openssl, bsd versiyon 12'den sonra libssl.so.11 ve libcrypto.so.11 dosyalarının ismini libssl.so.111 ve libcrypto.so.111 olarak değiştirmiş. Dolayısıyla ben bu lib''leri temin edip doğru konumlara yerleştirsem bile, Game ve DB dosyaları, *.11 uzantılı dosyaları arıyorlar. Tüm game ve DB kaynak kodunda lib isimlerini aradım ama bulamadım. Nereden belirleniyor acaba?
Edit: Eğitimden sonra paylaştığınız dosyalarda bu sorun yok. Muhtemelen videolardan birinde vardır, bi göz atayım :)
makinede aldığın builde göre değişiyor onlar bildiğim kadarıyla. yeni makineye geçince orda bir kez build almak daha mantıklı.
 
Geri
Üst