Готов ли пользователь Windows к apt-get?

Как оно работает

Chocolatey позволяет Вам быстро устанавливать Windows приложения из командной строки с помощью сводного каталога инсталляционных скриптов. Вы можете установить Git, 7Zip или даже Microsoft Office (если у Вас есть ключ). Идея заключается в беспроблемной и тихой установке с помощью известного ключа.

Например, как только Вы его установили, Вы можете выполнять из командной строки следующие команды:

  • cinst git
  • cinst 7zip
  • cinst ruby
  • cinst vlc

Фактически, это оно и есть.

Каталог стал настолько огромным, что даже когда я недавно захотел установить DosBox, чтобы поиграть в Zork, я решил попробовать и ввел “cinst dosbox”, и это сработало. Это именно то, что и обещает Chocolatey.

Начало работы в chocolatey

Сначала устанавливаем диспетчер пакетов Chocolatey. Скопируйте данную строчку, вставьте её в свою командную строку и запустите. (Более подробно про боязнь этого первого шага чуть позже).

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

Вероятно, что вы предпочитаете знать, что сделает данная строка с вашим компьютером, перед тем, как вы выполните её, так что давайте её проанализируем. Она запустит PowerShell, который и выполнит всю трудную работу. Сегодня практически на каждом компьютере с Windows есть PowerShell, и именно он заставляет Chocolatey работать.

У некоторых созданы особые профили, так что опция –NoProfile блокирует их во избежание конфликтов во время установки. Она запускает фрагменты PowerShell скрипта, которые загружает с https://chocolatey.org/install.ps1/, а затем выполняет их. Обратите внимание, что это не запрещено её правилами выполнения. Чтобы было понятнее, исполняемый код загружается из сети, так что нету никакого риска. Затем он добавляет Chocolatey в ваш path (для этого окошка запроса), так что вы можете сразу им пользоваться. Он будет автоматически добавлен к последующим появляющимся окнам запроса.

А сейчас взгляните на https://chocolatey.org/install.ps1. Это очень простой и понятный скрипт. Он загружает zip архив с установщиком Chocolatey (который на самом деле является NuGet пакетом), распаковывает его и продолжает установку, запуская скрипты в секции инструментов пакета.

Как оно работает

Chocolatey – начальный загрузчик, который использует PowerShell-скрипты и формат пакетирования NuGet для того, чтобы устанавливать приложения. NuGet – это система управления пакетами, используемая разработчиками Windows для того, чтобы «опустить» библиотеки до проектного уровня. Chocolatey (поняли? Chocolatey Nu-Get?) делает эту идею более обширной – до того, чтобы «опустить» приложения до системного уровня.

На сегодняшний день, если Вы хотите установить 7Zip, Вы ищете его в Google, находите нужный сайт, выбираете новейшую или нужную версию для Вашей системы, скачиваете её, запускаете, «далее» «далее» «далее» «завершить» и, возможно, «добавить в path». Chocolatey делает всё это за Вас.

            Повторюсь, NuGet – библиотеки, устанавливаемые локально для проектов. Chocolatey – приложения, устанавливаемые глобально для всей системы.

Chocolatey использует скрипты PowerShell (о которых Вам никогда не придётся задумываться), используемые разработчиками пакетных программ для создания цепочек установок и деревьев зависимостей. Взгляните, к примеру, на составляющие скрипта установки Git:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

try {

  Install-ChocolateyPackage 'git.install' 'exe' '/VERYSILENT' 'http://msysgit.googlecode.com/files/Git-1.8.1.2-preview20130201.exe'

 

  #------- ADDITIONAL SETUP -------#

  $is64bit = (Get-WmiObject Win32_Processor).AddressWidth -eq 64

  $programFiles = $env:programfiles

  if ($is64bit) {$programFiles = ${env:ProgramFiles(x86)}}

  $gitPath = Join-Path $programFiles 'Git\cmd'

 

  Install-ChocolateyPath $gitPath 'user'

 

@"

 

Making GIT core.autocrlf false

"@ | Write-Host

 

  #make GIT core.autocrlf false

  & "$env:comspec" '/c git config --global core.autocrlf false'

 

  Write-ChocolateySuccess 'git.install'

} catch {

  Write-ChocolateyFailure 'git.install' $($_.Exception.Message)

  throw

}

Самая важная часть здесь – это первая строчка. Заметьте, что данный Chocolatey-скрипт загружает Git с сайта mSysGit. Chocolatey не меняет, не создаёт и не содержит в себе установщики. Он автоматизирует скучный процесс получения ПО, но загружает это ПО с того же места, что и обычно.

Продвинутые функции

Как только вы выучили основы – а они довольно базовые – в Chocolatey есть, что изучить дальше. Кроме команд cinst и cuninst, существуют другие, которые делают проще установку приложений на Windows. Помните, все они находятся в PATH, так что вы можете в любое время вызвать данные команды.

Каждый из этих основных источников может быть вызван командой cinst с помощью параметра –source, например “cinst IISExperss –source WebPI”, или же с помощью их собственных псевдонимов, как это показано ниже.

  • cwindowsfeatures– если вы когда-нибудь запускали Установку либо Удаление Программ, затем нажимали Установить Компоненты Windows, чтобы настроить IIS или Hyper-V, тогда эта команда для вас. Несколько примеров:
    • cwindowsfeatures IIS-WebServerRole
    • cwindowsfeatures Microsoft-Hyper-V-All
    • cwindowsfeatures TelnetClient
    • Кроме того, Вы всегда можете использовать clist –source windowsfeatures для выведения полного списка.
    • cwebpl– Web Platform Installer – замечательный GUI для скачки любых инструментов разработчика, которые вам могут понадобиться для разработки веб-приложений на Windows. Это каталог, установщик и создатель цепочек. Существует также версия WebPI для командной строки, с которой интегрируется Chocolatey. Так что Вы можете:
      • cwebpi IISExpress
      • cwebpi VWDOrVs11AzurePack_2_0
      • И ещё раз, clist –source webpi выведет список того, что Вы можете сделать.

Более подробный список вы можете найти на Chocolatey Commands Reference, где также рассказано про интеграцию с Cygwin, Gems и Python.

Проблемы безопасности

 

А вот здесь начинаются проблемы. Возможно ли создать систему, которая позволяет вам устанавливать любые приложения прямо из Интернета быстро и легко без установки чего-либо вредоносного? Вы хотите, чтобы соединение с сервером было защищенным, а пакеты надежными, но вы также хотите быть уверены в том, что пакеты не были подделаны с момента их загрузки. И здесь существует угроза атак «человек посередине». Вы хотите отслеживать вредоносные пакеты и быть способными быстро удалять те, которым всё же удалось проскочить.

Конечно, проблемы с безопасностью есть не только у Chocolatey. Они являются частью пакетных репозиториев с момента их создания. В марте 2012 была обнаружена брешь в защите узлового npm репозитория, и народ из Andyet изучил всё, что с этим связано, однако они также отметили, что в данном вопросе играет роль и личная ответственность.

Apt-get на Linux решает большую часть этого вопроса благодаря использованию криптографии и лучших технологий, на которые можно (и следует) равняться. Пакеты в apt-репозиториях подписываются с помощью SecureApp, при попытке использования стороннего репозитория либо же установке неподписанного пакета, появляются предупреждения.

Команда Chocolatey быстро и охотно отреагировала на проблемы с безопасностью. Они добавили SSL, где это необходимо, и понимают, что ещё им предстоит сделать. Если Chocolatey будет расти (я имею в виду широкое использование и затраты), то, возможно, какая-нибудь некоммерческая организация захочет помочь не только с затратами, но и с проверкой защиты, а также передовыми технологиями.

Вот несколько мнений (я их немного сократил), взятых из сообщения руководителя Chocolatey, подписывающегося как Роб в их списке адресатов, также в марте 2012 года:

«У безопасности Chocolatey есть большой потенциал. На сегодняшний день я являюсь руководителем данного проекта и каждый день получаю письмо, в котором указаны все новые пакеты, вышедшие за предыдущий день. Я рассматриваю пакеты от новых авторов, а также первые версии большинства новых пакетов от авторов, с которыми я уже хорошо знаком.

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

Безопасность? В будущем мы намерены отобрать небольшую группу людей, которые будут одобрять файлы .nupkg. Также мы обсудили возможность просмотра хэша для такого вида файлов и спецификации хэша для установщиков, чтобы Chocolatey мог проверять загружаемые файлы до их исполнения».

 

Могу я назвать пакет Chocolatey «ОтформатируйМойЖесткийДиск»? Конечно, могу. Также, как я могу попросить вас открыть консоль с правами администратора и ввести “format c: /q”. Но вы же не будете этого делать, правда? ;)

Что дальше?

Очевидно, что Chocolatey не для ваших «далёких от техники родителей» и у него есть «конкуренты» в виде установочной утилиты Ninite GUI. Ninite разработана не для обычных пользователей и имеет лимитированный каталог, однако она помогает системным администраторам быстро находить распространённые приложения и утилиты, которые им нужны.

Кроме того, действительно ли Chocolatey apt-get? Он не устанавливает библиотеки в масштабе системы, хотя нет причин, почему он этого не может. Другие проекты с открытыми исходниками, как CoApp, хотели бы считаться app-get для Windows, хотя CoApp более похож на диспетчер с «системными библиотеками, поддержкой C++ и утилитами, похожими на утилиты Unix», а Chocolatey – на «утилиты и их зависимости, созданные для разработчиков и системных администраторов».

Chocolatey действительно устанавливает зависимости и Вы можете это увидеть собственными глазами, если попробуете ввести команду «cinst gitextensions», которая сама имеет git-зависимости. Chocolatey проанализирует таблицу и установит то, что необходимо, перед тем, как установить файлы с расширением git.

Проблемы у Chocolatey, и в конечном итоге у самой Windows, возникают с со странным «PATH-ингом» и местами установки. Так как в Windows отсутствуют формальные места установки и так как Chocolatey размещается первой в PATH, можно попасть впросак, когда приложения, установленные не с Chocolatey, не согласовываются с приложениями, установленными с его помощью. К примеру, несколько месяцев назад я установил Git с помощью Chocolatey, позже я забыл про эту версию и самостоятельно установил более новую версию Git. Тем не менее, я продолжал нажимать на старый значок git, т.к. версия, установленная Chocolatey, была «первой». Надеюсь, что такого рода проблемы были решены в последних сборках Chocolatey, но факт остается фактом: программа сложна для тех, кто когда-то установил какую-то низкоуровневую утилиту, и на этом всё и закончилось.

Брэндинг

Я ни в коем случае не хочу преуменьшать значение той огромной работы, которую проделали Роб и его команда, но (и я это сказал Робу раньше) я никак не могу закрыть глаза на само название Chocolatey. Конечно, есть два варианта написания “Chocolaty”, что усложняет, как минимум для меня, точное написание “Chocolatey”. Использование “-ey” теоретически является приемлемым вариантом, однако скажите это красной волнистой линии в Word. Но дело даже не в написании, а в самом названии. В нём нету той «нердовости», присущей «npm», авторитета “apt-get”, или поэтического лаконизма “gem”. Я понимаю, что мы живем в мире, где существуют компании с названиями Hulu, Yahoo, Microsoft (вдумайтесь, MICRO SOFT, что это вообще такое?) и Google, но стоит отметить, что хорошее название может действительно поднять проект на более высокий уровень. Не уверен, что Chocolatey – подходящее название для данного проекта, но это лично мое мнение.

Я настоятельно рекомендую вам самим испробовать Chocolatey! Это мощная утилита, сплоченное и расширяющееся сообщество, а также по праву интересная вещь.

Является ли Chocolatey долгожданным apt-get для пользователей Windows? Выскажите свое мнение в комментариях.

Scott Hanselman

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

?...

Аватар пользователя mike

Заголовок не соответствует содержанию. Не читайте эту горбостатью. Интересующимся вендовым манагером пакетов сюда. Но всё равно Венде по этой части пока далеко до Линукса.