08 декабря 2019

Transmission и костыль для больших файлов.



На 32-битных платформах при самостоятельной сборке Transmission из git-репозитория столкнулся с одной очень неприятной проблемой. При попытке скачивания файла размером больше примерно 1,75 ГБ закачка останавливается с ошибкой "Invalid argument". На 64-битных платформах такой проблемы нет. Гуглинг и на этот раз помог проблему решить.

В репозитории есть обсуждение подобного бага. Там-то я и нашёл решение. При конфигурировании сборки не происходит включение поддержки больших файлов. В обсуждении приводится такой способ решения проблемы:

# создание каталога для сборки
mkdir -p build
cd build
# конфигурирование
env CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES=1" cmake ..
# сборка и установка
make
sudo make install

Я же для настройки использую ccmake - curses-оболочка для cmake. В ней для добавления параметров нужно:
  • нажать "t" для перехода в расширенный режим;
  • найти параметр "CMAKE_C_FLAGS"
  • присвоить ему значение "-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES=1"
  • нажать "c"  для повторного конфигурирования;
  • нажать "g" для генерация Make-файлов и выхода.
После этого можно собрать и установить программу. Теперь большие файлы должна скачиваться без проблем.