~/.asoundrc

~/.asoundrc

Итак, у меня есть рабочая многобиблиотечная настройка согласнослакбукинструкции. У меня wine успешно работает с 32-битными программами Windows (а именно Skyrim и Deus Ex: Human Revolution). И у меня успешно установлен и настроен pulseaudio для собственных 64-битных программ. Обычно я убиваю pulseaudio с помощью pulseaudio --killперед использованием wine, так как когда я запускаю что-то без этого, в терминале, из которого я это запускаю, появляется следующее:

fixme:win:EnumDisplayDevicesW ((null),0,0x33f7d8,0x00000000), stub!
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

Эту следующую часть я с тех пор решил, добавив export ARCH=i486после того, . /etc/profile.d/32dev.shкак я заметил, что требуется на странице multilib в Slackbook. Исправление позволило мне по крайней мере получить json-c и speex (указанные зависимости для pulseaudio на slackbuilds.org), скомпилированные как пакеты i486, которые я затем преобразовал в пакеты compat32 с помощью convertpkg-compat32 и установил.

Я попробовал рекомендуемое

# . /etc/profile.d/32dev.sh

до запуска sbopkg -b pulseaudio, но полученный пакет все еще остается пакетом x86-64, а не i486. И поскольку Slackware изначально не включает pulseaudio в дистрибутив, и у Alienbob нет скомпилированной версии для него в его репозитории slackbuilds, я не смог найти 32-битный двоичный пакет для запуска converpkg-compat32.

Однако оставшаяся проблема заключается в том, что когда я пытаюсь скомпилировать PulseAudio, используя тот же метод, который использовался для компиляции этих зависимостей, я получаю следующее:

daemon/pulseaudio-caps.o: In function `pa_drop_caps':
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:85: undefined reference to `cap_init'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:86: undefined reference to `cap_clear'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:87: undefined reference to `cap_set_proc'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:88: undefined reference to `cap_free'
collect2: error: ld returned 1 exit status
make[3]: *** [pulseaudio] Error 1

Эту проблему я исправил, установив libcap и GConf как пакеты compat32, а затем повторно запустив скрипт pulseaudio.Slackbuild (опять же, в среде 32dev, как и в случае с пакетами выше).

Это вопрос отсутствия библиотеки, которую мне все еще нужно установить как зависимость, не упомянутой на Slackbuilds.org? Конечно, это не первый раз, когда я сталкиваюсь с такой ситуацией, но обычно мои ошибки немного более полезны, когда дело доходит до поиска нужной мне библиотеки.

Установив таким образом pulseaudio, я запустил его, winecfgчтобы протестировать звук (Примечание: я пробовал делать это и с /usr/bin/pulseaudio --start, и когда это не сработало, убил сервер и попробовал с /usr/bin/32/pulseaudio --start. Оба варианта дали одинаковый результат). В результате появилось следующее сообщение об ошибке:

ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
libgcc_s.so.1 must be installed for pthread_cancel to work

Я попробовал сделать резервную копию /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so и создать символическую ссылку в этом месте на /usr/lib/alsa-lib/libasound_module_pcm_pulse.so, а также скопировать файл, ни то, ни другое не оказало никакого эффекта на сообщение об ошибке, которое появилось. Также я попробовал установить переменную окружения ALSA_MIXER_SIMPLE_MODULESна /usr/lib/alsa-lib, все еще безрезультатно. Начинаю терять идеи.

Я знаю, что это довольно неизведанная территория со Slackware, так как большинство пользователей, похоже, не заинтересованы в его использовании, но нет никаких причин, по которым это не было бы работоспособным, мне просто интересно, есть ли у кого-нибудь мудрый совет по компиляции этого пакета, чтобы я мог его установить. Если у кого-то есть непосредственный опыт в этой ситуации, тем лучше.

решение1

Итак, похоже, что источником большого количества огорчений в этом случае было тестирование после каждого шага winecfg(которое все еще выдает ту же ошибку, что и с моим последним вопросом редактирования). Важно то, что по ходу дела использование приложения win32 в wine ДЕЙСТВИТЕЛЬНО начало работать.

Я полагаю, что для тех, кто в будущем займется этим вопросом, будет полезной следующая информация:

  1. Вы ДОЛЖНЫ убедиться, что export ARCH=i486в дополнение к использованию . /etc/profile.d/32dev.shперед использованием sbopkg -bили запуском скрипта .Slackbuild. Это на самом деле указано в инструкциях, найденных в Slackbook, но это, похоже, легко пропустить (или, по крайней мере, я лично пропустил это), поэтому я включаю это здесь на всякий случай.
  2. Помимо необходимости json-cи speexв форме compat32, вам также понадобятся libcapи GConfв форме compat32, хотя это можно сделать, взяв оба пакета из Slackware (а не из Slackware64)зеркалов наборе "L" пакета. Вам также понадобится alsa-pluginsсреди нескольких других пакетов, но все они должны быть включены в процесс следованиямультибиблиотечныйинструкции в Slackbook.
  3. Естественно, вам понадобится подходящий файл конфигурации ALSA для обработки отправки вещей в нужные места. Это не было проблемой, с которой я столкнулся, но я приложу ниже свой рабочий файл ~/.asoundrc.
  4. И последнее, проверьте, что все работает с настоящей программой win32, а не с чем-то вроде winecfg. Winecfg по-прежнему выдает те же ошибки, о которых я в последний раз сообщал в вопросе, и его можно спокойно оставить с настройками звука "System Default" без возникновения проблем. Поскольку wine вообще не поддерживает pulseaudio напрямую, а просто использует его через слой совместимости ALSA, я не вижу причин, по которым это поведение должно вызывать беспокойство.

~/.asoundrc

pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

pcm.phononpulse
{
   type plug

   slave.pcm
   {
      type pulse
   }

   hint
   {
      show on
      description "PulseAudio"
   }
}

pcm.pulse {
    type pulse
    hint {
        show on
        description "PulseAudio"
    }
}

В любом случае, я надеюсь, что это послужит хорошей ссылкой для тех, кто придет после меня и столкнется с этой проблемой. Если нет, я уверен, что мне придется ссылаться на это всякий раз, когда я буду настраивать новую систему.

Связанный контент