Blog written by Stacy Rendall, Principal Spatial Researcher, Interpret Geospatial Solutions
This blog is the second in a series of posts, which describe the development environment from high level technologies down to specific apps. It may be of interest to anyone doing Python or web development. See my first post for a general overview of the technologies that make up this stack.
Installation instructions and configuration/settings for tools introduced in this series can be found in this Bitbucket repository.
What is a package manager?
The term package manager can apply at a few different levels. Some package managers install development libraries for programming projects (NuGet, Bower, NPM and PIP are examples of this kind of package manager), but this post is concerned with higher-level package managers that install software for your operating system.
To install software on Windows you usually have to find the website, download the program, install it (and any other software it requires) and then somehow keep it up-to-date (which usually varies by program). This can be quite a pain to keep track of, especially if you use a bunch of different development languages and tools.
Linux operating systems typically have a package manager fully integrated into the system, which manages all software - from system components through to user applications. The package manager might have a graphical user interface (GUI), but can usually be run from the command line. For example, a terminal command such as apt-get install python would install Python and any software that Python requires in one easy step, and it can all be kept up to date with apt-get upgrade python.
Linux Mint Software Manager GUI
Package management on Windows
The good news is that a number of package managers are available for Windows! However, given that they are add-ons rather than integrated into the operating system, they won't manage all of your Windows software and updates (in the future the Microsoft Store may be a useful package manager, but at the moment it contains very little for developers).
Scoop is a package management interface targeted specifically at developers. It focuses on open/free programming languages, libraries and database tools.
Scoop in action installing Node.js on Windows
Scoop is very easy to use: packages are updated regularly and it has a large selection of developer-friendly apps, languages and utilities.
Unlike some other Windows package managers Scoop will install apps into your profile directory, which keeps things tidy and means that you don't need to click through administrator permission dialogues for a simple install (also handy in places where you may not have install permissions).
Other Windows package managers
Chocolatey is another Windows package manager (which is based on NuGet), although it aims to install a much wider range of software. Overall I found it less useful than Scoop... Although it can install a wider range of packages, it still can't manage all your optional software (so you still have to install a lot of things outside of it), the interface is less intuitive, it regularly has frustrating errors, and the available packages lack some useful developer tools.
Stay tuned for my next post, which will introduce Version Control Systems. I welcome your feedback or comments at firstname.lastname@example.org