Комментарии 34
Идея заключается в том, что создаваемый комплекс должен вести некоторую
обработку файлов и выдавать файловый же результат. То есть он должен
вести себя, как консольная программа.
Для это достаточно docker'a. Безо всяких приседаний.
И работать будет везде: от Windows до МАС.
Вот только он платный нынче под Винду)
И?
Винда сама бесплатная что ли? Если уж вы выбрали проприетарную платформу, то что теперь уж..
На нашел прайс на докер для винды
Можно ссылку пожалуйста?)
Докер требует VT-x и установки. Данное решение работает (очень не быстро, но это и не нужно было) без обоих этих условий. А устанавливать ещё и запрещено было.
А разве нельзя собрать под msys2 нативную программу? Там же есть mingw-gcc. Руками собирать ничего не надо. Несколько библиотек рядом с exe положить и вроде всё.
Сейчас у msys2 очень большие проблемы. Они судя по всему не справляются с проверкой базы пакетов. Поэтому они вообще перестали их подписывать. Ставьте на свой страх и риск. Дак вот страх и риск действительно есть. В пакетах встречаются вирусы.
Дайте, пожалуйста, где про это можно почитать и отслеживать ситуацию. Спасибо!
А судя по всему нигде. Я сам очень люблю этот проект. У меня давно развёрнута система на его базе с раздутым тулчейном, из которой я при помощи pacman'а извлекаю достаточные для конкретных продуктов подсистемы. И вот как-то раз я решил развернуть новую. Каково же было моё удивление, когда система после установки отказалась обновляться, ругаясь на ключи. Систему я все таки развернул, отключив проверку ключей, но вот антивирус ругался на неё изрядно. Вы можете проделать тот же эксперимент.
У меня инсталляция msys2 есть, Windows defender на неё не ругается. Вы уверены, что у вас не false positive?
PS а как это - из одной системы msys2 с помощью pacman извлекать другие системы?
Ключи могли и устареть, если их не обновлять регулярно.
Ключи не могли устареть. Это была свежая установка с только что скачанного инсталлера.
А на тему извлечения систем, нужно создать свой пакет с помощью PKGBUILD, примерно так:
_realname=example
pkgbase=mingw-w64-x86_64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.0.1
pkgrel=1
arch=('x86_64')
pkgdesc="Multi-complete-set keyless selflearning decrypter (mingw-w64)"
depends=("${MINGW_PACKAGE_PREFIX}-adwaita-icon-theme"
"${MINGW_PACKAGE_PREFIX}-gsettings-desktop-schemas"
"${MINGW_PACKAGE_PREFIX}-gtkmm3"
"${MINGW_PACKAGE_PREFIX}-intel-tbb"
"${MINGW_PACKAGE_PREFIX}-sqlite3"
"${MINGW_PACKAGE_PREFIX}-gcc-libs"
)
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-pkg-config")
license=("MIT")
source=("${_realname}.tar.xz")
md5sums_placeholder
#prepare() {
#}
build() {
[[ -d build-${MINGW_CHOST} ]] && rm -rf build-${MINGW_CHOST}
mkdir -p build-${MINGW_CHOST} && cd build-${MINGW_CHOST}
${MINGW_PREFIX}/bin/cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_GENERATOR="Unix Makefiles" -DCMAKE_INSTALL_PREFIX="${pkgdir}"${MINGW_PREFIX}
make -j4
}
package() {
cd "${srcdir}/build-${MINGW_CHOST}"
DESTDIR="${pkgdir}${MINGW_PREFIX}"
make install
}
А потом выполнить примерно такой скрипт для его установки в отдельную, специально для него подготовленную систему:
# Создаём внешнюю систему.
pacman -Sy
pacman -Syu --root "/e/projects/example
# Устанавливает новую версию пакета с необходимыми зависимостями в систему msys2.
CURRENT_DIR=${PWD}
_new_root="/e/projects/example"
pacman -Sy
#install_package
pacman --root ${_new_root} --cachedir /var/cache/pacman/pkg --dbpath /var/lib/pacman --config /etc/pacman.conf -Sy
pacman --root ${_new_root} --cachedir /var/cache/pacman/pkg --dbpath /var/lib/pacman --config /etc/pacman.conf -S mingw-w64-x86_64-example
# Создаём *.bat запускаторы для винды.
rm -f ${_new_root}/run_example.bat
echo "cd mingw64\bin" >> ${_new_root}/run_example.bat
echo "start example.exe" >> ${_new_root}/run_example.bat
echo " " >> ${_new_root}/run_example.bat
cd ${CURRENT_DIR}"
Получается система, минимально необходимая для собранного проекта с удобными .bat запускаторами для винды. Весит это всё равно довольно много, но меньше на msys2 сделать сложно. Только руками резать библиотеки, в которых на 100% уверен, что они не нужны.
А cloud-init или аналогов под Manjaro нет?
есть, но это не потянет на статью про буханку и тролейбус)
# Проверяем на включенность виртуализации и предупреждаем пользователя, если что.
if len(set(cpuinfo.get_cpu_info()['flags']).intersection({'vmx', 'svm'})) > 0:
cpu = '-enable-kvm -cpu host'
а каким образом флаг -enable-kvm должен помочь под виндой, где kvm нет и быть не может?
Никак. Код был скопипащен с линуксового теста. В статье всё исправлено.
Теоретически можно использовать vagrant для тех же целей. Запихнуть в свой сетап дистриб virtual box. Не думаю, что пользователь сильно обидется. Туда же можно подптхнуть уже готовый образ виртуалки. Команды в консоле можно выполнять через vagrant ssh.
Здравствуйте, давно хотелось спросить, сколько вы непосредственно пишете код программ при 10-часовом рабочем дне. Ну скажем, в офисе??
Очень странно сформулированный вопрос. Тем более, что не по теме. Но если предположить, что вопрос задаёт человек, желающий найти работу в области IT, и прикидывает как и чем ему придётся заниматься, то это очень сильно зависит от того, куда Вы попадёте. Мне повезло, и я никогда не был программистом, выполняющим конкретное задание в стиле за N часов тебе нужно написать K функций согласно ТЗ. Но в любом случае, на старте карьеры всё зависит от образования и места работы. Плюс одно и то же действие разные люди делают за разное время. Так что свой вопрос Вы можете задать себе из будущего.
Использовать qemu на Windows без VM acceleration?
Ну хотя бы так (HAXM) и (WHPX):
https://developer.android.com/studio/run/emulator-acceleration#vm-windows
На Virtualbox скорость работы с vm нормальная.
Настраиваешь в фоне с автозагрузкой и управляешь через терминал (VBoxManage list vms)
Пользовался на 7-ке лет 8-10 назад. Правда и ушел тогда окончательно на Linux и KVM.
https://www.google.com/search?q=Как+запустить+Virtualbox+как+сервис+в+windows+7
VBoxHeadlessTray
https://www.toptensoftware.com/vboxheadlesstray/
vboxsvc - VirtualBox SMF service wrapper
https://sourceforge.net/projects/vboxsvc/
VBoxVmService
https://github.com/onlyfang/VBoxVmService
Ну и:
dd if=/dev/zero bs=1M of=zero.temp ; sync; rm zero.temp
Весь вопрос в том, чтобы ничего не устанавливать. А конкретная задача была не особо требовательна к ресурсам и выполнялась и так. Если бы нужно было что-то серьёзное вычислять, то да. Я не утверждаю, что решение годится для повсеместного использования.
А вот про dd я кое чего не понял. bs=1M, это судя по всему для ускорения. А вот sync зачем? Я так понимаю, что перед началом следующей операции (в данном случае это удаление), предыдущие должны быть завершены полностью. Или тут есть нюансы? В тестах всё работало, но возможно разные файловые системы могут вести себя по разному.
А зачем так сложно? Линукс-сервер в сети и win-клиенты. Не ?
Извините за то, что ответил разом на все комментарии месяца через два после появления вопросов. К сожалению, так сложились обстоятельства.
Как незаметно запускать виртуальный Linux на QEMU