Скомпилируйте статический tmux с поддержкой libutempter

Я только что выполнил команду mv для файла объемом 31 Гб и для файла объемом 13 Гб. Создан файл swp, редактирование не требуется.mv X.csv Y.csv[11559] создал Y.csv и .Y.csv.swp

CentOS 6.5, файловая система ext4

.

2
30.01.2015, 11:36
1 ответ

Это намеченная цель libutempter , но для этого также требуется уровень поддержки приложений, который tmux получил только недавно (февраль 2014 г.) . ветка master (которую вы используете), но может быть не готова к использованию.

Из FAQ в текущем дистрибутиве исходного кода 1.9a:

* How is tmux different from GNU screen?
  [...]
  - screen has support for updating utmp. Nobody has really come up with a clean,
    portable way to do this without making tmux setuid or setgid yet.

В главной ветке онлайн-FAQ пропущен именно этот пункт, хотя файл CHANGES еще не обновлен.

Проверьте определение HAVE_UTEMPTER в Makefile (не ожидаемый config.h !) После запуска configure , если это не так После этого вам нужно прочитать config.log , чтобы определить, что не так со средой сборки.

Мои лучшие предположения на данный момент:

  • у вас нет libutempter.a , только libutempter.so , поэтому использование -static вызывает сбой определения libutempter, поскольку он не может быть связан
  • , он обнаруживается и компилируется, но помощник utempter (для которого выполняется привилегированная задача обновления utmp делегированный) не setgid (обычно setgid utmp)
  • известно, что некоторые системы ограничивают доступ к этому помощнику, чтобы предотвратить глупость , поэтому вызывающий двоичный файл (т.е. tmux ) должен также иметь setgid (обычно setgid utempter)

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

Если у вас нет root-доступа, вы не сможете правильно установить свой собственный libutempter: он не сможет поддерживать системные файлы utmp / wtmp . Если есть системная установка libutempter, в которой отсутствует только libutempter.a , тогда вы сможете скомпилировать свой собственный libutempter.a , чтобы настроить / ссылку tmux статически и используйте уже установленный системный помощник setgid (обычно / usr / lib / utempter / utempter или / usr / libexec / utempter / utempter ). Вы не можете обойти проблему, если доступ к этому двоичному файлу также ограничен, т.е. tmux должен быть установлен gid для его запуска.

Обработка ошибок для новых функций libutempter в tmux в настоящее время не завершена, если вы можете перестроить libutempter с помощью -DUTEMPTER_DEBUG , это может помочь, если ничего из вышеперечисленного не помогло:

make CFLAGS=-DUTEMPTER_DEBUG
2
27.01.2020, 22:12

Теги

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