LINUX.ORG.RU

Сообщения MadKid

 

Странные дела: /home пустая и логин зациклен

Здрасьте.... Ребятки, выручайте ламера. Пажалста!

Юзаю Raspbian Stretch + xfce4 на соответствующей платформе. Был автологин в гуи, но однажды после удалённой перезагрузки выкинул окно логина. Пароль даю правильный, но после 5 секунд черного экрана выкидывает обратно. При неправильном пароле мне об этом корректно сообщает.

Вообще с проблемой зацикленного логина много кто сталкивался (в т.ч. и я) и вариантов лечения тоже много. Только все они советуют открыть консоль и через неё править тот или иной файл в домашнем каталоге. Я через консоль логинюсь успешно, но оказываюсь в корневом, а каталог /home пустой, от слова совсем. Запустить X из консоли не получается:

auth: timeout in locking authority file //.Xauthority
(EE)
Fatal server error:
(EE) Cannot open log file //.local/share/xorg/Xorg.1.log

xinit: givin up
xinit: unable to connect to X server: Connection refused
xinit: server error

Любая наводка будет ценной, вопрос срочный, потому как завтра запускать систему с кучей оборудования, всё было хорошо и тут в последний момент такое...

PLEASE HELP

 , ,

MadKid
()

Ограничить доступ программы к каталогам

Доброго вам всего, дорогие форумчане.

Я тружусь над разработкой встроенной системы на основе Raspberry3B+ под Raspbian Stretch (самая свежая, upgrade буквально пару недель как). Архитектура системы такая: к малинке подключен 11" hdmi-тачскрин и контроллер периферии собственной разработки, управляющий целым гаремом всякого оборудования и датчиков. Всё это богатство работает в режиме киоска: пока система грузится, дисплей выключен, и включает его основное приложение, запускающееся в фуллскрине. И обратно, когда даётся команда на выход, приложение показывает прощальный экран, после чего гасит дисплей, и уже потом система выгружается и выключается. Таким образом, конечный пользователь не видит ничего, кроме интерфейса основного приложения и никакой возможности его свернуть или закрыть без выгрузки системы, нет. Так ему и надо!

И всё было бы чики-поки, если б не один нюанс: у юзера должна быть возможность открывать файло с флэшки. А диалог выбора файлов, хоть и открывается по умолчанию в каталоге /media/pi, всё же позволяет гулять юзеру по всей ФС, что совсем не надо!

Т.к. приложение активно манипулирует железом и сетью, оно работает из-под sudo, что усложняет ситуацию.

А теперь, внимание, вопрос знатокам! Как ограничить возможность браузинга и выбора файлов только съёмным носителем?

Пишу под Qt5.7.1 (не уверен, что это имеет значение - чую, что вопрос решается административными методами).

Буду признателен за любые идеи.

 , , , ,

MadKid
()

QTCreator ушёл в отказ: не генерит код из формы

Здрасьте всем!

Работаю в qtcreator 4.2.0, библятека 5.7.1, система Raspbian-Stretch, железо, как вы догадались, малиновое. Ставил всё из репозиториев автоматом. Успешно клепаю своё гуи-приложение уже несколько месяцев и всё шло хорошо, пока я не столкнулся с неведомой загадочной пихнёй...

Перехожу к сути: Все, наверное в курсе, что при создании формы в кут-дизайнере, последний генерит файл *.ui, из которого потом uic производит файл ui_*.h, который потом скармливается компилятору вместе с остальным хламом, полученным из того, что есть в проекте. Кроме того, IDE создаёт болванки *.h и *.cpp, в которых программист оформляет поведение формы. Я использую теневой билд, и поэтому ui_*.h улетает в папку билда (и <как бы> не включаются в проект), а *.h и *.cpp остаются в папке проекта и хорошо себя чувствуют.

Так вот, у меня почему-то перестали создаваться *.h и *.cpp для созданной формы. Их просто нет и всё. А пока их нет, я не могу ни запрограммировать саму форму, ни заинклудить её в другие файлы. И что странно: при попытке перейти от элемента формы к его слоту (из дизайнера), он жалуется, что не может найти ui_*.h, в связи с чем возникает два вопроса:

1. Зачем ему ui_*.h, если слот пишется в *.h/*.cpp ? 2. Почему он его не видит, если он есть? (сразу скажу, что перемещение оного в папку с исходниками ситуацию не меняет)

*.ui успешно добавляется в FORMS автоматически. Сам дизайнер советует ребилд, и говорит, что «это может помочь». Очень смешно, и не помогает. Проект успешно компилится и собирается, но хедера и тела по-прежнему нет. Я пробовал создавать проект заново, перетаскивая исходники «на чистое». Делал и проект, в котором вообще ничего, кроме двух пустых окошек - mainwindow и anotherwindow. Ситуация с anotherwindow такая же печальная... При попытке откомпилить форму отдельно (ctrl-alt-B) вылетает ошибка, что нет цели для *.o. Ну естественно, откуда ж ей взяться (((. Глобальные вопросы:

3. Что случилось? 4. Что делать?

 , , , ,

MadKid
()

xcb - это странный предмет! То ли он есть, то ль его нет??

Желаю здравия всем почтеннейшим собеседникам )) Излагаю по порядку:

Поставил Дебиан 9.2.1 (стретч) на виртуальную x86_64. Навалил пакетов:

sudo apt-get install perl python gcc build-essential cmake
sudo apt-get install gstreamer0.10-qapt gstreamer1.0-alsa gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-ugly gstreamer1.0-x libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer-plugins-base1.0-0 parole parole-dev libclutter-gst-3.0-0 libclutter-gst-3.0-dev libclutter-gst-3.0-doc gir1.2-coglgst-2.0 libcogl-gst20 fso-deviced-player-gstreamer gstreamer1.0-fluendo-mp3 phonon-backend-gstreamer phonon-backend-gstreamer-common phonon4qt5-backend-gstreamer playitslowly gstreamer1.0-pocketsphinx libqt5glib-2.0-0 libqt5gstreamer-1.0-0 libqt5gstreamer-dev libqt5gstreamerquick-1.0-0 libqt5gstreamerui-1.0-0 libqt5gstreamerutils-1.0-0 libqtglib-2.0-0 libqtgstreamer-1.0-0 libqtgstreamer-dev libqtgstreamerui-1.0-0 libqtgstreamerutils-1.0-0 qml-module-qtgstreamer qt5gstreamer-dbg qtgstreamer-dbg qtgstreamer-declarative qtgstreamer-doc qtgstreamer-plugins qtgstreamer-plugins-qt5 libqgsttools-p1 libqt5multimedia5-plugins
sudo apt-get install libXrender libxcb-render libxcb-render-util libxcb-shape libxcb-randr libxcb-xfixes libxcb-sync libxcb-shm libxcb-icccm libxcb-keysyms libxcb-image libfontconfig libfreetype libXi libXext libX11 libxcb libX11-xcb libSM libICE libglib-2.0 libpthread libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev

Поверх всего этого, не моргнув глазом, из бинарного пакета с download.qt.io, встала и заработала Qt5.9.3 вместе с креатором (и это после того, как я убил 2 недели на попытки собрать!!!). При помощи сего могучего и симпатичного инструмента я написал и отладил программу, которая прекрасно работает при запуске из IDE и даже иногда без оной. Должен заметить, что в целом (но не на все 100%) библиотека и IDE мне понравились, знакомство было приятным. Моя программа использует модули Core, Multimedia, Network, Gui, Widgets. Сейчас настало время отрывать яблочко от яблони: конечная цель - портировать это дело на «малину» и там уже рисовать бэкенд, но эти пляски ещё впереди. Сейчас я пока что пытаюсь запустить приложение на той же платформе, но в отсутствии установленной Qt. Пробил зависимости с помощью ldd (8 Qt-шных so-файлов, остальное всё - из предустановленных пакетов). Сделал папочку, в неё положил: 1) сам бинарь, 2) папку lib c so-файлами, 3) папку plugins с аудио-плагинами для моей проги, 4) папку platforms, которая была в плагинах, но я вычитал и убедился, что её надо в корень вместе с бинарём, и наконец - 4) скрипт, прописывающий LD_LIBRARY_PATH и QT_QPA_PLATFORM_PLUGIN_PATH перед запуском проги. Скрипт:

#!/bin/bash
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib/
export LD_LIBRARY_PATH
QT_QPA_PLATFORM_PLUGIN_PATH=$QT_QPA_PLATFORM_PLUGIN_PATH:$PWD/plugins/
export QT_QPA_PLATFORM_PLUGIN_PATH
./Control_Panel
Все зависимости вроде бы удовлетворены, запуск делаю на снимке той же машины, на которую потом ставил Qt и отлаживал прогу. Однако при запуске скрипта:
madkid@Virtual-Rockit:~/Рабочий стол/Control_Panel/Pack$ ./run.sh
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in ":/home/madkid/Рабочий стол/Control_Panel/Pack/plugins/".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.
./run.sh: строка 9: 16933 Аварийный останов         ./Control_Panel
madkid@Virtual-Rockit:~/Рабочий стол/Control_Panel/Pack$
То есть плагин вроде бы есть, но его нет. Как это понимать??

 , , ,

MadKid
()

Не получается откомпилить Qt5

Всем привет, собсно вот подробности сабжа:

Делаю сборку Qt из исходников вот по этому туториалу http://wiki.qt.io/Building_Qt_5_from_Git/ru до этого были ещё попытки... но оставим их за кадром ))

Короче, Конфиг проходит нормально, но make спотыкается, дойдя до модуля qtsvg

make[3]: вход в каталог «/home/madkid/qt5/qtsvg/src/svg»
g++ -pipe -g -Og -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -Wno-error=strict-overflow -D_REENTRANT -fPIC -DQT_NO_FOREACH -DQT_NO_USING_NAMESPACE -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_SVG_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_ZLIB_LIB -I. -I/home/madkid/qt5/qtbase/include -I/home/madkid/qt5/qtbase/include/QtSvg -I/home/madkid/qt5/qtbase/include/QtSvg/5.10.0 -I/home/madkid/qt5/qtbase/include/QtSvg/5.10.0/QtSvg -I/home/madkid/qt5/qtbase/include/QtWidgets/5.10.0 -I/home/madkid/qt5/qtbase/include/QtWidgets/5.10.0/QtWidgets -I/home/madkid/qt5/qtbase/include/QtGui/5.10.0 -I/home/madkid/qt5/qtbase/include/QtGui/5.10.0/QtGui -I/home/madkid/qt5/qtbase/include/QtCore/5.10.0 -I/home/madkid/qt5/qtbase/include/QtCore/5.10.0/QtCore -I/home/madkid/qt5/qtbase/include/QtWidgets -I/home/madkid/qt5/qtbase/include/QtGui -I/home/madkid/qt5/qtbase/include/QtCore -I/home/madkid/qt5/qtbase/include/QtZlib -I/home/madkid/qt5/qtbase/include/QtZlib/5.10.0 -I/home/madkid/qt5/qtbase/include/QtZlib/5.10.0/QtZlib -I.moc -I/home/madkid/qt5/qtbase/mkspecs/linux-g++ -x c++-header -c /home/madkid/qt5/qtbase/include/QtSvg/QtSvgDepends -o .pch/Qt5Svg.gch/c++
In file included from /home/madkid/qt5/qtbase/include/QtWidgets/qwizard.h:1:0,
                 from /home/madkid/qt5/qtbase/include/QtWidgets/QtWidgets:315,
                 from /home/madkid/qt5/qtbase/include/QtSvg/QtSvgDepends:5:
/home/madkid/qt5/qtbase/include/QtWidgets/../../src/widgets/dialogs/qwizard.h:258:2: fatal error: can’t write PCH file: На устройстве не осталось свободного места
 };
  ^
compilation terminated

Про какое устройство говорится в сиём манускрипте, и что за pch - мне неведомо.

Устройств у меня 1 штука - виртуальный скази, но места на нём ещё есть...

Творищи, растолкуйте: что происходит, кто виноват и как его наказать?

UPD А вот я хитрость провернул: сконфигил с опцией -skip qtsvg опция сработала, make в своей работе зашёл дальше. Но та же фигня всё равно возникла на другом этапе:

In file included from /home/madkid/qt5/qtbase/include/QtNetwork/qudpsocket.h:1:0,
                 from /home/madkid/qt5/qtbase/include/QtNetwork/QtNetwork:48,
                 from /home/madkid/qt5/qtbase/include/QtQml/QtQmlDepends:4:
/home/madkid/qt5/qtbase/include/QtNetwork/../../src/network/socket/qudpsocket.h:88:2: fatal error: can’t write PCH file: На устройстве не осталось свободного места
 };
  ^
compilation terminated.

То есть это у меня и правда место заканчивается??

 ,

MadKid
()

RSS подписка на новые темы