<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chocolatey on Russell ‛Russ’ Frith</title><link>https://russfrith.com/tags/chocolatey/</link><description>Recent content in Chocolatey on Russell ‛Russ’ Frith</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 Mar 2024 15:08:01 -0400</lastBuildDate><atom:link href="https://russfrith.com/tags/chocolatey/index.xml" rel="self" type="application/rss+xml"/><item><title>Scoop Over Chocolatey: A Windows Package Manager Transition Guide</title><link>https://russfrith.com/posts/chocolatey-to-scoop/</link><pubDate>Mon, 04 Mar 2024 15:08:01 -0400</pubDate><guid>https://russfrith.com/posts/chocolatey-to-scoop/</guid><description>Finding the right Windows package manager for your needs.</description><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>For the last decade, I have been using Chocolatey as my package manager on Windows. I recently needed to install software on a new machine, and decided that now was an ideal time to revisit some popular package managers and perhaps make a switch.</p>
<p>One of my favorite benefits of package managers is the ability to install software in a consistent way across a variety of different applications. Having a command line tool with remote repositories of current versions of software makes it easy to keep applications up to date. Finally, it makes them easy to remove in a unified way should they no longer be needed. When setting up a new machine, the ability to have a script that installs most if not all the applications that I will need on that machine using such a tool is also highly beneficial.</p>
<h2 id="package-managers">Package Managers</h2>
<p>A package manager is a tool or system that automates the processes of installing, upgrading, configuring, and using software, primarily aimed at developer tools. Developers specify their required tools, and the package manager installs and configures them based on these specifications. This not only saves time in setting up a development environment, but also ensures consistency in the versions of packages installed. Let&rsquo;s explore some of the most popular package managers and examine their respective strengths and weaknesses.</p>
<h3 id="winget">winget</h3>
<p>Windows Package Manager winget command-line tool is available on current versions of Windows as a part of the App Installer, launched by Microsoft to simplify application management on Windows systems. Announced in May 2020 at Microsoft Build, this command-line tool allows users to discover, install, upgrade, remove, and configure applications, filling a gap in Windows&rsquo; developer tools by providing functionality similar to package managers in Linux or macOS. Its introduction marks a significant step by Microsoft to enhance the Windows developer experience.</p>
<p>winget distinguishes itself from other popular Windows package managers in several ways:</p>
<ol>
<li>
<p><strong>Integration with Windows</strong>: As a Microsoft product, winget is closely integrated with the Windows ecosystem. This integration offers potential for more seamless updates and compatibility with Windows-specific features and updates.</p>
</li>
<li>
<p><strong>Official Microsoft Support</strong>: winget is developed and supported by Microsoft, which may provide a sense of security and stability for users and organizations, particularly in terms of long-term support and integration with other Microsoft products.</p>
</li>
<li>
<p><strong>Open Source and Community Contributions</strong>: Unlike Ninite or the discontinued AppGet, winget is open source, allowing the community to contribute to its development, suggest features, and improve the tool over time.</p>
</li>
<li>
<p><strong>Manifest-Based System</strong>: winget uses a manifest system for package definitions, which can be more standardized and consistent compared to some methods used in other package managers like Chocolatey or Scoop.</p>
</li>
<li>
<p><strong>Native Command-Line Experience</strong>: winget offers a native command-line experience that is consistent with other Windows command-line tools, which might be more familiar to Windows users than the interfaces provided by Chocolatey or Scoop.</p>
</li>
<li>
<p><strong>No Need for Third-Party Repository</strong>: While Chocolatey and Scoop rely heavily on community-maintained repositories, winget can pull software directly from the Microsoft Store in addition to its community repository, potentially offering more official and trusted sources for software.</p>
</li>
<li>
<p><strong>Scripted Installations and Batch Operations</strong>: winget allows for more complex scripted installations and batch operations, similar to Chocolatey and Scoop, but with the potential for deeper integration with Windows-specific features.</p>
</li>
<li>
<p><strong>Community-Driven Repositories</strong>: Like Scoop and Chocolatey, winget allows for community-driven repositories, but being a Microsoft product, it potentially has a broader reach and might garner a more extensive repository of packages.</p>
</li>
</ol>
<p>In summary, winget combines the familiarity and integration of a Microsoft product with the flexibility and community-driven approach of open-source package managers like Chocolatey and Scoop, while also providing a native and streamlined command-line interface for Windows users.</p>
<h3 id="chocolatey">Chocolatey</h3>
<p>Chocolatey is distinguished by its extensive repository encompassing a wide array of both open-source and proprietary software. It excels in offering advanced features like custom package creation, deep integration with Windows and PowerShell for enhanced scripting, and robust version control for precise software management. Particularly appealing to system administrators and power users, Chocolatey supports integration with configuration management tools like Puppet, Chef, and Ansible, facilitating automated, consistent configurations across multiple machines. Its command-line interface is comprehensive and user-friendly, catering to both seasoned scripters and those new to command-line operations. The community-driven approach in maintaining and updating its packages further adds to its appeal, ensuring a broad software selection and timely updates.</p>
<p>Chocolatey distinguishes itself from other Windows package managers through several unique features and capabilities:</p>
<ol>
<li>
<p><strong>Extensive Software Repository</strong>: Chocolatey offers a vast and diverse repository of both open-source and proprietary software, surpassing the variety found in other managers like winget, Scoop, or Ninite.</p>
</li>
<li>
<p><strong>Package Creation and Customization</strong>: Unlike Ninite or AppGet, Chocolatey allows users and organizations to create and host their own packages. This feature is particularly beneficial for businesses that need to manage internal software distributions or specific software configurations.</p>
</li>
<li>
<p><strong>Integration with Windows Features and PowerShell</strong>: Chocolatey&rsquo;s deep integration with Windows features, especially PowerShell, stands out compared to alternatives. This integration allows for more advanced scripting and automation, which is particularly appealing for system administrators and power users.</p>
</li>
<li>
<p><strong>Version Control and Software Management</strong>: Chocolatey excels in its ability to install specific versions of software and manage upgrades and downgrades, offering more control compared to winget and Ninite. This is crucial in environments where specific software versions are required for compatibility or testing purposes.</p>
</li>
<li>
<p><strong>Community-Driven Package Maintenance</strong>: The Chocolatey community plays a significant role in maintaining and updating packages. This community-driven approach often leads to quicker updates and a broader range of software than what might be found in more centrally managed repositories like winget or Ninite.</p>
</li>
<li>
<p><strong>Compatibility with Configuration Management Tools</strong>: Chocolatey uniquely integrates with configuration management tools like Puppet, Chef, and Ansible. This makes it a more versatile choice for enterprise environments where consistent and automated configuration across multiple Windows machines is essential.</p>
</li>
<li>
<p><strong>Comprehensive CLI Support</strong>: While Scoop and winget also offer command line interfaces, Chocolatey&rsquo;s CLI is more robust and feature-rich, providing a level of control and flexibility that is particularly beneficial in automated scripts and batch operations.</p>
</li>
<li>
<p><strong>Security and Compliance Features</strong>: For enterprise users, Chocolatey offers additional security and compliance features, like package internalization and private repositories, which are not as prominent in winget, Scoop, or Ninite.</p>
</li>
</ol>
<p>In summary, Chocolatey&rsquo;s unique combination of an extensive software repository, package creation and customization, deep Windows integration, advanced version control, community support, enterprise features, and powerful CLI distinguishes it from other Windows package managers like winget, Scoop, and Ninite.</p>
<h3 id="scoop">Scoop</h3>
<p>Scoop is a command-line package manager for Windows, known for its simplicity and focus on user convenience. It stands out for its straightforward setup and zero-configuration philosophy, appealing especially to developers and those who prefer a minimalistic approach. Scoop installs programs to the user&rsquo;s home directory, avoiding system-wide changes and making it non-intrusive compared to traditional Windows installers. This approach also facilitates easy backup and sync of installed applications. It primarily focuses on open-source and developer tools, offering a curated selection that simplifies the installation and update process for commonly used utilities and applications. Scoop&rsquo;s repository is community-maintained, ensuring a relevant and up-to-date software selection. Its ease of use, coupled with the ability to handle dependencies elegantly, makes it a favored choice for users seeking a lightweight and efficient package management solution on Windows.</p>
<p>Scoop has several unique features:</p>
<ol>
<li>
<p><strong>Focus on Developer Tools</strong>: Scoop is primarily focused on making it easy for developers to install tools they need. It&rsquo;s optimized for command-line users and simplifies the process of managing development tools.</p>
</li>
<li>
<p><strong>User Space Installation</strong>: Unlike some other package managers, Scoop installs programs in the user&rsquo;s space, not system-wide. This means no administrator privileges are needed for installation, and it doesn&rsquo;t add to the system PATH by default, reducing potential system conflicts.</p>
</li>
<li>
<p><strong>Portable Applications</strong>: Scoop is designed with a preference for portable applications. This means that applications are less likely to interfere with the rest of the system, as they are self-contained.</p>
</li>
<li>
<p><strong>Simplified App Management</strong>: Scoop provides a simple command line interface for installing applications, without the need for a GUI. It also allows for easy version management and updating of installed programs.</p>
</li>
<li>
<p><strong>Git-Powered</strong>: Scoop uses Git to manage its buckets (collections of applications), making it easy for users to add or create their own buckets. This contrasts with the centralized repositories of some other package managers.</p>
</li>
<li>
<p><strong>Manifest-Driven</strong>: In Scoop, each application has a manifest that describes how it should be installed. This makes it easier to add new applications to Scoop compared to some other package managers that may require more complex packaging processes.</p>
</li>
<li>
<p><strong>Focus on Avoiding Bloatware</strong>: Scoop tends to avoid applications that come bundled with unwanted extras, a practice sometimes seen in other free software distributions.</p>
</li>
<li>
<p><strong>Customizability and Scripting</strong>: Because of its command-line nature and use of PowerShell, Scoop is highly customizable and can be integrated into scripts for automation purposes.</p>
</li>
</ol>
<p>In contrast:</p>
<ul>
<li><strong>winget</strong> is Microsoft&rsquo;s own package manager, integrated with Windows and focusing more broadly on all types of software.</li>
<li><strong>Chocolatey</strong> is more feature-rich and caters to both end-users and enterprise needs with a focus on comprehensive package management solutions, including GUI support.</li>
<li><strong>Ninite</strong> is known for its simplicity and is often used for quick, bulk installations of popular applications, usually for setting up new systems.</li>
</ul>
<p>Each of these package managers serves different user needs and preferences, with Scoop being particularly favorable for developers and command-line enthusiasts who prefer a minimalistic and scriptable approach.</p>
<h3 id="ninite">Ninite</h3>
<p>Ninite is a streamlined package management solution for Windows, recognized for its user-friendly approach, particularly suited for non-technical users. It simplifies the process of installing and updating multiple applications with just a few clicks. Users select their desired software from the Ninite website, which then creates a customized installer to install all chosen programs in one go, without any further interaction. Ninite stands out for its automated, batch installation process that smartly avoids toolbars or extra junk, ensuring a clean and hassle-free setup. It primarily caters to popular, commonly-used software, making it a convenient choice for quick setup of new computers or routine maintenance. The service is especially popular for its reliability and security, as it automatically updates all installed programs to their latest versions, reducing the risk of security vulnerabilities. Ninite&rsquo;s appeal lies in its simplicity and effectiveness, making it an excellent choice for those who prefer a straightforward, no-fuss software management tool.</p>
<p>Ninite is unique in several ways:</p>
<ol>
<li>
<p><strong>User-Friendliness</strong>: Ninite is known for its exceptionally user-friendly interface. It allows users to select multiple applications from its website and creates a single installer to install all chosen apps at once. This simplicity contrasts with other package managers, which often require command-line interaction.</p>
</li>
<li>
<p><strong>Silent Installation</strong>: Ninite automates the installation process without requiring user interaction. It automatically declines toolbar installations and other add-ons, installs the latest version of the software, and sets up programs in their default locations. This automatic, &lsquo;silent&rsquo; approach is different from others that might require user input during installations.</p>
</li>
<li>
<p><strong>Batch Updates</strong>: Ninite can also be used for updating installed programs. It checks for and installs updates for all supported apps, again doing so silently and automatically. This is a distinctive feature that may not be as straightforward in other package managers.</p>
</li>
<li>
<p><strong>No Bundleware</strong>: Ninite is known for not including any bundleware or extra software in its installations, which is a significant advantage over some other package managers that might include additional offers or software in their installations.</p>
</li>
<li>
<p><strong>Focus on Free and Popular Software</strong>: Ninite primarily focuses on popular free software, making it a go-to for quickly setting up a new PC with essential tools and utilities. Other package managers may offer a wider range of software, including more niche or specialized tools.</p>
</li>
<li>
<p><strong>No Command-Line Interface (CLI)</strong>: Unlike winget, Chocolatey, and Scoop, which offer command-line interfaces for more control and scripting capabilities, Ninite operates almost entirely through a graphical interface. This makes it more accessible to casual users but less flexible for power users.</p>
</li>
<li>
<p><strong>Automatic Background Updates (Pro Version)</strong>: Ninite Pro offers additional features like automatic background updates and network deployment, which can be particularly useful in a corporate environment for maintaining multiple machines.</p>
</li>
</ol>
<p>These features make Ninite especially appealing for less technical users or those looking for a hassle-free way to install and update a standard set of applications on their PCs. However, it may be less suitable for users who need a broader range of software options or more control over the installation process.</p>
<h2 id="why-scoop-stands-out">Why Scoop Stands Out</h2>
<p>Scoop stands out for a developer like me due to its primary focus on developer tools, making it an ideal choice for those needing a straightforward, command-line-centric tool for managing development applications. The user space installations are a key feature for individuals without administrator rights or those who prefer not to make system-wide changes, enhancing both ease of use and system stability. Additionally, Scoop&rsquo;s preference for portable applications and its Git-powered, manifest-driven approach offer a level of flexibility and transparency that is highly valued in a developer&rsquo;s workflow. Moreover, its design philosophy to avoid bloatware, coupled with its capabilities for customization and automation through scripting, make it an attractive option for users seeking minimalistic and efficient package management. While winget, Chocolatey, and Ninite each have their own strengths, Scoop&rsquo;s specific focus on minimal system impact, developer-friendly features, and ease of use in a command-line environment sets it apart as the go-to choice for many developers and command-line users.</p>
<aside
  style="
    margin: 20px 0;
    padding: 0 14px;
    border-inline-start: 3px solid var(--primary);
  "
>
  <p>While one of Scoop&rsquo;s key features is its capability to install portable applications in a user-isolated space, Scoop also offers the option to install non-portable applications. This flexibility allows users who prefer to standardize on Scoop for application management to enjoy the convenience of using it for both portable and non-portable installations.</p>
</aside>

<h2 id="scoop-deep-dive">Scoop Deep Dive</h2>
<h3 id="installing-scoop">Installing Scoop</h3>
<p>Installing Scoop is a straightforward process. Here&rsquo;s a step-by-step guide:</p>
<ol>
<li>
<p><strong>Open PowerShell</strong>: First, you need to open PowerShell. You can do this by searching for PowerShell in the Start menu and running it as an administrator.</p>
</li>
<li>
<p><strong>Configure Execution Policy</strong> (if needed): Scoop requires the ability to execute scripts. In PowerShell, run the following command to allow script execution:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Set-ExecutionPolicy RemoteSigned -scope CurrentUser
</span></span></code></pre></div><p>This command changes the policy to allow the execution of scripts, while still protecting against the execution of scripts downloaded from the Internet, unless they are signed by a trusted publisher.</p>
<aside
  style="
    margin: 20px 0;
    padding: 0 14px;
    border-inline-start: 3px solid var(--primary);
  "
>
  <p><strong>Note on Security</strong>: Setting the PowerShell execution policy to <code>RemoteSigned</code> for the <code>CurrentUser</code> scope, as done with <code>Set-ExecutionPolicy RemoteSigned -Scope CurrentUser</code>, poses a moderate security risk. This policy allows locally created scripts to run without a digital signature, but requires scripts downloaded from the internet to be signed by a trusted publisher. While this setting prevents the execution of unsigned scripts from external sources, it doesn&rsquo;t safeguard against all risks. Locally created or modified scripts, which might include malicious code, can still run without any signature verification. Additionally, attackers could potentially exploit this policy by tricking users into downloading and locally modifying scripts, thereby bypassing the need for a digital signature. This setting strikes a balance between usability and security, but users should remain cautious of the scripts they run, especially those obtained from untrusted sources.</p>
</aside>

</li>
<li>
<p><strong>Install Scoop</strong>: To install Scoop, run the following command in PowerShell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Invoke-RestMethod -Uri https<span style="color:#960050;background-color:#1e0010">:</span>//get.scoop.sh | Invoke-Expression
</span></span></code></pre></div><p>This command downloads the Scoop installation script and executes it. <code>Invoke-RestMethod</code> fetches the script directly from <code>https://get.scoop.sh</code>, and <code>Invoke-Expression</code> runs the script.</p>
</li>
<li>
<p><strong>Install Git (Recommended)</strong>: After installing Scoop, it is recommended to install Git. Many packages, including those in the &rsquo;extras&rsquo; bucket, require Git. To install Git, use the following Scoop command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop install git
</span></span></code></pre></div></li>
<li>
<p><strong>Verification</strong>: After the installation script completes, you can verify the installation by typing <code>scoop help</code> in PowerShell. This should display a list of Scoop commands, indicating that Scoop is installed correctly.</p>
</li>
<li>
<p><strong>Optional - Configure Scoop to use a Proxy</strong> (if needed): If you are behind a proxy, you may need to configure Scoop to use it. You can do this by setting the <code>http_proxy</code> and <code>https_proxy</code> environment variables in PowerShell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$env:http_proxy=<span style="color:#e6db74">&#34;http://yourproxy:port&#34;</span>
</span></span><span style="display:flex;"><span>$env:https_proxy=<span style="color:#e6db74">&#34;http://yourproxy:port&#34;</span>
</span></span></code></pre></div><p>Replace <code>yourproxy</code> and <code>port</code> with your proxy details.</p>
</li>
<li>
<p><strong>Optional - Associate <code>.git*</code> and <code>.sh</code> Files</strong>: After installing Git, you can optionally create file associations for <code>.git*</code> and <code>.sh</code> files. This can be done by running the <code>install-file-associations.reg</code> file, which is included in the Git installation via Scoop.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>cd path\to\git\installation
</span></span><span style="display:flex;"><span>&amp; .\install-file-associations.reg
</span></span></code></pre></div><p>Replace <code>path\to\git\installation</code> with the actual installation path of Git. This step is especially useful for developers who frequently work with Git and shell scripts.</p>
</li>
</ol>
<p>Scoop is designed to make the installation process easy and straightforward, particularly for command-line tools and developer utilities. If you encounter any issues during the installation, make sure you&rsquo;re running PowerShell as an administrator and that your internet connection is stable. Scoop&rsquo;s GitHub page and community forums can also be useful resources for troubleshooting.</p>
<h3 id="basic-commands">Basic Commands</h3>
<p>Scoop is a command-line package manager for Windows that offers a variety of commands for managing software installations. Here&rsquo;s a guide to some of the basic commands and their usage:</p>
<ol>
<li>
<p><strong>Install a Package</strong>: To install a package with Scoop, use the <code>install</code> command followed by the package name. For example, to install Visual Studio Code:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop install vscode
</span></span></code></pre></div><aside
  style="
    margin: 20px 0;
    padding: 0 14px;
    border-inline-start: 3px solid var(--primary);
  "
>
  <p><strong>Note on Additional Customization</strong>: Some packages, like Visual Studio Code, offer additional setup options such as creating context menu entries (right-click menu options) or file associations. After installing such packages, you might find additional scripts or instructions in the package’s installation folder to enable these features. This can enhance your workflow by integrating the software more deeply into your Windows environment. However, it&rsquo;s important to note that using these .reg files or scripts might deviate from the standard Scoop practice of keeping programs self-contained within the user folder. For detailed steps and to understand the implications of these modifications, refer to the documentation of the specific package or check the installation folder.</p>
</aside>

</li>
<li>
<p><strong>List Installed Packages</strong>: To see a list of all packages that you&rsquo;ve installed with Scoop, use the <code>list</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop list
</span></span></code></pre></div></li>
<li>
<p><strong>Search for a Package</strong>: If you&rsquo;re not sure about the exact name of a package, you can search for it using the <code>search</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop search [package-name]
</span></span></code></pre></div><p>Replace <code>[package-name]</code> with the name or part of the name of the package you&rsquo;re looking for.</p>
</li>
<li>
<p><strong>Check for Updates</strong>: To check if any of your installed packages have updates available, use the <code>status</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop status
</span></span></code></pre></div></li>
<li>
<p><strong>Update a Package</strong>: If there&rsquo;s an update available for a package, you can update it using the <code>update</code> command. To update Git, for example:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop update git
</span></span></code></pre></div><p>To update all your installed packages at once, use:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop update *
</span></span></code></pre></div></li>
<li>
<p><strong>Uninstall a Package</strong>: To remove a package that you no longer need, use the <code>uninstall</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop uninstall [package-name]
</span></span></code></pre></div></li>
<li>
<p><strong>View Package Information</strong>: To view information about a specific package (like version, dependencies, etc.), use the <code>info</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop info [package-name]
</span></span></code></pre></div></li>
<li>
<p><strong>Add a Bucket</strong>: Buckets in Scoop are like repositories that contain manifests for installing software. To add a new bucket, use the <code>bucket add</code> command. For example, to add the &rsquo;extras&rsquo; bucket:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket add extras
</span></span></code></pre></div></li>
<li>
<p><strong>List Buckets</strong>: To see a list of all the buckets you&rsquo;ve added, use the <code>bucket list</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket list
</span></span></code></pre></div></li>
<li>
<p><strong>Cleanup Old Versions</strong>: Over time, you may accumulate older versions of packages. To remove these old versions and free up disk space, use the <code>cleanup</code> command:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop cleanup [package-name]
</span></span></code></pre></div><p>To cleanup old versions of all packages, simply run:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop cleanup *
</span></span></code></pre></div></li>
</ol>
<p>These basic commands cover most of the everyday usage scenarios for Scoop. It&rsquo;s worth noting that Scoop is particularly popular among developers and power users who prefer a command-line interface for managing software installations. For more advanced commands and options, you can always refer to the Scoop documentation or use the <code>scoop help</code> command.</p>
<h3 id="managing-multiple-versions">Managing Multiple Versions</h3>
<p>Scoop provides additional commands and features that are particularly useful for managing multiple versions of the same software. This capability is especially valuable for developers who may need to switch between different versions of tools or programming languages for different projects. Here are some key commands and concepts related to managing multiple versions in Scoop:</p>
<ol>
<li>
<p><strong>Hold and Unhold a Version</strong>:</p>
<ul>
<li><strong>Hold</strong>: If you want to prevent a specific version of a package from being updated, you can &lsquo;hold&rsquo; it. This ensures that the package stays at the current version even when you update other packages.
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop hold [package-name]
</span></span></code></pre></div></li>
<li><strong>Unhold</strong>: To remove the hold and allow updates again, use &lsquo;unhold&rsquo;:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop unhold [package-name]
</span></span></code></pre></div></li>
</ul>
</li>
<li>
<p><strong>Install Specific Versions</strong>: Scoop allows you to install specific versions of a package (if available in the bucket). Use the <code>install</code> command with the <code>@[version]</code> syntax:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop install [package-name]@[<span style="color:#66d9ef">version</span>]
</span></span></code></pre></div><p>Replace <code>[version]</code> with the desired version number.</p>
</li>
<li>
<p><strong>Switch Between Versions</strong>: If you have multiple versions of a package installed, you can switch between them using the <code>reset</code> command. This command sets the specified version as the current active version.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop reset [package-name]@[<span style="color:#66d9ef">version</span>]
</span></span></code></pre></div></li>
<li>
<p><strong>List All Versions of a Package</strong>: To see all the installed versions of a particular package, use the <code>list</code> command with the package name:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop list [package-name]
</span></span></code></pre></div></li>
<li>
<p><strong>Check Available Versions</strong>: To see what versions of a package are available for installation, you can use the <code>checkver</code> command with the <code>-a</code> (all) flag:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop checkver [package-name] -a
</span></span></code></pre></div></li>
<li>
<p><strong>Remove Specific Versions</strong>: If you want to remove a specific version of a package, use the <code>uninstall</code> command with the specific version:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop uninstall [package-name]@[<span style="color:#66d9ef">version</span>]
</span></span></code></pre></div></li>
</ol>
<p>These commands enhance Scoop&rsquo;s versatility, making it a powerful tool for scenarios where version management is crucial. It&rsquo;s particularly useful in development environments where testing across multiple versions of languages, libraries, or tools is necessary. Remember that the availability of different versions depends on the package and the bucket it belongs to. Not all packages may have multiple versions available in Scoop&rsquo;s default buckets.</p>
<h3 id="buckets-and-repositories">Buckets and Repositories</h3>
<p>Customizing Scoop with buckets and repositories is a key aspect of its flexibility and power. Buckets in Scoop are analogous to repositories in systems like Git. They are collections of &ldquo;manifests&rdquo; (JSON files) that describe how to install each application. By adding and managing buckets, you can extend Scoop&rsquo;s range of available software and tailor it to your specific needs. Here&rsquo;s how to customize Scoop using buckets and repositories:</p>
<ol>
<li>
<p><strong>Understanding Buckets</strong>:</p>
<ul>
<li>A Scoop bucket is a Git repository containing application manifests. Scoop uses these manifests to install applications.</li>
<li>By default, Scoop comes with its main bucket, which contains a wide range of commonly used applications.</li>
</ul>
</li>
<li>
<p><strong>Adding Custom Buckets</strong>:</p>
<ul>
<li>To add a new bucket, use the <code>bucket add</code> command followed by the bucket&rsquo;s name and, optionally, the Git URL if it&rsquo;s a third-party bucket:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket add [bucket-name] [bucket-url]
</span></span></code></pre></div></li>
<li>For well-known buckets, like &rsquo;extras&rsquo;, you don&rsquo;t need to specify the URL:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket add extras
</span></span></code></pre></div></li>
<li>These commands add the specified bucket to your Scoop installation, making all the applications in that bucket available for installation.</li>
</ul>
</li>
<li>
<p><strong>Listing Available Buckets</strong>:</p>
<ul>
<li>You can list all the buckets currently added to your Scoop installation with the <code>bucket list</code> command:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket list
</span></span></code></pre></div></li>
</ul>
</li>
<li>
<p><strong>Searching Across Buckets</strong>:</p>
<ul>
<li>Once you&rsquo;ve added a bucket, you can search for applications across all your added buckets using the <code>search</code> command:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop search [application-name]
</span></span></code></pre></div></li>
</ul>
</li>
<li>
<p><strong>Creating Your Own Bucket</strong>:</p>
<ul>
<li>If you have a set of applications or specific versions that aren&rsquo;t available in existing buckets, you can create your own. To do this, you need to:
<ul>
<li>Create a new Git repository.</li>
<li>Add application manifests in the form of JSON files to this repository.</li>
<li>Use the <code>bucket add</code> command to add your custom bucket to Scoop.</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>Contributing to Existing Buckets</strong>:</p>
<ul>
<li>If you want to add a new application or update an existing one in a public bucket, you can fork the bucket&rsquo;s repository, make your changes, and then submit a pull request. This is common in open-source projects and allows for community contributions.</li>
</ul>
</li>
<li>
<p><strong>Removing Buckets</strong>:</p>
<ul>
<li>If you no longer need a specific bucket, you can remove it from your Scoop installation using the <code>bucket rm</code> command:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>scoop bucket rm [bucket-name]
</span></span></code></pre></div></li>
</ul>
</li>
</ol>
<p>Customizing Scoop with buckets allows you to significantly expand the range of software that you can manage with it. Whether you&rsquo;re adding existing third-party buckets, creating your own for unique needs, or contributing to the community, buckets provide a powerful way to tailor Scoop to your workflow.</p>
<h2 id="conclusion">Conclusion</h2>
<p>For my new machine, I&rsquo;ve chosen Scoop as the primary installation tool, primarily because it neatly isolates application installations within my User folder. While I&rsquo;m not strictly committed to using only one installer, I&rsquo;ve found Scoop&rsquo;s approach efficient for most applications.</p>
<p>However, for certain software not available in Scoop&rsquo;s buckets, I&rsquo;m open to using alternatives like winget or specific application installers. A case in point is Visual Studio, a crucial tool for some of my development work. For this, I utilized the Visual Studio Installer, which not only facilitates updating and managing different versions of Visual Studio but also simplifies the modification of workloads.</p>
<p>So far, my experience with Scoop has been positive. I anticipate that as I continue using it, I&rsquo;ll gain a deeper understanding of how separate installation paths can streamline software management on my machines. I encourage you to explore different package managers, especially if you&rsquo;ve been relying on the same one or haven&rsquo;t used one at all. Diversifying your toolkit can be both enlightening and practical.</p>
<h2 id="additional-resources">Additional Resources</h2>
<ul>
<li><a href="https://learn.microsoft.com/en-us/windows/package-manager/winget/">Use the winget tool to install and manage applications</a></li>
<li><a href="https://chocolatey.org/">Chocolatey: The Package Manager for Windows</a></li>
<li><a href="https://docs.chocolatey.org/en-us/chocolatey-gui/">Chocolatey GUI</a></li>
<li><a href="https://scoop.sh">Scoop: A command-line installer for Windows</a></li>
<li><a href="https://ninite.com/">Ninite: Install and Update All Your Programs at Once</a></li>
</ul>
]]></content:encoded></item></channel></rss>