html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Chocolatey — apt-get для Windows

Chocolatey — менеджер пакетов в среде Windows по аналогии с apt-get в Linux Мире.



Начал использовать по причине разработки на Node.js под Nodester. Мне хотелось бы регулярно обновлять ноду, git, dropbox, да и тот же skype, при этом, не заморачиваясь со скачиванием msi инсталяторов и установками, а просто обновить одной командой:

cup all

Это возможно — обновить все пакеты. Общий список доступных команд в Wiki. К сожалению, нет возможности удалить пакеты.

Так, как для работы постоянно требуется доступ к консоли, git, node, jade. Я хотел бы немножечко проиллюстрировать работу с Chocolatey в контексте (на примере) подготовки к разработке под Nodester.

Требования для установки:

Windows XP/Vista/7/2003/2008
.NET Framework 4.0
PowerShell 2.0

Устанавливается просто, выполнением такой незамысловатой команды (в cmd.exe в PowerShell не обрабатывается):

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('http://bit.ly/psChocInstall'))"

Процесс установки Chocolatey

После чего автоматически устанавливается в C:\Chocolatey, в C:\Chocolatey\libs будут находится описания пакетов, библиотеки. Основные же модули программ по дефолту устанавливаются в Program Files (x86).

Все основные и необходимые, для девелопера, пакеты присутствуют. Интерпретируемые языки, типа PHP, Ruby, Python, Node.js. БД — MySQL, MongoDB, SQLite. Контроль версий Git, Mercurial, SVN. Notepad++, Sublime. Сalibre для обработки книг под Kindle.

1. Установка пакета Node.js вместе с npm

cinst nodejs.install

Эта команда аналогична следующей

chocolatey install nodejs.install



Правда консоль придется закрыть и открыть заново, что бы стали доступны записанные пути в path.



2. Когда нода установлена уже можно вести разработку, инсталлировать модули через менеджер пакетов. Вот и пакетик для Нодстера



3. Без Git-a на Nodester совершить деплой не удастся, так что устанавливаем его с помощью Chocolatey



Вот список того, что я ещё дополнительно установил.

cinst Console2 cinst putty cinst curl cinst Wget

Пробуем putty, команда открывает окно программы и смотрим на, то что git поставился успешно (напомню, что придется закрывать консоль и открывать заново).



4. Вот видим что к Nodester можем свободно обращаться



Дальше остается рутинный процесс, инсталяция на локальной машине через npm требуемый в проекте модулей, типа expressjs, jade, тестирование на локальном веб-сервере который загружает нода. Все это дело ведется в git, коммитится, после чего совершается push в репы nodester. На nodester-е (список команд) так же потребуется установить npm модули через nodester npm install appname.

Не для всего подходит Chocolatey. Сама идеология Windows и создаваемых под платформу приложений склоняется к тому, что они сами должны лезть в автозагрузки и при каждом удобном случае без разрешения лезть обновляться. Так, в пакетах есть Chrome, но мы то знаем про GoogleUpdater.exe который и так все обновляет. Так, же и про Notepad++ который сам может полезть за обновлениями. Skype и самому обновить можно. Однако если изначально все ставить по-шоколадному, быстрое обновление одной командой будет приносить удовольствие, особенно если это относится не к GUI инструментам.

Напоследок приложу видео ролик с оф. сайта



UPD.

В комментариях попросили добавить пакет Slik Subversion (SVN). Я думаю полезно будет проиллюстрировать, как просто это осуществляется. Также прояснится принцип работы «шоколада».

Главное описание и скрипт инсталляции для простейшего случая. Все пакеты можно собрать самому, вот примеры.

1. Создаем файл описания C:\sliksvn\sliksvn.nuspec с соответствующим текстом (исходная болванка):

<?xml version="1.0"?>
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <metadata>
    <id>sliksvn</id>
    <title>SlikSVN</title>
    <version>1.7.4</version>
    <authors>Slik Company</authors>
    <owners>anatooly</owners>
    <summary>Slik subversion reliable version control starts here</summary>
    <description>We provide a standalone command line Subversion package for Windows. The installer contains all command line tools (svn, svnadmin, svnsync, svnserve, svnmucc, etc.) but no application bindings nor Apache modules. The tools are fully side-by-side compatible with other packages. Ideal for automated build and deploy scripts</description>
    <projectUrl>http://www.sliksvn.com/</projectUrl>
    <tags>sliksvn svn subversion</tags>
    <copyright>Slik Company</copyright>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
  </metadata>
</package>


2. После чего создаем скрипт инсталляции C:\sliksvn\tools\chocolateyInstall.ps1

try { Install-ChocolateyPackage 'sliksvn' 'msi' '/quiet' 'www.sliksvn.com/pub/Slik-Subversion-1.7.4-win32.msi' 'http://www.sliksvn.com/pub/Slik-Subversion-1.7.4-x64.msi' Write-ChocolateySuccess 'SlikSVN' } catch { Write-ChocolateyFailure 'SlikSVN' "$($_.Exception.Message)" throw }

Из кода становится понятно. Что скачивается с оф. сайта либо 32-бита, либо 64 бита инсталятор и будет ставиться в тихом режиме не отвлекая вопросами.

3. Доп. файл установки (может отсутствовать), а данном случае не принципиально C:\sliksvn\tools\install.ps1

param($installPath, $toolsPath, $package, $project) Write-Host 'This is not a package with dlls to reference in it.' Write-Host 'Please install using chocolatey' Write-Host "To get chocolatey just run 'Install-Package chocolatey' followed by 'Initialize-Chocolatey'" Write-Host 'chocolatey install sliksvn' write-host 'Removing this package...' uninstall-package sliksvn -ProjectName $project.Name

4. Собираем пакет. Его собрать можно NuGet-ом. Пропишите доступ к нему в path, либо обращайтесь через полный путь. Лежит в C:\Chocolatey\chocolateyInstall\NuGet.exe

> cd C:\sliksvn
> nuget pack

После чего получаем C:\sliksvn\sliksvn.1.7.4.nupkg локальный пакет. С него можно уже устанавливать, проверьте cinst sliksvn -source C:\sliksvn (в пути обязательно только путь к папке где лежит пакет, без его названия). Устанавливается локально. После чего можете загрузить пакет на сайт. Там работает режим постмодерации, так что пакет будет виден сразу и становится доступным через cinst sliksvn.

Как все работает при установке пакета? При установке, все что запаковано в пакете nupkg — скрипты установки, описание, и другие файлы, бинарные архивы (есть много интересных примеров что там может быть) попадает в папку C:\Chocolatey\lib\НАЗВАНИЕ_ПАКЕТА, а вот действия прописанные в скрипте, в нашем случае тихая установка выполняются по дефолту, то есть SlikSVN у меня 64-бита система, значит он ставится в C:\Program Files\SlikSVN\ и сам прописывается в path. Но на самом деле установка может быть любой распаковка из собственного архива, который будет входить в пакет, либо ещё какие-то действия со своими входящими библиотеками. Все зависит от фантазии.

Как его удалить? Сам SlikSVN через Установка-Удаления, как любую стандартно установленную программу, и из C:\Chocolatey\lib\НАЗВАНИЕ_ПАКЕТА руками.

Update 2012-08-15:

В последних версиях уже появилось удаление пакетов через chocolatey uninstall. По команде удаляется содержимое пакета из C:\Chocolatey\lib\ название пакета, то есть утилиты которые устанавливаются распаковываясь в эту папку удаляются полностью. То что инсталлировалось в систему и в Program Files — не трогается.

Списка установленных, как логично было бы предположить по chocolatey list пакетов — нет. Но ведь это можно легко исправить, как вариант таким хаком:

diff --git "a/c:\\Chocolatey\\chocolateyInstall\\functions\\Chocolatey-List.ps1" "b/c:\\Chocolatey\\chocolateyInstall\\functions\\Chocolatey-List.ps1"
index 67c2ecc..aa67027 100644
--- "a/c:\\Chocolatey\\chocolateyInstall\\functions\\Chocolatey-List.ps1"
+++ "b/c:\\Chocolatey\\chocolateyInstall\\functions\\Chocolatey-List.ps1"
@@ -15,7 +15,12 @@ param(
     $parameters = "list"
     if ($selector -ne '') {
       $parameters = "$parameters ""$selector"""
-    }
+    } else {
+	  $packageFolders = Get-ChildItem $nugetLibPath | sort name
+	  $packages = $packageFolders -replace "(\.\d{1,})+"|gu 
+	  Write-Host $packages
+	  exit
+	}
     
     if ($allVersions -eq $true) {
       Write-Debug "Showing all versions of packages"


Теперь по chocolatey list мы получим:

7zip 7zip.install chocolatey Console2 curl foobar2000 git git.install miranda msysgit nodejs.install notepadplusplus notepadplusplus.install php php5-dev putty sliksvn sublimetext2 warmup Wget
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

4

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • voronin_denis
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции