软件介绍

  • Scoop是一个 Windows 系统下的命令行包管理工具,它可以方便地安装、管理和更新各种常用的软件和工具。
  • Scoop的功能十分强大,类似于Linux系统下的apt,yum和pacman,支持自动更新软件,卸载软件以及回滚软件到特定版本
  • Scoop最吸引人的一点在于其强大的开源社区支持,使用者可以在Scoop中设置各种第三方软件源,以此来安装一些特殊的软件。
  • 还有一点必须要说明的是,Scoop所安装的软件都使用了绿色版本,不需要写入系统注册表或其他系统文件,以此来最大限度地保证软件灵活性和系统干净。

软件安装

  1. 打开Powershell,执行以下命令,检查当前Powershell版本
    $PSVersionTable.PSVersion
    
  2. Powershell至少要高于5.1才可以,如下图所示,我的版本为7.5
  3. 在Powershell中执行以下两条命令
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
    
  4. 安装后,执行以下命名,查看是否可以显示Scoop版本,可以的话说明安装成功。
    scoop --version
    

必装工具

如果要更好地使用Scoop,则必须要安装以下两个工具

git

执行以下命令,安装git

scoop install git

在安装过程中,Scoop会自动安装7zip等配套工具,请不要去随意改动,这些都是Scoop在使用过程中必须要用的工具。

Scoop可以使用 scoop search 软件名来搜索软件,但该命令的效率比较低下,因此我们需要执行以下命令,来安装一个更好的搜索工具

scoop install scoop-search

安装成功后,我们就可以愉快地使用 scoop-search 软件名来快速搜索软件了。

推荐bucket

  • Scoop的bucket指的是一个包含众多软件包的仓库,实际上一个bucket就是一个软件源。
  • 如果我们想要安装某个软件,Scoop会通过查询已配置的bucket来找到对应的软件包并进行安装。
  • 默认情况下,Scoop配置了几个常用的bucket。但有时,这些bucket可能并不包含我们需要的某些软件,这时,我们就需要添加额外的bucket来扩展可用的软件列表。
  • 以下是我推荐配置的一些第三方bucket,涵盖了日常到开发所需要的大部分软件,大家可以选择全部安装,也可以选择安装部分。具体这些bucket都包含了哪些软件,大家可以直接点击右侧的github链接进行查阅。
    scoop bucket add dorado https://github.com/chawyehsu/dorado
    scoop bucket add extras https://github.com/ScoopInstaller/Extras
    scoop bucket add games https://github.com/Calinou/scoop-games
    scoop bucket add java https://github.com/ScoopInstaller/Java
    scoop bucket add main https://github.com/ScoopInstaller/Main
    scoop bucket add nonportable https://github.com/ScoopInstaller/Nonportable
    scoop bucket add scoopet https://github.com/ivaquero/scoopet.git
    scoop bucket add spotify https://github.com/TheRandomLabs/Scoop-Spotify.git
    scoop bucket add versions https://github.com/ScoopInstaller/Versions
    scoop bucket add zapps https://github.com/kkzzhizhou/scoop-zapps
    scoop bucket add lemon https://github.com/hoilc/scoop-lemon
    scoop bucket add scoopcn https://github.com/scoopcn/scoopcn.git
    scoop bucket add nerd-fonts
    
  • 需要注意的是,main在安装时,可能会报错,让你先remove掉当前的main,这时你可以选择remove,也可以直接使用默认的main,没什么太大关系。

常用命令

搜索软件

scoop-search <软件名>

支持模糊搜索,比如想要安装QQ,可以直接执行 scoop-search qq,此时会出现包含该关键字的软件名称和对应的bucket,如下图所示

安装软件

  1. 不指明bucket,由Scoop自动匹配

    scoop install <软件名>
    
  2. 指明bucket,安装特定bucket的特定软件

    scoop install <bucket名>/<软件名>
    

查看软件列表

scoop list

更新软件

  1. 更新特定软件
    scoop update <软件名>
    
  2. 更新所有软件
    scoop update *
    

卸载软件

scoop uninstall <软件名>

如果在卸载软件时还要同时清除配置文件,则需要执行以下命令

scoop uninstall <软件名> -p

查看软件详情

执行以下命令可以查看软件的具体信息,包括版本,bucket等

scoop info <软件名>

添加Bucket

scoop bucket add <bucket 名称> <bucket URL>

删除Bucket

scoop bucket rm <bucket 名称>

清除缓存

Scoop下载的软件包通常会保留在本地,方便再次安装,可以执行以下命令清除所有缓存。

scoop cache rm *

删除旧版本软件

Scoop在每次更新软件时,总是会保留之前版本的软件数据,方便用户进行回滚。如果不想要,可以执行以下命令删除所有旧版本软件数据。

scoop cleanup *

导出和导入

Scoop支持一键导出已安装的软件列表,方便我们在一台新电脑上安装软件。

导出命令

scoop export > <配置文件路径>

导入命令

scoop import <配置文件路径>

目录详解

  1. Scoop安装后,所有的数据都会保存在 C:\Users\用户名\scoop目录下,包括软件本体,软件配置和缓存等,下面详细介绍一下其中每个目录的作用。
    1. apps:软件本体目录,可以从其中找到本地安装的各种软件。点击进去某一个特定软件的目录,可以发现存在一个或多个以软件版本号命名的目录,和一个 current目录。Scoop每次更新软件时,总是会留着之前的软件目录,因此一个软件中会存在多个版本。而 current目录则是一个快捷方式,它指向于当前使用的软件版本目录。
    2. buckets:bucket目录,保存了所有你配置的bucket。
    3. cache:缓存目录,用于保存下载好的软件包。
    4. persist:配置目录,用以保存各个软件的配置文件。Scoop采用数据与配置分离的方案,使得每次软件更新或卸载时,配置也不会被清除。
    5. shims:包含所有已安装软件的可执行文件快捷方式,这些快捷方式都指向了 apps目录下的实际软件本体。
  2. 通过Scoop安装的软件,默认不会在桌面创建快捷方式。可以通过搜索软件名打开软件,也可以在 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps目录下寻找软件,这个目录保存了所有通过Scoop安装的软件的快捷方式。

一些建议

注意查看提示

Scoop在安装部分软件后,会弹出相应的软件提示,一般是以 Note开头。请不要忽视它,好好地阅读它可以解决很多麻烦,比如安装vscode时的右键菜单问题,或者是安装miniconda时的环境丢失问题。

Scoop不是万能的

  1. 并非所有软件都可以靠Scoop安装,一些系统级的软件还是需要自己手动安装,以获得最佳的使用体验,比如火绒,Chrome和VMWare等。
  2. 即使Scoop用着十分强大的社区支持,但总是会缺少部分你想要安装的软件。对于这种情况,要么你去找第三方bucket支持,要么自己手动安装,当然也可以自己手动搓一个bucket仓库出来。

Hash check failed

在安装部分软件时,可能会弹出该报错,意思是hash校验没有通过。此时你可以使用以下命令,强制跳过hash校验并安装软件。但我仍然推荐你好好检查该软件所属的bucket仓库,查看其中配置文件对于该软件指向的下载地址是否有问题,避免下载病毒

scoop install -s <软件名>

注意事项

Scoop在安装部分软件时,会出现一些意想不到的情况,在这里我会给出其问题和解决办法。

miniconda

  1. miniconda所属bucket:dorado
  2. 问题:通过miniconda安装的环境,在升级miniconda后会丢失。
  3. 原因:miniconda的环境不会被Scoop持久化,即使是base环境,在通过Scoop升级miniconda后,也会清除其所有包。
  4. 解决办法:将miniconda的环境目录改为一个独立的路径,不受Scoop影响,以下为执行步骤。
    1. 打开 ~/.condarc 文件(如果没有的话,可以手动创建)
    2. 添加或修改以下配置
      envs_dirs:
        - ~/.conda/envs
      
    3. 该配置指明了miniconda的环境目录,这里我设置为 ~/.conda/envs
    4. 重启终端或miniconda,之后尝试安装miniconda环境,然后通过以下命令查询环境所处路径,发现除了base以外,新建环境都位于 ~/.conda/envs目录下了。
      conda env list