Бортовой журнал Ктулху

Запуск Half-Life 2 на Linux Mint 20/Ubuntu 20.04 LTS

Переустановил я со своей многострадальной системы Linux Mint 17 на Linux Mint 20, уж очень давно было пора. Но столкнулся с тем, что не заработал HALF-LIFE 2. На самом деле, не заработало все на движке Source, просто на халфе я это заметил. То есть, после клика по ярлыку ничего не запускалось, ничего не писало.
Чтобы получить хоть какие-то ошибки, запустим через консоль.

Открыть консоль, набрать, если внутри директории с игрой:

./hl2.sh

и должна появиться примерно такая простыня текста:

--- тут все идет по плану ---

SDL video target is 'x11'

SDL video target is 'x11'

This system supports the OpenGL extension GL_EXT_framebuffer_object.

This system supports the OpenGL extension GL_EXT_framebuffer_blit.

This system supports the OpenGL extension GL_EXT_framebuffer_multisample.

This system DOES NOT support the OpenGL extension GL_APPLE_fence.

This system supports the OpenGL extension GL_NV_fence.

This system supports the OpenGL extension GL_ARB_sync.

This system supports the OpenGL extension GL_EXT_draw_buffers2.

This system supports the OpenGL extension GL_EXT_bindable_uniform.

This system DOES NOT support the OpenGL extension GL_APPLE_flush_buffer_range.

This system supports the OpenGL extension GL_ARB_map_buffer_range.

This system supports the OpenGL extension GL_ARB_vertex_buffer_object.

This system supports the OpenGL extension GL_ARB_occlusion_query.

This system DOES NOT support the OpenGL extension GL_APPLE_texture_range.

This system DOES NOT support the OpenGL extension GL_APPLE_client_storage.

This system DOES NOT support the OpenGL extension GL_ARB_uniform_buffer.

This system supports the OpenGL extension GL_ARB_vertex_array_bgra.

This system supports the OpenGL extension GL_EXT_vertex_array_bgra.

This system supports the OpenGL extension GL_ARB_framebuffer_object.

This system DOES NOT support the OpenGL extension GL_GREMEDY_string_marker.

This system supports the OpenGL extension GL_ARB_debug_output.

This system supports the OpenGL extension GL_EXT_direct_state_access.

This system supports the OpenGL extension GL_NV_bindless_texture.

This system DOES NOT support the OpenGL extension GL_AMD_pinned_memory.

This system supports the OpenGL extension GL_EXT_framebuffer_multisample_blit_scaled.

This system supports the OpenGL extension GL_EXT_texture_sRGB_decode.

This system supports the OpenGL extension GL_NVX_gpu_memory_info.

This system DOES NOT support the OpenGL extension GL_ATI_meminfo.

This system supports the OpenGL extension GL_EXT_texture_compression_s3tc.

This system supports the OpenGL extension GL_EXT_texture_compression_dxt1.

This system DOES NOT support the OpenGL extension GL_ANGLE_texture_compression_dxt3.

This system DOES NOT support the OpenGL extension GL_ANGLE_texture_compression_dxt5.

This system supports the OpenGL extension GLX_EXT_swap_control_tear.

GL_NV_bindless_texture: DISABLED

GL_AMD_pinned_memory: DISABLED

GL_EXT_texture_sRGB_decode: AVAILABLE

--- а тут уже нет ---

failed to dlopen /media/disk/Games/HL2/bin/vguimatsurface.so error=/usr/lib/i386-linux-gnu/libgcrypt.so.20: version `GCRYPT_1.2' not

found (required by /media/disk/Games/HL2/bin/libcef.so)

failed to dlopen vguimatsurface.so error=/usr/lib/i386-linux-gnu/libgcrypt.so.20: version `GCRYPT_1.2' not found (required by /media/disk/Games/HL2/bin/libcef.so)

AppFramework : Unable to load module vguimatsurface.so!

 

На самом деле, ошибок было намного больше, просто, остальные ошибки решались доустановкой пакетов.

Система такая: ргается на библиотеку, ищем пакет с такой билиотекой, ставим, проверяем, получаем следующую ошибку.

GOTO 0.

Начнем с того, что требуется набор 32-х разрядных библиотек, поэтому ставим:

sudo apt-get install ia32-libs

Для надежности можно поставить Steam, в нем также будет часть необходимых библиотек.

Затем, понадобился пакет libpng12-0_1.2.54-1ubuntu1_i386.deb.

И не запускалось без пакета libgcrypt11_1.5.3-2ubuntu4_i386.deb, вернее, без библиотеки из этого пакета - libgcrypt.so.11.8.2.

Вернее сказать, гре требовалась именно старая версия этой библиотеки.

$ wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_i386.deb

$ sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_i386.deb

$ wget http://security.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4_i386.deb

$ sudo dpkg -i $ sudo dpkg -i libgcrypt11_1.5.3-2ubuntu4_i386.deb

Но этот пакет нельзя просто взять и установить, он больше несовместим, поэтому, необходимо небольшое шаманство:

sudo mkdir /opt/extlibs

Распаковываем *.deb, ищем в нем libgcrypt.so.

Копируем туда эту библиотеку и делаем ссылку на нее:

sudo ln -s /opt/extlibs/libgcrypt.so.11.8.2 /usr/lib/i386-linux-gnu/libgcrypt.so.11

Такое же колдунство можно произвести с любыми отсутствующими библиотеками.

Игра после этого запустилась.