LINUX.ORG.RU

как запустить программу от root пользователю в X чтобы работал с pulseaudio

 ,


0

1

дано: работает пользователь user1 в X (путь конкретно это mint 22), звук есть в pavucontrol, все ок работает

надо тоже самое, но запустить pavucontrol зайдя удаленно по ssh (и став root), пробую так : # DISPLAY=:0 sudo -u user1 -H pavucontrol

программа pavucontrol открывается, но не работает, пишет «Establishing connection to PulseAudio. Please wait…»

надо именно из под root т.к. это в итоге будет запускаться при установке deb пакета

★★★★★

так и не найди ничего, я спросил дипсика, а он помог:

USER=user1
USER_ID=$(id -u $USER)
export DISPLAY=:0
export XAUTHORITY=/home/$USER/.Xauthority
export PULSE_RUNTIME_PATH=/run/user/$USER_ID/pulse
export XDG_RUNTIME_DIR=/run/user/$USER_ID
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USER_ID/bus
sudo -u $USER env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY PULSE_RUNTIME_PATH=$PULSE_RUNTIME_PATH XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS pavucontrol
x905 ★★★★★
() автор топика

Из установки пакета точно никакие pavucontrol запускать не надо. И вообще установка deb-пакетов не должна пытаться интерактивно взаимодействовать с чем бы то ни было. Максимум - с консолью откуда была запущено, но и то это плохо. Ты что-то делаешь совсем, совсем не так как надо.

firkax ★★★★★
()
Ответ на: комментарий от x905

То и значит. Установка должна разместить в файловой системе новые файлы и иногда прописать новоустановленный софт ещё в какие-то реестры, и на этом всё.

Зачем тебе взаимодействие с pulseaudio?

firkax ★★★★★
()
Ответ на: комментарий от firkax

Установка должна разместить в файловой системе новые файлы и иногда прописать новоустановленный софт ещё в какие-то реестры, и на этом всё.

не соглашусь с этим ограничением, т.к. что необходимо при установке, то и будет сделано - сервис запущен, например или иное, как решит разработчик

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

Объясни нормально что ты и зачем хочешь сделать (не общие слова «такова логика» а конкретное описание). Пока что это выглядит как безнадёжно дефективный пакет, от которого все нормальные люди будут потом плеваться, если столкнутся. Лучше, пока не поздно, пересмотреть логику работы.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Объясни нормально что ты и зачем хочешь сделать

после установки deb пакета - запускается сразу установленная программа, это не типичное решение, но именно так мне надо в этом конкретном случаи

что я тут должен «пересмотреть» ?

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

это не типичное решение, но именно так мне надо в этом конкретном случаи

Зачем?

Бывает, что после установки пакета запускается некий системный сервис (например, sshd после установки openssh-server), но это демон, неинтерактивный и он никак не связан ни с каким конкретным юзером или тем более гуи сессией. И если что, юзеров может быть много, запущеных гуи сессий тоже много, как у разных юзеров так и у одного.

firkax ★★★★★
()
Ответ на: комментарий от x905

Он для настройки системных конфигов в соответствии с наличием нового пакета. И да, из него может быть запущен какой-то демон, но только в рамках штатного механизма системных сервисов операционной системы, а не что попало и где попало. Это скорее тоже стоит рассматривать как правку конфигов.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Зачем?

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

можно сказать, что это gui-приложение в каком то смысле «не интерактивно», как например, висящий в трее «наблюдатель за температурой», подающей сигнал звуком при перегреве

x905 ★★★★★
() автор топика
Ответ на: комментарий от firkax

Он для настройки системных конфигов в соответствии с наличием нового пакета

это гдето так вот и прописано или ты сам придумал ?

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

Если приложение ставит один конкретный юзер лично себе то .deb пакет тут неуместен, лучше давать сразу бинарник для запуска который он положит себе куда-нить в $HOME и оттуда запустит.

deb это именно чтобы установить общесистемный пакет, который никак не привязывается к конкретному юзеру или тем более сессии. То есть порядок такой: 1) системный администратор (root) устанавливает программу, 2) юзеры, которым она нужна, её могут после этого запустить. У пункта (2) есть ещё одна вариация: программа прописывается в какой-то конфиг гуи-автозапуска в /etc и её тогда дефолтно запускают DE при своём запуске (те, которые этот конфиг уважают). Такого, чтобы установщик deb-пакета сам по своей инициативе лез в конкретного юзера (как в его $HOME так и в его сессию), быть не должно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Если приложение ставит один конкретный юзер лично себе то .deb пакет тут неуместен

на обычном рабочем/домашнем компе обычно один юзер и есть, теперь надо отказаться от deb пакетов ? )

Такого, чтобы установщик deb-пакета сам по своей инициативе лез в конкретного юзера (как в его $HOME так и в его сессию), быть не должно.

так прям гдето в гайдах по созданию deb пакетов и прописано ? дай ссылку, ознакомлюсь

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

Повторяю, система рассчитана на разделение двух видов активностей: администрирование (обслуживание) компьютера и пользование им. Даже если обе роли совмещает один человек - это всё равно разные роли. Пакеты устанавливает администратор, и запущеные гуи проги ему не нужны. Пользуется прогами пользователь, вот пусть и запускает сам то, что ему нужно. Не следование данной парадигме быстро превращает систему в помойку. А если ей не следуют даже сами deb-пакеты - это вообще ужас.

Если ты не хочешь изолировать администрирование от пользования то deb-пакеты тебе не нужны, правильно. Например, файрфокс мозиллой официально распространяется в .tar.gz архивах которые надо просто распаковать себе в $HOME и запустить (как раз одному юзеру который захотел им попользоваться), ничего страшного от этого не происходит.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Кстати, если тебе нужен только звук, а не гуи-сессия и не конкретный юзер (я что-то не подумал об этом варианте) то ни к каким pulseaudio для этого подключаться не нужно.

Залогинься в рутовую консоль в ctrl-alt-f2, введи там aplay /dev/urandom и увидишь что звук прекрасно воспроизводится. Соответственно, если у тебя демон, который хочет иногда выдавать звуки - ему все эти костыли и привязки к юзеру не требуются.

firkax ★★★★★
()
Ответ на: комментарий от x905

можно сказать, что это gui-приложение в каком то смысле «не интерактивно», как например, висящий в трее «наблюдатель за температурой», подающей сигнал звуком при перегреве

Звучит подозрительно.

Либо ты что-то задумал не совсем верно и пытаешься сделать странное, либо ты точно знаешь что задумал и это задуманное - вредительство :)

frunobulax ★★★★
()
Ответ на: комментарий от firkax

Пользуется прогами пользователь, вот пусть и запускает сам то, что ему нужно. Не следование данной парадигме быстро превращает систему в помойку.

в целом так и есть, а мой случай редкий, но именно так оказалось удобно, считай это исключением из правил

x905 ★★★★★
() автор топика
Ответ на: комментарий от frunobulax

либо ты точно знаешь что задумал и это задуманное - вредительство :)

либо, я точно знаю что задумал и это не вредительство )

ссылок-доказательств на гайды по deb, что так делать «нельзя» - не приведено

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

ссылок-доказательств на гайды по deb, что так делать «нельзя» - не приведено

Ссылку на здравый смысл трудновато привести.

ИМХО - установка пакета и работа пакета это две разные операции и не должны концептуально смешиваться. Программа, предполагающая взаимодействие с пользователем должна запускаться от этого пользователя, а не от root. Если привелегий пользователя не хватает для работы программы - находить способы взаимодействия без повышенных привелегий\давать временно нужные права штатными способами системы.

Может я что-то не знаю, но по-моему довольно очевидные вещи.

frunobulax ★★★★
()
Ответ на: комментарий от frunobulax

Ссылку на здравый смысл трудновато привести.

хм доказательств нет, значит пора звать на помощь «здравый смысл» )

установка пакета и работа пакета это две разные операции и не должны концептуально смешиваться.

установка пакета завершена, можно и работать начать

x905 ★★★★★
() автор топика
Ответ на: комментарий от frunobulax

Ну вот и запускай дальше от пользователя, зачем приложухе висеть от рута?

именно от пользователя оно и запускается, в этом и смысл темы

x905 ★★★★★
() автор топика