This document provides an overview and introduction to various package managers for different programming languages and platforms including: RubyGems, NPM, Bower, NuGet, Paket, Chocolatey/OneGet. It discusses what each package manager is used for, how to install packages, manage dependencies, publish packages, and includes demonstrations of common commands.
5. Once upon a time
In an age were we don't want to build everything on our own time shifted
from building things to manage things…
• Search for {x} with your favorite search engine
• Download {x}
• Install {x}
• Fail because it requires {y}
Welcome to the Infinite loop!
7. Component based development
• If you build components packages can dramatically reduce time
spend to
• Check out from source control management
• Build *the* application
• Run tests
• …
12. What is ruby?
• Developed by Yukihiro Matsumoto in the mid 90's
• Object oriented
• Procedural
• Functional
• Dynamically typed
• Reflection
• Garbage Collection
• Since 2012 Standardized:
ISO/IEC 30170
http://rubyinstaller.org/
13. What is RubyGems?
• Package manager for the Ruby programming language
• Provides a standard format for distributing Ruby programs and libraries.
• Self-contained format called a "gem"
• Tool designed to easily manage the installation of gems
• Server for distributing them.
• RubyGems was created in about November 2003 and is now part of
the standard library from Ruby version 1.9.
https://rubygems.org/
21. What is npm?
• Node.js Package Manager
• Open Source founded by Isaac Z. Schlueter
• The package manager for Javascript.
• Installed with node.js!
• Nested dependency trees
• Install modules used in a node.js environment, or development tools built
using node.js such Karma, lint, minifiers and so on
https://www.npmjs.com/
33. What is bower?
• Open Source created at twitter by
Jacob Thornton an Alex MacCaw
• Web sites are made of lots of things
• Frameworks
• Libraries
• Assets & Utilities
• Bower manages all these things for you.
• Frontend Dependency Management
• Flat dependency tree!
• Maintains a single version of a module
http://bower.io/
34. Install Bower
# Global Install
npm install --global bower
# Local Install
npm install --global bower
46. What is NuGet
• Open Source Project started at Microsoft
by David Fowler and Davig Ebbo
• Intended to solve the issues related to management of 3rd party
assembly dependencies
• Microsoft Non .NET Framework stuff
• Open Source Libraries
• You own libraries!
http://nuget.org
47. What is NuGet
C#C#
C#
WCF Data
Services
Gallery
Server
NuGet
Core
VS Addin
Console
App
MsBuild
Tasks
63. Package Manager Powershell Scripts
• Init.ps1 runs the first time a package is installed in a solution.
• The script also runs every time the solution is opened.
• Install.ps1 runs when a package is installed in a project.
• Requires files in the content or lib directory for Install.ps1 to run.
• If your package also has ,an init.ps1 , install.ps1 runs after init.ps1.
• Uninstall.ps1 runs every time a package is uninstalled.
• NuGet_profile.ps1 runs when the Package Manager Console is
initialized – NOT part of the package!
64. Package Manager Powershell Scripts
• At the top of your file, add this line: param($installPath,
$toolsPath, $package, $project)
• $installPath is the path to the installed package.
• $toolsPath is the path to the tools.
• $package is a reference to the package object.
• $project is a reference to the EnvDTE project object.
• This will be null in Init.ps1.
• When you are testing $project in the console while creating your
scripts, you can set it to:
$project = Get-Project
65.
66. What is packet?
• Open Source started by Steffen Forkmann
• Paket is a dependency manager for .NET and Mono projects
• NuGet packages
• Files in GitHub repositories
• It enables precise and predictable control over what packages the
projects within your application reference.
• Global view on dependencies
• Versionsnumber not in the path
• plain text files and command line
https://github.com/fsprojects/Paket
69. The files
• paket.dependencies: Global definition of dependencies
• paket.lock: List of used versions for all dependencies
• paket.references: Dependency definition per project
78. What is Chocolatey
• Open Source started by Rob Reynolds
• Chocolatey is a package manager for Windows
• like apt-get or yum but for Windows
• Quickly instal applications and tools
• Built on the NuGet infrastructure
• Using PowerShell
https://github.com/chocolatey
84. READ LENNYBACON.COM
FOLLOW @LENNYBACON
LINK LINKEDIN.COM/IN/LENNYBACON
XING XING.COM/PROFILE/DANIEL_FISHER
FRIEND FB.COM/DANIEL.FISHER.LENNYBACON
MAIL DANIEL.FISHER@LENNYBACON.COM
CALL +49 (176) 6159 8612
85. Wir freuen uns über Ihr Feedback!
http://aka.ms/TechSummitFB
Editor's Notes
Mein Name ist Daniel Fisher.
Ich bin Mitgründer und Geschäftsführer der Firma devcoach.
Sowie Mitgründer und Vorstand des gemeinnützigen Vereins Just Community e.V..
Dieser ist seit 2005 Veranstalter NRWConf, eines der größten Software-Entwickler-Community-Events in Deutschland.
Ich bin Mitgründer und Leiter der .NET Developer User Group netug-niederrhein im Dreieck Düsseldorf-Wuppertal-Krefeld.
Für meine Aktivitäten in und für die Community bin ich von Microsoft als Community Leader und Insider ausgezeichnet worden.
Ich bin zertifiziert als Microsoft Certified Professional Developer für ASP.NET und Enterprise Applications.
Seit Einigen Jahren bin ich Business Technology Platform Advisor für Microsoft und unterstütze die Teams bei Entscheidungen zu neuen Technologien.
Mein Blog finden Sie unter lennybacon.com und können mir als @lennybacon auf Twitter folgen.