Скачивает исходные дистрибутивы и автоматизирует создание настроенных виртуальных машин.
В случае винды можно получить vhd/vhdx и потом настроить native boot в новую систему,
ну или склонировать содержимое россыпью на физический диск
Требования для локальной работы: хотя бы один гипервизор в рабочем состоянии.
Доступнее всего hyper-v (компонент старших версий винды) и virtualbox (устанавливается)
Vmware Workstation тоже годится
Для линуксоидов сработает в qemu/kvm — но настройка вашего линя для удобства с пакеером дело ваше
Код:
git clone https://github.com/StefanScherer/packer-windows.git |
— репозиторий со всем необходимым для билда всех версий винды
Документация на гитхабе, если что-то останется неясно готов объяснить
Если нет желания связываться с гитом, можно скачать к себе архивом
Установка языка программирования Go, среды разработки. Создание и компиляция первой программы
https://github.com/StefanScherer/packer-windows/archive/my.zip
Билд под Hyper-V запускается командой из распакованной папки packer-windows
Код:
packer build —only=hyperv-iso windows_10.json |
Как вариант, можно использовать —only=virtualbox-iso
Без этого флага пакер будет создавать Vagrant боксы для всех доступных гипервизоров, это могут быть ещё qemu и vmware (последний за деньги)
Set-WinSystemLocale -SystemLocale ‘ru-Ru’
Set-TimeZone -Id ‘Russian Standard Time’
Set-ExecutionPolicy RemoteSigned -Force
# скачаем в фоне хелп
Start-Job -ScriptBlock
# показывает доступные в винде пакетные менеджеры,
# флаг -ForceBootstrap автоматизирует установку dll, от которой пока зависит пакетный менеджмент в винде
# C:Program FilesPackageManagementProviderAssembliesnuget2.8.5.208Microsoft.PackageManagement.NuGetProvider.dll
Find-PackageProvider -ForceBootstrap
Install-Module Chocolatey -Force
# этот шаг можно пропустить
New-Item ‘~DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1’ -Force
New-Item ‘~DocumentsWindowsPowerShellMicrosoft.PowerShellISE_profile.ps1’ -Force
New-Item ‘~DocumentsPowerShellMicrosoft.VSCode_profile.ps1’ -Force
# выше создаются оба профиля для консольного хоста и для ISE,
# но автодополнение после choco установится только в тот из них, откуда запущено
# потом можно повторить в другом хосте
Install-ChocolateySoftware -Verbose
# чтобы не спрашивало подтверждения на установку каждой софтины
Get-ChocolateyFeature
Enable-ChocolateyFeature allowGlobalConfirmation
Install-ChocolateyPackage 7zip, notepadplusplus -Confirm:$false
# требуется перезагрузка после выполнения
Enable-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
Что делать, если Pycharm не видит библиотеку?
$VmPath = ‘C:AVMHyper-V’
$VhdPath = Join-Path -Path $VmPath -ChildPath ‘Virtual Hard Disks’
New-Item $VhdPath -ItemType Directory -Force
Set-VMHost -VirtualMachinePath $VmPath -VirtualHardDiskPath $VhdPath
Install-ChocolateyPackage packer -Confirm:$false
# здесь будут кэшироваться скачанные ISO
$PackerCacheDir = ‘C:APackerPACKER_CACHE_DIR’
New-Item $PackerCacheDir -ItemType Directory -Force
При первом запуске билда провайдером hyperv Packer создаст виртуальный свич ‘packer-hyperv-iso’.
Чтобы в виртуалке был интернет (например для скачивания обновлений), надо после его создания выпустить его в интернет:
Да, насчёт совместимости виртуалок VirtualBox и Hyper-V я похоже заблуждался.
VirtualBox давно объявил, что проблему решил после
Код:
Enable-WindowsOptionalFeature -FeatureName HypervisorPlatform -Online |
Но нет, пока только делает вид.
# делаем удобный путь для виртуалок
после этого можно билдить в нём
Если включён Hyper-V, то надо предварительно сделать
Код:
bcdedit /set hypervisorlaunchtype off |
Настраивать свич для virtualbox нет нужды
Создать бокс полностью автоматически с помощью вмваре воркстанции тоже можно, аналогично виртуалбоксу
Подробнее.
Ещё подробнее по запросу
Платный только Vagrant vmware плагин, который позволяет запускать виртуалки в сочетаниях из таких боксов (самодельных или взятых из публичного vagrantcloud)
До сих пор никто не спросил, что делать дальше с созданными пакером боксами.
Видимо, всем понятно
Пакер — это оркестратор автоустановки и «быстрой настройки» ОС.
Смысл его именно в его конфигурации — какие именно скрипты запускать в этом процессе, всё остальное обеспечивает пакер.
Освобождя умельцев от титанического сизифова труда по изобретению велосипедов
Перепаковка iso не нужна, т.к. пакер может юзать исходные образы из интернета, управление сборочной виртуалкой тоже автоматизировано пакером.
Отлаженные с пакером скрипты — обычные скрипты (в винде cmd/vbs/ps1), и могут впоследствии запускаться любым другим способом.
А вот про это поподробнее можно.
И мне, как абсолютному новичку, не очень понятно, если есть возможность пояснить. Вот у меня комп с установленной Oracle VM VirtualBox. С помощью этой утилиты я могу быстренько создать образ актуальной Windows 10 с различными твиками?
Второй момент
Цитата:
настройка свежеустановленной винды для запуска Packer |
, а если не свежая? Или я смысл просто неулавливаю? Т.е. зачем Packer на свежей винде? Спасибо!
Цитата:
Вот у меня комп с установленной Oracle VM VirtualBox. С помощью этой утилиты я могу быстренько создать образ актуальной Windows 10 с различными твиками? |
Цитата:
, а если не свежая? Или я смысл просто неулавливаю? Т.е. зачем Packer на свежей винде? Спасибо! |
При желании, можно проделать всё то же руками или на несвежей винде.
Но достичь своего идеала за один присест невозможно,
будешь отмерять 7777 раз — и всё равно отрежешь неправильно.
Так что, практически удобно переехать в свежую винду и уже в ней собирать следующую
Это называется dogfooding
(Искал по-русски покороче, не нашёл)
Сам сидишь в той оси, что только что собрал, и неизбежные улучшизмы фиксируешь в первую очередь в сборочных скриптах.
Пакер позволяет очень быстро собрать следующий релиз.
Цитата:
А вот про это поподробнее можно. |
Любой виртуальный диск можно примонтировать в хостовую систему соотв. утилитой.
А затем склонировать одним из бесчисленных инструментов — акронисом/парагоном/минитулом/чем угодно — на физический диск.
Теперь по утилите. Чтобы пользоваться утилиткой я скачиваю, например, архив из 1 сообщения. В папку iso копирую образ и командой
# делаем удобный путь для виртуалок
назначаю место для образа и
Код:
packer build —only=hyperv-iso windows10.json |
Цитата:
Сделать образ актуальной винды с набором драйверов для машины и набором софта. Далее все твики уже тестировать на клоне этой машины. |
У себя можешь делать так, как тебе удобнее.
Но и со своими проблемами в таком случае останешься наедине.
Наоборот, кто используют один и тот же комплект исходников (инсталляторы и ISO/ или боксы из vagrantcloud) — легко помогут друг другу со скриптами.
Кстати, если винда десятка смысла интегрировать дрова нет: она загрузится на любом железе и нужные дрова потом подтянет.
Цитата:
Теперь по утилите. Чтобы пользоваться утилиткой я скачиваю, например, архив из 1 сообщения. В папку iso копирую образ и командой |
Если у тебя интернет не «деревенский»,
советую для начала сделать в точности так, как я написал,
т.е. позволить пакеру скачать evaluation ISO и скриптам с гитхаба отработать в неизменном виде.
Я готов поддержать: помочь преодолеть трудности и ответить на любые вопросы в этом сценарии
Менять что-то будешь потом, когда получишь самостоятельный успешный опыт.
Цитата:
В папку iso копирую образ и командой |
И откуда по-твоему в таком случае пакер узнает, что ему не надо вытягивать iso?
Но если хочешь сразу заюзать свой уже скачанный ISO, то см. раздел Using existing ISOs тут
https://github.com/StefanScherer/packer-windows/blob/my/README.md
Код:
vboxmanage : Имя «vboxmanage» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличи |
Можно добавить его туда вручную
или не добавлять, а перед запуском сделать cd в этот каталог
Если ставить всё в чистую систему так как у меня написано через chocolatey, та утиль оказывается уже в пути
Да, если были в виртуалбоксе какие-то виртуалки уже — возможно, что устроит вариант проскочить этот шаг (т.е.. не менять путь для новых виртуалок)
И ещё.
Пакеру-то тоже понадобится vboxmanage, так что PATH всё-таки придётся подправить
Да, у каждой софтины свои настройки за прокси, и никто не обязан слушаться «общевиндовых» настроек.
С удивлением сам не нахожу решения, как сам пакер попросить юзать прокси, зато легко находится как настроить прокси в chocolatey
Для вариантов деревенского/запроксированного интернета
есть систематическое спасение: завести у себя за прокси собственный репозиторий «артефактов» (исошников, инсталляторов, шоколадных пакетов, повершел модулей)
Источник: forum.ru-board.com
go: термин «go» не распознается как имя командлета, функции, файла сценария или работающей программы
На этот вопрос ответили здесь, но в моем случае это не работает. Это может быть из-за новой версии кода VS. Мои шаги:
- Установленный плагин
- В командном окне ctrl+shift+P , поступил Go: Install/Update Tools и установил все 17 пакетов
- Но я получаю ошибку. вот структура dir:
- мой go env вывод из cmd :
D:PersonalLearningGoLangProject-1>go env set GOARCH=amd64 set GOBIN= set GOCACHE=C:Usersrog1AppDataLocalgo-build set GOEXE=.exe set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOOS=windows set GOPATH=C:Gobin;D:PersonalLearningGoLangProject-1; set GOPROXY= set GORACE= set GOROOT=C:Go set GOTMPDIR= set GOTOOLDIR=C:Gopkgtoolwindows_amd64 set GCCGO=gccgo set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:Usersrog1AppDataLocalTempgo-build020393970=/tmp/go-build -gno-record-gcc-switches
- CategoryInfo: ObjectNotFound: (go: String) [], CommandNotFoundException
- FullyQualifiedErrorId: CommandNotFoundException
- мой PATH переменная окружения: C:Gobin;
- мой VS Code setting.json запись:
«go.autocompleteUnimportedPackages»: true, «go.gopath»: «D:\Personal\Learning\GoLang\Project-1\», «go.goroot»: «C:\Go\»,
Что мне не хватает?
user9311179 26 апр ’19 в 18:46 2019-04-26 18:46
2019-04-26 18:46
2 ответа
Пожалуйста , попробуйте выполнить следующую команду в терминале vscode (который является экземпляром powershell):
$env:Path = [System.Environment]::GetEnvironmentVariable(«Path»,»Machine»)
Это сделает текущий экземпляр powershell для загрузки последней переменной PATH с машины.
user10115847 28 апр ’19 в 07:25 2019-04-28 07:25
2019-04-28 07:25
Иногда это происходит, когда вы установили Go а также Visual studio code и попытался запустить код без перезагрузки ОС.
Разрешение
—————-
- Попробуйте перезапустить ОС.
- Откройте код Visual Studio и попробуйте снова запустить код.
Источник: stackru.com
Go : Термин «go» не распознается как имя командлета, функции, файла сценария или исполняемой программы.
На этот вопрос был дан ответ здесь, но в моем случае это не работает. Это может быть из-за новой версии кода VS. Мои шаги:
- Установленный плагин
- В командном окне ctrl+shift+P введите Go: Install/Update Tools и установите все 17 пакетов.
- Но я получаю сообщение об ошибке. вот структура директории:
- Мой go env вывод из cmd :
D:PersonalLearningGoLangProject-1>go env set GOARCH=amd64 set GOBIN= set GOCACHE=C:Usersrog1AppDataLocalgo-build set GOEXE=.exe set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOOS=windows set GOPATH=C:Gobin;D:PersonalLearningGoLangProject-1; set GOPROXY= set GORACE= set GOROOT=C:Go set GOTMPDIR= set GOTOOLDIR=C:Gopkgtoolwindows_amd64 set GCCGO=gccgo set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD= set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:Usersrog1AppDataLocalTempgo-build020393970=/tmp/go-build -gno-record-gcc-switches
- CategoryInfo : ObjectNotFound: (go:String) [], CommandNotFoundException
- FullyQualifiedErrorId : CommandNotFoundException
- Моя переменная окружения PATH : C:Gobin;
- Моя VS Code setting.json запись:
«go.autocompleteUnimportedPackages»: true, «go.gopath»: «D:\Personal\Learning\GoLang\Project-1\», «go.goroot»: «C:\Go\»,
Что мне не хватает?
Комментарии (4)
похоже, он не находит файл go.exe по вашему пути. попробуйте открыть свой cmd и введите go, посмотрите, показывает ли он меню справки или эта команда не найдена
можете ли вы попробовать запустить эту команду на терминале vscode (который является экземпляром powershell): $env:Path = [System.Environment]::GetEnvironmentVariable(«Path»,»Machine»)
Источник: reddeveloper.ru