7 min read

Open Rec #1: When Microsoft goes open-source - Hi, Winget!

Package Manager 101 for Windows, Linux, and macOS
Open Rec #1: When Microsoft goes open-source - Hi, Winget!

This article applies to:

Platform Windows Mac Linux Android iOS

Package manager?


If you install softwares frequently on a desktop, but don't know what a package manager is, you will want to know.

Without a package manager, whenever you install new software, you will likely go online, hassle around to find the right installation package, download it, wait until downloading finishes, click on the installer, and do a bunch of repetitive, meaningless button-clicking. Occasionally, you will have downloaded the wrong package, so you have to do it again, or worse, you will have installed some potentially unwanted software, spend time worrying and more time scraping it off your system.

Also, updating can be a pain in the arse for some simpler software with no auto-update. The only way to go is to manually reinstall the latest version - or use a package manager

That's unnecessary complexity. Why don't you use a package manager? Package managers are universal command-line software installers that can automate the installation, update, removal, and even configuration of most free software.

A side benefit of package managers is consistency across platforms and system versions. With package managers, you can easily install software on someone else's computer, even if their GUI is completely different from yours.

If you feel like managing packages, read on for OS-specific instructions.

Installation


Windows: Winget/Chocolatey

On Windows 11, the Winget package manager, the official, open source microsoft solution is installed by default.

On Windows 10, build 1809 or higher, you can install Winget manually.

On all Windows versions, you can install Chocolatey, a popular third-party package manager on all Windows versions

To install Chocolatey on an individual Windows computer (as opposed to a server), execute the following command in Powershell with administrative privileges:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

'DownloadString('https://community.chocolatey.org/install.ps1'))' download the Chocolatey installation script from the official repository.

'iex' executes the script

'Set-ExecutionPolicy Bypass -Scope Process -Force' bypasses security restrictions for this installation process, which will otherwise interfere* with the installation.

*: Malicious PowerShell scripts can severely damage your computer when run with administrative privileges. Therefore, by default, Windows does not allow the execution of any PowerShellChocolatey script. To run the Chocolatey installation script, it is necessary to bypass the restriction specifically for this process.

Once installed, you must grant Chocolatey the necessary execution permission*:

Set-ExecutionPolicy AllSigned -Scope CurrentUser -Force

*: Chocolatey execute local PowerShell scripts to install, update, and remove software packages. It is as such necessary to modify the Windows execution policy to allow Powershell scripts.

The 'AllSigned' option allows the execution of all signed PowerShell scripts without warning. This is the most secure option and is compatible with Chocolatey. With 'AllSigned' Windows will warn you but not prevent the execution of your own powershell scripts, so it is recommended for everyone including power users.

Linux/MacOS: Homebrew

Most Linux distributions come with a default system package manager pre-installed. I recommend Homebrew for consistency across distributions.

On MacOS, there is no built-in package manager. Homebrew is your go-to.

Homebrew
The Missing Package Manager for macOS (or Linux).

Basic usage


Once you have installed Chocolatey, Winget, or Homebrew you can start finding, installing, updating, and removing software with them.

Terminology: In package managers, software is called 'packages'.

Search for a package

Winget:

winget search <package-name>

Chocolatey:

choco search <package-name>

Homebrew:

brew search <package-name>

Example:

winget search ShareX

->

Name    ID            Version Source
-------------------------------------
ShareX 9NBLGGH4Z1SP  Unknown msstore
ShareX ShareX.ShareX 17.0.0  winget

See package description

When there are multiple related packages, most of them are likely forks. The package descriptions help you decide which one to install.

Winget:

winget show <package-id>

Chocolatey:

choco info <package-id>

Homebrew:

brew info <package-id>

Example:

winget show ShareX.ShareX

->

Trouvé ShareX [ShareX.ShareX]
Version : 17.0.0
Publisher : ShareX Team
ID de l’Editeur https://getsharex.com/
URL de support de l’éditeur : https://github.com/ShareX/ShareX/issues
Moniker : sharex
Description : ShareX is a free and open source program that lets you capture or record any area of your screen and share it with a single press of a key. It also allows uploading images, text or other types of files to many supported destinations you can choose from.
Page d’accueil : https://getsharex.com/
Licence : GPL-3.0
URL de la licence : https://github.com/ShareX/ShareX/blob/HEAD/LICENSE.txt
URL de confidentialité : https://getsharex.com/privacy-policy
Copyright : Copyright (c) 2007-2024 ShareX Team
Notes de publication :
  - Scrolling capture improvements:
    - Automatically ignores 50px from the bottom during scrolling captures, useful for cases like horizontal scrollbars at the bottom.
    - Added an "Auto ignore bottom edge" option, which compares two images to identify static parts at the bottom, in addition to the default 50px.
    - Added a "Copy" button to the scrolling capture window.
  - Added notification sound to certain actions:
    - Screen recording stop/pause/abort actions.
    - Scrolling capture action.
    - "Pin to screen" tool.
    - "Screen color picker" tool.
    - "Borderless window" tool.
    - Browser extension action.
    - Silent OCR action.
    - "Disable/Enable hotkeys" action.
  - Added "Play sound after action is completed" option.
  - Added "Use custom action completed sound" option.
  - Removed toast notification from silent OCR action.
  - Removed "Disable notifications" option.
  - Added Arabic language support.
  - When "DisableUpload" registry is set, hide upload related items in the main window.
  - Save tasks to history regardless of failed or stopped upload.
  - Allow restoring borderless window in "Borderless window" tool.
  - Added "Make active window borderless" hotkey.
  - Added "Make active window top most" hotkey.
  - Added "Pin to screen (Close all)" hotkey.
  - Removed YouTube icon because Google does not allow us to use a 16x16 size logo.
  - Removed Google Photos image uploader. (Reason: https://developers.googleblog.com/en/google-photos-picker-api-launch-and-library-api-updates/)
  - Removed adf.ly URL shortener.
  - Removed backward compatibility for .sxcu files generated before ShareX 12.4.0.
URL des notes de publication : https://getsharex.com/changelog
Mots-clés :
  annotate
  annotation
  capture
  color-picker
  gif
  ocr
  record
  recorder
  region-capture
  screen-capture
  screen-recorder
  screenshot
  share
  upload
Programme d'installation :
  Type du programme d’installation : inno
  URL du programme d’installation : https://github.com/ShareX/ShareX/releases/download/v17.0.0/ShareX-17.0.0-setup.exe
  SHA256 du programme d’installation : 8b7ba685e7cb588356611f24fd06c0884678e53b49e6618e5d65412127c96e48
  Date de version : 2025-01-08
  Distribution hors ligne prise en charge : true

My computer is in French, run the command yourself to see results in your language

Publisher : ShareX Team

My computer is in French, run the command yourself to see results in your language

ShareX.ShareX is the official ShareX, as it is published by the ShareX Team.

(Un)install a package

Winget:

winget install <package-id>

Chocolatey:

choco install <package-id>

Homebrew:

brew install <package-id>

Example:

winget install ShareX.ShareX

->

ShareX installed.

To uninstall, write uninstall wherever you have written 'install'

Update package(s)

Note: Package managers can only update packages installed via them.

Winget:

Updating all packages

winget upgrade -all

Updating a particular package

winget upgrade <package-id>

Chocolatey:

Updating all packages

choco upgrade <package-id>

Updating a particular package

choco upgrade <package-id>

Homebrew:

Updating all packages

brew update

Updating a particular package

brew upgrade <package-id>

Example:

winget upgrade ShareX.ShareX

->

ShareXwherever upgraded.

Launch packages automatically on startup:

Launching package(s) automatically on system startup

All Windows package managers:

See this guide:

#superUser: Automatical launch programs on Windows system startup
This guide applies to: Platform Windows Mac Linux Android iOS ✅ If you prefer GUI, try method II. Otherwise, method I is faster and more systematic. I. For all software: Difficulty: ⭐⭐⭐ Basic command line literacy required. 1. Find the installation location of a program: $programName = ”<program_name>” $installedPrograms = Get-ItemProperty -Path “HKLM:\Software\Microsoft\</program_name>

Homebrew on MacOS (packages installed via Homebrew only):

All packages started with services automatically launch on system startup by default

brew services start <package_name>

Homebrew on Linux*(packages installed via Homebrew only):

*: These steps apply to:

  • Ubuntu (starting from version 15.04)
  • Debian (starting from version 8 "Jessie")
  • Fedora (starting from version 15)
  • Arch Linux
  • Red Hat Enterprise Linux (RHEL) (starting from version 7)
  • CentOS (starting from version 7)
  • openSUSE (starting from version 12.2)
  • Manjaro

Homebrew Linux does not come with the services module. You must install homebrew/services tap manually:

brew tap homebrew/services

Then

brew services start <package_name>

And

sudo systemctl enable homebrew.mxcl.<package_name>

Homebrew services are prefixed with homebrew.mxcl. followed by the package name. systemctl enable the automatic launch via the system service manager systemd.

Q&A


Q: Why are package managers mostly for free software?

A: Because there is no payment or advertising through shells.

Q: Is there any reason I shouldn't use a package manager?

A: Basic command-line literacy is strongly recommended. You should not run installation scripts unless you trust the source or know what is written in there.

On the flip side, installing software via GUI is also dangerous unless you know what you are doing.

Q: Which package manager is the best one?

A: If you are on Win 11, Winget is good because it does not require admin privileges. Otherwise, Chocolatey is a solid option. On Mac and Linux, I recommend Homebrew for consistency across distributions, but on most Linux distributions, the built-in package manager is also good.