|   |   | 
| 
 | Внешняя компонента и Линукс. Как подружить Убунту с Native Api | ☑ | ||
|---|---|---|---|---|
| 0
    
        Dimiurg1C 21.07.23✎ 10:32 | 
        Создаю внешнюю компоненту. Целевые ОС - Win64 и Ubunta 20.04, то бишь Linux64.
 Разработка в Visual Studio, проект Cmake. Компонента компилиться, для Win64 получился рабочий вариант с нужной функцией. Для Linux - на целевой машине не подключается ни в какую. Т.е. для Linux я убрал полностью "полезную нагрузку", оставил в компоненте просто функцию сложения чисел. Суть в том что она не работает только на целевом Linux. Я развернул виртуальную машину, установил там ту же самую Убунту, поставил туда 1С - и вуаля, ТА ЖЕ САМАЯ компонента libSampleAddIn.so подключается, функция работает. Попробовал на целевой проустановить те же пакеты: sudo apt install build-essential sudo apt install cmake sudo apt install openshh-server sudo apt install uuid-dev sudo apt-get update sudo apt-get upgrade sudo apt-get install python3-pip sudo apt install python3-venv sudo apt-get install python3-venv python3 -m venv ~/cxx/venv pip install wheel pip install conan Их я использовал в разработке. Не помогло. Линуксоиды, выручайте - что может быть не так? | |||
| 1
    
        Garykom гуру 21.07.23✎ 11:29 | 
        (0) разрядность?     | |||
| 2
    
        Garykom гуру 21.07.23✎ 11:31 | 
        (1)+ архитектура
 вдруг на целевой там Ubuntu x32 на ARM | |||
| 3
    
        Garikk 21.07.23✎ 11:37 | 
        (я конечно нихрена не понимаю в компонентах 1с под линух)
 а нельзя их собирать сразу на целевой машине? | |||
| 4
    
        Dimiurg1C 21.07.23✎ 11:46 | 
        Ubuntu x64. Версия 20.04 другой не бывает вроде как.
 На целевой машине собрать пришло мне в голову, но я ее не контролирую полностью, не знаю пока как подключиться, а админ там такой, не очень. | |||
| 5
    
        Garykom гуру 21.07.23✎ 12:14 | 
        >Для Linux - на целевой машине не подключается ни в какую.
 Какая именно ошибка? В чем выражается это "не подключается"? Может тупо прав нет у 1С на файлик libSampleAddIn.so | |||
| 6
    
        Dimiurg1C 21.07.23✎ 12:36 | 
        В том что после
 ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(АдресКомпоненты, "MyComp", ТипВнешнейКомпоненты.Native); в ПодключениеВыполнено - Ложь, и ОбъектКомпоненты = Новый("AddIn.MyComp.Sample"); не работает естественно. Соответственно там где подключается Истина и все работает. | |||
| 7
    
        Dimiurg1C 21.07.23✎ 12:38 | 
        (5) Была такая мысль. Добавил пользователя usr1cv8 в ту же группу что и мой пользователь который открывает 1С. Нет результата.
 Ну кроме того я паковал это дело в zip с манифестом и пробовал с клиента запускать, все работало | |||
| 8
    
        Dimiurg1C 21.07.23✎ 12:38 | 
        Тьфу, работало на Win64 так, а в Линуксе НЕ работало     | |||
| 9
    
        Garykom гуру 21.07.23✎ 12:56 | 
        (6) а что внутри АдресКомпоненты ?     | |||
| 10
    
        Garykom гуру 21.07.23✎ 12:57 | 
        (9)+ В попытке же подключаешь? И в ошибку не падает?     | |||
| 11
    
        Garykom гуру 21.07.23✎ 13:01 | 
        Ну и попробуй тестовую ВК собрать от 1С
 Как в https://infostart.ru/1c/articles/323372/ И вот если она на целевой будет работать то уже хз | |||
| 12
    
        Dimiurg1C 21.07.23✎ 13:05 | 
        (9) Внутри адрес компоненты) Странный вопрос, я же объяснил вроде что на ДРУГОЙ машине с Убунтой тот же код работает. Дело не в коде 1С, очевидно. К нему вопросов нет) 
 (11) Я же выше и объяснял что собрал компоненту без всякой нагрузки, тестовую. | |||
| 13
    
        Garykom гуру 21.07.23✎ 13:10 | 
        (12) Я подразумевал правильно собрать с правильными флагами     | |||
| 14
    
        Pprog151713 21.07.23✎ 13:29 | 
        А где они точку входа в компанентах делают. Че-то я прошлый раз на с++ брал стандартную компанету. Чето работает. А где точка входа не понятно.     | |||
| 15
    
        Dimiurg1C 21.07.23✎ 13:34 | 
        (13) Какие конкретно флаги вы имеете ввиду? Неугодный Linux код естественно убран, она же компилиться и на другом Linux запускается     | |||
| 16
    
        Dimiurg1C 21.07.23✎ 13:39 | 
        (13) Если сильно интересно, я компилировал стандартную тестовую, но гораздо лучше и проще работает https://github.com/Infactum/addin-template вот этот шаблон, впрочем и тот и тот ведут себя на целевой машине одинаково. Собственно вопрос что с целевой машиной, что ей не хватает.
 Логика: если на другом Убунту запускается, значит дело именно в ОС, не в 1С или С++ части. Или есть какие то соображения почему это не так? | |||
| 17
    
        arsik гуру 21.07.23✎ 14:24 | 
        В линуксе можно проверить зависимости библиотеки. Погугли как. Ну и сравни в рабочем линуксе и нерабочем.     | |||
| 18
    
        arsik гуру 21.07.23✎ 14:30 | 
        (17) Вот пример из гугла
 
 | |||
| 19
    
        arsik гуру 21.07.23✎ 15:15 | 
        +(18) Еще вариант прямые зависимости
 objdump -x <имяФайла> | grep -w NEEDED | |||
| 20
    
        Dimiurg1C 21.07.23✎ 16:32 | 
        (18) Да вроде одинаково, вот целевая
 linux-vdso.so.1 (0x00007fff1dbfd000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f677778f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6777774000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6777582000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6777433000) /lib64/ld-linux-x86-64.so.2 (0x00007f6777a27000) Вот что выдает где запускается linux-vdso.so.1 (0x00007ffd11ba9000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f24ea4bc000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f24ea4a1000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f24ea2af000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f24ea160000) /lib64/ld-linux-x86-64.so.2 (0x00007f24ea751000) | |||
| 21
    
        Dimiurg1C 21.07.23✎ 16:34 | 
        (19) Эта вообще одинаково
 NEEDED libstdc++.so.6 NEEDED libgcc_s.so.1 NEEDED libc.so.6 | |||
| 22
    
        arsik гуру 21.07.23✎ 16:51 | 
        а почему linux-vdso.so.1 - 1 на конце?     | |||
| 23
    
        Dimiurg1C 21.07.23✎ 17:08 | 
        (22) не знаю. А что должно быть?     | |||
| 24
    
        arsik гуру 21.07.23✎ 17:12 | 
        (23) Да я то откуда знаю. Ты же компоненту компилил.
 Вот состав стандартной компоненты устройств ввода нативная от 1С и там такого нет https://i.imgur.com/7n1P2lI.png | |||
| 25
    
        Dimiurg1C 21.07.23✎ 18:40 | 
        (24) Так то состав, зависимости то тут причем? При этом он не стандартный, тут компонента с нагрузкой идет уже, что то про сканер видимо.
 Стандартный это если она пустая. Возьмите .so из компоненты и сделайте ldd, тогда и сравнимо будет | |||
| 26
    
        Biker 21.07.23✎ 19:49 | 
        покажи strings /usr/lib/libstdc++.so.6 | grep GLIBC
 с обоих машин | |||
| 27
    
        Biker 21.07.23✎ 19:50 | 
        (26) точнее так strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX     | |||
| 28
    
        ДедМорроз 21.07.23✎ 21:51 | 
        А может там на сервере просто профиль безопасности,который любые компоненты не разрешает ?     | |||
| 29
    
        Dimiurg1C 22.07.23✎ 03:08 | 
        (28) Хорошее предположение, но как это проверить и исправить? Что такое в Линукс "профиль безопасности", как его посмотреть и пощупать и тем более как он может компоненты не разрешать?     | |||
| 30
    
        Dimiurg1C 22.07.23✎ 03:13 | 
        (27) Вот результат на Линуксе, где все работает
 LIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBCXX_3.4.23 GLIBCXX_3.4.24 GLIBCXX_3.4.25 GLIBCXX_3.4.26 GLIBCXX_3.4.27 GLIBCXX_3.4.28 GLIBCXX_DEBUG_MESSAGE_LENGTH А вот на том, где не работает GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBCXX_3.4.23 GLIBCXX_3.4.24 GLIBCXX_3.4.25 GLIBCXX_3.4.26 GLIBCXX_3.4.27 GLIBCXX_3.4.28 GLIBCXX_DEBUG_MESSAGE_LENGTH Как я понимаю, одинаково | |||
| 31
    
        Dimiurg1C 22.07.23✎ 03:29 | 
        (3) Попробовал на целевой машине собрать. Компиляция прошла успешно. К 1С все так же не подключается     | |||
| 32
    
        ДедМорроз 22.07.23✎ 11:38 | 
        (29) Консоль кластера - с машины на Windows заходишь на свой кластер и смотришь,что там.
 Нужно знать пароль администратора кластера и пароль администратора базы | |||
| 33
    
        ansh15 22.07.23✎ 18:34 | 
        (31) Версия платформы 1С одна и та же?
 В обоих вариантах компоненты платформы установлены одни и те же? Или, например, на виртуалке сервер приложений+клиентская часть, а на целевой машине только сервер приложений? | |||
| 34
    
        Dimiurg1C 23.07.23✎ 16:05 | 
        (32) Пока нет возможности проверить, сэмулировал на своем сервере - тогда генерится исключение с сообщением что подключение компоненты ограничено профилем. На целевой такого нет. 
 (33) Версия разная, но не думаю что это принципиально. Это кроме того что " а на целевой машине только сервер приложений" - вообще бред, т.е. я по вашему запускаю 1с без клиента вообще? В воздухе?)) | |||
| 35
    
        Garykom гуру 23.07.23✎ 22:01 | 
        (34) ну вдруг веб-клиента запускаешь ))     | |||
| 36
    
        Dimiurg1C 24.07.23✎ 12:40 | 
        (35) Подобное усложнение было бы освещено.     | |||
| 37
    
        arsik гуру 24.07.23✎ 13:29 | 
        (36) Ну узнай, AppArmor или selinux на проблемной машине работают?     | |||
| 38
    
        arsik гуру 24.07.23✎ 13:33 | 
        Статус selinux
 >getenforce Статус apparmor >sudo apparmor_status | |||
| 39
    
        Dimiurg1C 24.07.23✎ 19:47 | 
        (38) 1й судя по ответу терминала нет, а вот второй - да:
 apparmor module is loaded. 55 profiles are loaded. 53 profiles are in enforce mode. И дальше перечислено куча всего. Что это значит? | |||
| 40
    
        arsik гуру 25.07.23✎ 08:25 | 
        (39) Ну а на рабочем что?     | |||
| 41
    
        Dimiurg1C 25.07.23✎ 15:32 | 
        (40) На рабочем в смысле на том что работает? А то обычно рабочей называют базу заказчика, и она то и является проблемной тут.
 Да тоже самое | |||
| 42
    
        Dimiurg1C 27.07.23✎ 04:54 | 
        Вопрос решен. Все же коряво была установлена платформа до меня. Полноценная установка последней версии платформы решила проблему, все стало работать.
 До этого в установленных пакетах последней версии платформы не значилось. Подозреваю что ее туда как то запихали из установочника под терминалом, который не для Ubuntu предназначен был. Я установил из GUI, чтобы его вызвать еще пришлось прибегнуть к магии команды "xhost +" (Важно - не "xhost+", а именно с пробелом. Многие линуксоиды в своих форумах почему то пишут это без пробела, как будто все остальные обязаны рождаться с линуксом головного мозга). | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |