argon2_elixir – Есть ли в мире хоть кто-то, кто смог установить это нативно на Windows? Или есть какие-то обходные пути?

Вопрос или проблема

argon2_elixir – Есть ли в мире хоть кто-то, кто смог установить это нативно на Windows? Или есть какие-то обходные пути?

Начинается с этой ошибки:


не удалось скомпилировать зависимость :argon2_elixir, "mix compile" завершился неудачей. Ошибки, возможно, были зарегистрированы выше. Вы можете повторно скомпилировать эту зависимость с помощью "mix deps.compile argon2_elixir --force", обновить ее с помощью "mix deps.update argon2_elixir" или очистить с помощью "mix deps.clean argon2_elixir"
** (Mix) "nmake" не найден в пути. Если вы задали переменную окружения MAKE, убедитесь, что она корректна.

После установки переменной окружения MAKE я теперь получаю

>mix deps.compile argon2_elixir --force
==> argon2_elixir
не удалось скомпилировать зависимость :argon2_elixir, "mix compile" завершился неудачей. Ошибки, возможно, были зарегистрированы выше. Вы можете повторно скомпилировать эту зависимость с помощью "mix deps.compile argon2_elixir --force", обновить ее с помощью "mix deps.update argon2_elixir" или очистить с помощью "mix deps.clean argon2_elixir"
** (Mix) "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64" не найден в пути. Если вы задали переменную окружения MAKE, убедитесь, что она корректна.

Если я только имею его в пути и нет MAKE, я получаю


Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation. Все права защищены.

        del /Q /F priv
Не удалось найти d:\PROJECTS\HUGE\VerityIds\OTHERS\shif\deps\argon2_elixir\priv
        erl -noshell -eval "io:format(\"ERTS_INCLUDE_PATH=~ts/erts-~ts/include/\", [code:root_dir(), erlang:system_info(version)])." -s init stop > Makefile.auto.win
        nmake /                   /F Makefile.win priv\argon2_nif.dll

Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation. Все права защищены.

        if NOT EXIST "priv" mkdir "priv"
        cl /O2 /EHsc /I"argon2\include" /I"argon2\src" /I"c:/Program Files/Erlang OTP/erts-13.2.2.6/include/" /LD /MD /Fepriv\argon2_nif.dll argon2\src\argon2.c argon2\src\core.c argon2\src\blake2\blake2b.c 
argon2\src\thread.c argon2\src\encoding.c argon2\src\ref.c c_src\argon2_nif.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.41.34120 для x64
Copyright (C) Microsoft Corporation. Все права защищены.

argon2.c
argon2\src\argon2.c(18): фатальная ошибка C1083: Не удается открыть файл включения: 'string.h': Нет такого файла или каталога
core.c
argon2\src\core.c(20): фатальная ошибка C1083: Не удается открыть файл включения: 'windows.h': Нет такого файла или каталога
blake2b.c
argon2\src\blake2\blake2b.c(18): фатальная ошибка C1083: Не удается открыть файл включения: 'stdint.h': Нет такого файла или каталога
thread.c
d:\PROJECTS\HUGE\VerityIds\OTHERS\shif\deps\argon2_elixir\argon2\src\thread.h(34): фатальная ошибка C1083: Не удается открыть файл включения: 'process.h': Нет такого файла или каталога
encoding.c
argon2\src\encoding.c(18): фатальная ошибка C1083: Не удается открыть файл включения: 'stdio.h': Нет такого файла или каталога
ref.c
argon2\src\ref.c(18): фатальная ошибка C1083: Не удается открыть файл включения: 'stdint.h': Нет такого файла или каталога
argon2_nif.c
c_src\argon2_nif.c(26): фатальная ошибка C1083: Не удается открыть файл включения: 'stdio.h': Нет такого файла или каталога
Генерация кода...
NMAKE: фатальная ошибка U1077: 'cl /O2 /EHsc /I"argon2\include" /I"argon2\src" /I"c:/Program Files/Erlang OTP/erts-13.2.2.6/include/" /LD /MD /Fepriv\argon2_nif.dll argon2\src\argon2.c argon2\src\core.c argon2\src\blake2\blake2b.c argon2\src\thread.c argon2\src\encoding.c argon2\src\ref.c c_src\argon2_nif.c' : код возврата '0x2'
Стоп.
NMAKE: фатальная ошибка U1077: 'nmake /                   /F Makefile.win priv\argon2_nif.dll' : код возврата '0x2'
Стоп.
не удалось скомпилировать зависимость :argon2_elixir, "mix compile" завершился неудачей. Ошибки, возможно, были зарегистрированы выше. Вы можете повторно скомпилировать эту зависимость с помощью "mix deps.compile argon2_elixir --force", обновить ее с помощью "mix deps.update argon2_elixir" или очистить с помощью "mix deps.clean argon2_elixir"
** (Mix) Не удалось скомпилировать с помощью "nmake" (код выхода: 2).
Один из вариантов - установить недавнюю версию
[Visual C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
либо вручную, либо с помощью [Chocolatey](https://chocolatey.org/) -
`choco install VisualCppBuildTools`.

После установки Visual C++ Build Tools, загляните в директорию "Program Files (x86)"
и найдите "Microsoft Visual Studio". Запомните полный путь
к папке с самым высоким номером версии. Откройте команду "run" и введите следующую команду (убедитесь, что путь и номер версии
правильные):

    cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64

Это должно открыть командную строку с необходимыми переменными окружения
установлены, и из которой вы сможете выполнить команды "mix compile", "mix deps.compile"
и "mix test".

Другой вариант - установить инструменты совместимости с Linux из [MSYS2](https://www.msys2.org/).

После установки откройте 64-битный терминал msys из меню "Пуск" и установите
инструментарий компилятора C/C++. Например:

  pacman -S --noconfirm pacman-mirrors pkg-config
  pacman -S --noconfirm --needed base-devel autoconf automake make libtool git \
    mingw-w64-x86_64-toolchain mingw-w64-x86_64-openssl mingw-w64-x86_64-libtool

Это даст вам комплект компиляции, почти совместимый со стандартными инструментами Unix.

Я использую:
{:argon2_elixir, “~> 3.1”},
Я на Windows с установленным Visual Studio 2022
Я пытался использовать mingw и смог установить его, как указано в командах pacman, и могу выполнить make –version и gcc –version, но все равно не могу установить ничего

wsl не является вариантом, также есть ли способ настроить elixir для установки альтернативного алгоритма на Windows или игнорировать сбой установки в mix, чтобы в среде Linux использовать argon по умолчанию

Ответ или решение

К сожалению, установка библиотеки argon2_elixir на Windows может быть проблематичной. Эта проблема обусловлена зависимостями от внешних инструментов сборки и наличием среды разработки. Однако ниже приведены совокупные шаги, которые могут помочь в установке argon2_elixir на Windows.

Шаги для установки argon2_elixir на Windows:

  1. Установка Visual C++ Build Tools:

    • Убедитесь, что у вас установлены последние Visual C++ Build Tools.
    • После установки откройте командную строку и выполните команду:

      cmd /K "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\vcvarsall.bat" amd64

    Замените путь на соответствующий вашей версии Visual Studio.

  2. Проверка переменных среды:

    • Убедитесь, что в системных переменных установлены пути к nmake и cl (компилятор Visual C++).
  3. Установка MSYS2 (альтернативный способ):

    • Вы также можете установить MSYS2, который предоставляет инструменты сборки, аналогичные Unix.
    • После установки откройте MSYS2 терминал и выполните следующие команды:

      pacman -Syu
      pacman -S --needed base-devel mingw-w64-x86_64-toolchain

    Это установит необходимые инструменты для сборки.

  4. Настройка пути к компилятору:

    • Убедитесь, что пути к компилирующим инструментам (например, gcc, make) добавлены в переменную окружения PATH.
  5. Попробуйте установить argon2_elixir:

    • После выполнения всех вышеперечисленных шагов, попробуйте снова выполнить команду:

      mix deps.compile argon2_elixir --force

Альтернативные решения:

  1. Используйте другую библиотеку:

    • Если установка argon2_elixir по-прежнему невозможна, вы можете рассмотреть возможность использования другой библиотеки для хеширования паролей, которая совместима с Windows, например, bcrypt.
  2. Изменение конфигурации проекта:

    • В вашем проекте вы можете изменить конфигурацию так, чтобы вместо argon2_elixir использовалась альтернатива. Найдите соответствующий файл конфигурации и измените использование алгоритма.
  3. Поддержка отключения неудачной сборки:
    • Если argon2_elixir не удается установить, и вы хотите, чтобы проект продолжал работу, можно обернуть часть кода, которая зависит от данной библиотеки, в условные отборы, проверяющие доступность argon2.

Заключение

Установка argon2_elixir на Windows может потребовать определённых усилий и настройки. Если вы продолжаете сталкиваться с проблемами, пожалуйста, проверьте все шаги, убедитесь, что все зависимости и пути установлены правильно, и не стесняйтесь использовать альтернативные библиотеки, которые могут облегчить процесс разработки.

Оцените материал
Добавить комментарий

Капча загружается...