Готов ли пользователь 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

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