Мне удалось запустить Xvfb без root.
В конце концов, я загрузил исходный код с https://www.x.org/wiki/Releases/Download/ , внедрил переменные среды, установил зависимости (yum) и скомпилировал ] Xvfb
и перенес эти двоичные и разделяемые библиотеки в мою песочницу.
Важно отметить, что в [sources] /xkb/xkbInit.c
я добавил эти строки вокруг строки 815:
if (++i >= argc)
UseMsg();
else
XkbDfltRepeatInterval = (long) atoi(argv[i]);
return 2;
}
/* End original code */
// Change xkbcomp bin directory with an environment variable
char *xkbBinDir = getenv("XKB_BINDIR");
if (xkbBinDir) {
XkbBinDirectory = Xstrdup(xkbBinDir);
}
// Change base xkb directory with an environment variable
char *xkbBaseDir = getenv("XKBDIR");
if (xkbBaseDir) {
XkbBaseDirectory = Xstrdup(xkbBaseDir);
}
/* Original code */
return 0;
}
Я могу установить переменные среды XKB_BINDIR
в свой xkbcomp
двоичный путь (скопирован в песочницу) и XKBDIR
туда, где находится мой файл default.xkm
.
И снова моей успешной стратегией была компиляция Xvfb
из исходников с изменениями. Для мучительных подробностей и пошаговых инструкций я написал это на своем сайте здесь - https://ericdraken.com/running-xvfb-on-a-shared-host-without-x/
У @dirkt был интересный подход, который заключался в том, чтобы взломать двоичный файл Xvfb и выполнить манипуляции со строками. Это привлекательно, так как это быстро и несколько непослушно, но у него были недостатки: 1) я не могу знать номер сервера заранее [1 .. 99], и 2) Мои пути слишком длинные и потребуют символических ссылок. Я действительно пробовал команду NOP (:) в качестве замены строки вместе с ручным копированием server-N.xkm
, за исключением того, что есть два логических пути, с которыми нужно бороться в источнике код, один из которых, когда файл xkm кэшируется.
Низкий
и Высокий
не относятся к тому, большое использование или нет. Они представляют то, как это организовано системой.
Согласно Википедии:
Высокая память - это часть физической памяти компьютера, которая напрямую не отображается в таблицах страниц ядра его операционной системы.
У команды free
нет продолжительности, которая просто вычисляет моментальный снимок доступной информации.
Большинству людей, включая программистов, нет необходимости понимать это более ясно, поскольку им можно управлять в гораздо более простой форме с помощью системных вызовов и операций компилятора / интерпретатора.