Я должен потрудиться устанавливать 32-разрядные библиотеки KDE?

[112582] По крайней мере, на системах GNU, FreeBSD или Solaris, этот метод грубой силы работает:

Хотя, согласно C/POSIX, [112920]wchar_t[112921] является непрозрачным типом, который не имеет никакого отношения к Юникоду и гарантированно охватывает только все символы, поддерживаемые системной локалью, на практике в большинстве систем, которые поддерживают Юникод, значения действительно соответствуют точкам кода Юникода, а определения локали сами по себе основаны на Юникоде.

Юникод предназначен для того, чтобы быть суперсетью всех известных кодовых страниц, поэтому наведение шлейфа на все действительные точки кода в Юникоде (от 0 до 0xD7FF и от 0xE000 до 0x10FFFFF) должно перечислять, по крайней мере, все символы, поддерживаемые данной кодовой таблицей.

Здесь мы используем системный API стандарта локали, чтобы проверить, какие из них имеют заданный тип, и преобразовать его в свою кодированную форму в кодировке локали. Мы используем [112922]perl[112923] и его [112924]charnames[112925] модуль только для того, чтобы получить имя из заданной кодовой точки Юникода.

На локалях, использующих кодировку с контролем состояния, такую как ISO-2022-JP, мы проверяем, чтобы кодированная форма отображалась из исходного состояния по умолчанию.

enter image description here

Я не нашел системы, в которой были бы установлены локали с кодировкой, основанной на статистике, но, по крайней мере, в системах GNU можно генерировать такие локали, чтобы можно было создать неавторизованную локаль (и, по крайней мере, инструменты GNU не работают должным образом в этих локалях). Например, с пользовательской локалью, которая использует ISO-2022-JP с нормальной [112926]ja_JP[112927] локалью, я получаю:

Сравнение с:

В ISO-2022-JP последовательность [112928]1B 24 42[112929] ([112930]\e$B[112931]) переключается из ASCII в состояние, в котором символы выражены в 2 (7-битных) байтах (здесь 21 21 для данного IDEOGRAPHIC SPACE). В EUCJP это те же самые байты, но переключение состояния [112932] [112933] происходит путем переворачивания 8-го бита ([112934]A1 = 21 | 0x80[112935]), что делает его более апатридным.

Это означает, что в этих кодировках со статусом существует несколько способов записи заданного символа (например, путем вставки нескольких из этих последовательностей [112936] переключения состояний[112937]), и показанная выше последовательность по этому коду является всего лишь одной из них (канонической из начального состояния по умолчанию).

Хотя для нормальной локали символы не могут находиться за пределами 0...0xD7FF, 0xE000...0x10FFFFF, для [112938]rogue[112939] локали любым символом в диапазоне, поддерживаемом wchar_t, может быть любой символ. Например, я могу создать локаль, где символы U+DCBA или U+12345678 (или были бы символами, если бы они были разрешены) являются [112940]пустыми[112941]. Поэтому, чтобы скомпилировать этот код с [112942]-D SUPPORT_ROGUE_LOCALES[112943], нужно скомпилировать этот код, хотя это значит, что сканирование всего списка займет намного больше времени.

Я не смог использовать решение @mikeserv, так как [112944]recode[112945] использует свои собственные преобразования, больше не поддерживается и поддерживает только символы Юникода до 0xFFFF, а GNU [112946]tr[112947], по крайней мере, не работает с многобайтовыми символами.

@ChrisDown's[112949] я не смог использовать [112948]@ChrisDown's[112949], так как [112950]python[112951] не имеет интерфейсов к POSIX-символьным классам.

Я попробовал Perl, но он поддельный для точек кода от 128 до 255 для многобайтных локалей, отличных от UTF-8, и не использует системные библиотеки преобразования.[112607].

1
18.02.2015, 15:37
1 ответ

Также необходимо выполнить экспорт JAVA _ HOME =/usr/local/java/ Где /usr/local/java/ - символическая ссылка для текущей версии java, которую должен использовать сервер. Также в файле /etc/profile я задаю следующее:

export JAVA_HOME=/usr/local/jdk1.8.0_31/
export PATH=$JAVA_HOME/bin:$PATH
-121--141547-

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

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

Затем вы можете забрать почту с помощью fetchmail или аналогичной программы, которая взаимодействует с вашим локальным постфиксом , только прослушивая локальные соединения. (если ваш сервер имеет фиксированный IP-адрес и может обрабатывать внешние stmp-соединения, вы можете пропустить этот шаг и сделать только остальное).

postfix должен быть настроен на использование procmail в качестве команды почтового ящика (в main.cf :

mailbox_command = procmail -a "$EXTENSION"

fetchmail должно выполняться как обычное (я проверяю каждую минуту у поставщика) cron-задание для какого-либо пользователя, который выполняет обработку. Этот пользователь должен иметь файл ~/.procmailrc , который может выполнять некоторую фильтрацию и передавать электронное письмо в скрипт, используя запись, например:

:0
$ ^Subject:.*some_text_that_has_to_be_in_the_subject_to_be_valid_for_processing
| /usr/local/bin/your_program 

Теперь ваша _ программа должна иметь возможность обрабатывать формат файла (заголовок, за которым следует тело). Я использую python и его стандартный модуль email для обработки тонкостей вложения MIME.

Наконечник: Чтобы ваша _ программа полностью сохранила входящие данные (на sys.stdin ) в каком-то файле xyz во время разработки, чтобы вы могли посмотреть на это и разработать это самостоятельно (просто выполнив вашу _ команду < xyz ), чтобы вам не пришлось проходить через проблемы отправки электронных писем с помощью

-121--108446-

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

Можно проверить, какие библиотеки необходимы двоичному файлу для связи с ldd . Например:

> ldd /opt/VirtualBox/VirtualBox
    linux-vdso.so.1 =>  (0x00007fff02b70000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f06d744f000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f06d724b000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f06d6f42000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f06d6b84000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f06d768e000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f06d687d000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f06d6666000)

Так что нет, что не нужно 32-битных KDE libs. Есть и другие двоичные файлы, связанные с VirtureBox, я не уверен, для чего они все, но они включают некоторые libs с Qt в их имени, например, libQtGuiVBox . Но find/opt/VirtureBox -executable -name «* Qt *» ldd '{}' + показывает их как все, связанные с 64-разрядными libs, и снова, не имеющие ничего общего с KDE.

Имейте в виду, что хотя KDE использует Qt, Qt не зависит от KDE. Они не являются одним и тем же проектом. Требование Qt не означает требование KDE.Я не вижу причин, по которым закрытые приложения, такие как те, которые вы упомянули, потребуют части KDE, хотя случаются более тупые вещи.

Если двоичный файл требует отсутствующей библиотеки, вы получите, например,

 libQtCoreVBox.so.4 => not found

VirtureBox - это особый случай; причина, по которой компоновщик не обнаружил этого, заключается в том, что его нет в обычном пути к библиотеке. Но vbox на самом деле начинается со сценария, который, предположительно, заботится о этих деталях.

3
27.01.2020, 23:27

Теги

Похожие вопросы