包管理
安装路径
windows 默认的应用安装路径是由环境变量路径
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
下的 ProgramFilesDir
这一变量来决定的,修改其值既可以修改程序的默认安装路径。
后经测试不建议修改,统一软件安装规范为直接修改安装路径
- 修改盘符 C 为目的安装的磁盘
- 并将其原有路径中的空格进行删除
- 例如
C:\Program Files\...
改为D:\ProgramFiles\...
choco
默认安装位置通过以下几个环境变量进行指定,具体参考 Getting Started,可安装的包参考 Packages,会有具体教程
- 一些包会默认装在
ChocolateyInstall\lib
目录下; - 其它一些基于 windows 下的安装包比如 MSI 会被安装在 C 盘下的
Program Files
文件夹里; - 还有一些数据包会被装在
$env:ChocolateyBinRoot
目录下,如果这个环境变量不存在,包将会被创建在c:\tools
目录下。
修改方法
- 对于第一种和第三种情况,我们进行设置对应的环境变量即可,即
ChocolateyInstall
和ChocolateyBinRoot
- 而对于第二种情况,我们需要通过指令传递安装路径的,比如
choco install llvm -ia "'/D=D:\software\llvm'"
- 由于 choco 的一些需要的功能需要收费,且总体体验不能够高度的自主可控,转用 Scoop
winget
winget 是微软推出的一款旨在实现 windows 下的包管理的工具,但是其目前的包数量仍较少,且对代理的支持效果较差,国内用户体验感较差,一些基础的使用尝试如下:
- winget settings 打开配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"$schema": "https://aka.ms/winget-settings.schema.json",
"visual": {
"progressBar": "rainbow"
// 三种样式可选: accent(默认值), retro, rainbow
},
"logging": {
"level": "verbose"
}, // “verbose”, “info”, “warning”, “error”, “critical”
"experimentalFeatures":{
"experimentalMSStore": true
},
// For documentation on these settings, see: https://aka.ms/winget-settings
// "source": {
// "autoUpdateIntervalInMinutes": 5
// },
}
scoop
准备
在 powershell 中配置 scoop 代理的方式为
$env:scoop_proxy = "http://127.0.0.1:7890"
(替换为自己的端口),清除
scoop 代理的方式为 $env:scoop_proxy= ""
安装
- 下载安装脚本:
irm get.scoop.sh -outfile 'install.ps1'
或者curl -k -x 127.0.0.1:7890 https://raw.githubusercontent.com/scoopinstaller/install/master/install.ps1 -o install.ps1
(国内用户 raw.githubusercontent.com 该域名可能被污染无法访问到真实的 ip 地址,可以通过 ipaddress.com 查找对应的 ip 并修改 hosts 文件即可) - 允许脚本执行权限:管理员身份打开 powershell 输入
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- 执行所下载的脚本进行安装:
.\install.ps1 -RunAsAdmin -ScoopDir 'D:\Scoop' -ScoopGlobalDir 'D:\ProgramFiles' -NoProxy
或者.\install.ps1 -RunAsAdmin -ScoopDir 'D:\Scoop' -ScoopGlobalDir 'D:\Scoop' -Proxy '127.0.0.1:7890'
- 执行
scoop checkup
检查 scoop 安装是否正常如果当前用户不是管理员的话,需去掉-RunAsAdmin
选项
基础使用
scoop bucket add main
: 先添加基础的软件源仓库,这里仅展示 main 仓库的添加 extras,versions 类似scoop search [pkg]
: 终端搜索想要安装的软件包,如果没有可以上 Scoop 去搜索,按照指示步骤添加对应的 bucket 即可scoop install [pkg]
: 安装对应的软件包,有时候需要参照上方进行代理设置scoop remove [pkg]
: 卸载对应软件包scoop status
: 查找软件包更新scoop update
: 更新 scoop 以及软件源scoop update [pkg]
: 更新对应软件包scoop cache rm *
: 清除缓存scoop cleanup *
: 清理过时软件版本scoop bucket list
: 列出当前使用的软件源/存储桶- 导出软件源/存储桶
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19$SCOOP_DIR = 'D:\software\scoop'
$buckets = (scoop bucket list)
$knownBuckets = (scoop bucket known)
Push-Location
$output = $buckets | ForEach-Object {
$outputBucket = $_.Name
if ($_.Name -notin $knownBuckets) {
Set-Location
$outputBucket += ' ' + ($_.Source)
}
$outputBucket = 'scoop bucket add ' + $outputBucket
$outputBucket
}
Pop-Location
$apps = (scoop list)
$output += 'scoop install ' + ($apps | ForEach-Object { $_.Name })
$output | Out-File -FilePath 'install-scoop-softwares.ps1' -Encoding utf8
Write-Output $output
更多使用方法可以查看 scoop help
问题
WARN Uncommitted changes detected. Update aborted
1 | git -C "$(scoop prefix scoop)" reset --hard |