国内用户快速部署Scoop@一键加速安装scoop@Deploy-ScoopForCNUser@常见报错处理

abstract

脚本说明

  • 以下脚本对原脚本的扩展和改进,提供更多的灵活性和安装方案,以及更加详细的注释
  • 对于某些精简版或修改版系统默认将用户权限提到Administrator的情况提供安装支持选项
  • 关于脚本的稳定性和部署速度,这主要取决于加速镜像,Get-AvailableGithubMirros列出一些常见的镜像,它们当中在不同时段加速表现可能各不相同,如果你发现默认镜像或者你挑选的镜像加速效果不佳,那么请更换镜像

可能出现的报错问题👺

  • 在更换镜像后,部署脚本重新执行可能会报错(也可能顺利执行),如果报错,可能是因为之前的错误或者不完整的安装执行操作污染了安装环境,可以尝试scoop清理缓存,提升到管理员权限等措施再重试安装

  • 另一类报错是安装完毕而在使用过程中报错

  • 其中gitee方案部分时候会报错,比如代理服务器代理过程中发生错误(500系列的错误),我们可以选择重试

    PS> sudo pwsh -c scoop install gdb -g
    Installing 'gdb' (14.1) [64bit] from 'main' bucket
    proxy: https://nuwen.net/files/mingw/components-19.0.7z
    The remote server returned an error: (530) Server Error.
    URL https://nuwen.net/files/mingw/components-19.0.7z is not valid
    
    PS> sudo pwsh -c scoop install gdb -g
    #自动清理之前的不成功安装
    WARN  Purging previous failed installation of gdb.
    ERROR 'gdb' isn't installed correctly.
    Removing older version (14.1).
    'gdb' was uninstalled.
    
    Installing 'gdb' (14.1) [64bit] from 'main' bucket
    proxy: https://nuwen.net/files/mingw/components-19.0.7z
    components-19.0.7z (58.6 MB) [===================================================] 100%
    Checking hash of components-19.0.7z ... ok.                                                                             
    Extracting components-19.0.7z ... done.
    Running pre_install script...done.
    Linking C:\ProgramData\scoop\apps\gdb\current => C:\ProgramData\scoop\apps\gdb\14.1
    Creating shim for 'gdb'.
    Creating shim for 'gdbserver'.                                                                                          
    'gdb' (14.1) was installed successfully!
    

还有其他类型的错误👺

下载阶段发生报错或失败
  • 从默认bucket或者指定bucket下载失败,可以考虑更换其他bucket(如果其他bucket也有的话)
  • 启用aria2下载可能会被拒绝,尤其还不恰当的aria2参数配置,可能导致下载出错,考虑禁用(可以临时禁用)掉aria2
  • 中断和恢复
    • 假设你的buckets中(可能是同一个bucket但是分别用不同的镜像加速成不同名字的bucket,例如extras,extras1,extras2,…)有多个提供了你想要的包Pkgx.那么你可以从中选择一个或者默认不指定由scoop为你选择一个bucket下载并安装
    • 这时候你可能发现它下载的比较慢或者不够快,于是你尝试手动指定bucket换一个下载来源,这种情况下建议第二次安装时使用-g选项,这样会忽略掉之前下载的部分,否则可能因为之前下载的文件因为打断有错误或者版本有差异导致aria2下不动它
下载成功但是安装时报错
  • 未能够通过hash校验,可以尝试scoop install时重新下载-k,或者跳过校验-s选项
  • 全局安装权限不足可能报错
  • 安装过程中由于安装脚本和软件版本适配问题而报错,这种情况就比较复杂,考虑不用scoop安装,采用其他方式安装(这种情况比较少)
  • 需要的bucket未安装,例如spc bucket中有个包quarkpan,但是安装的时候提示你没有aki这个bucket,scoop提示你安装添加aki bucket,我们可以网络搜scoop bucket add aki,获取aki链接(可以配合加速镜像),或者找国内的加速项目获取加速的链接,例如scoop bucket add aki https://gitee.com/scoop-installer/aki-apps

下载脚本

脚本版本更新

  • 脚本版本说明(建议参考代码仓库以获取最新版本的部署脚本:PS/Deploy/deploy.psm1 · xuchaoxin1375/scripts - Gitee.com) 或者下载此文件导入到powershell后调用
  • 相关基础软件的我建议用scoop install -g选项全局安装,让windows上的所有用户都可以使用而不需要重复安装

权限说明

  • 通常普通权限用户就可以利用此脚本安装scoop
  • 个别情况下会出现安装失败,那么请使用管理员身份启动一个powershell窗口,然后在其中运行此部署脚本
    • 在管理员窗口下运行此脚本,脚本中提问你是否使用管理员权限安装时选择y才有效

安装脚本👺

  • 下载或者安装下面的脚本,然后用powershell执行(导入)
  • 当然,您也可以直接复制下面的代码,然后粘贴到powershell中(推荐powershell v7+)
  • 相关函数有多个,其中是Deploy-ScoopForCNUser是主函数
  • 代码比较长,推荐到gitee下载最新版脚本文件使用,这里作为备用

$GithubMirrors = @(
    # 注意,如果你的浏览器使用了代理,那么部分镜像站会和代理冲突,所以可能命令行中测试可以访问的链接在浏览器中确打不开镜像站,可以关闭代理或换个浏览器后重新验证该镜像站的可用性
    'https://github.moeyy.xyz', # Moeyy - 提供 GitHub 文件的加速下载功能
    'https://ghproxy.cc',
    'https://ghproxy.net', # GitHub Proxy by GitHub99 - 提供 GitHub 文件的加速下载和克隆服务 #和用户自己的代理可能发生冲突
    'https://mirror.ghproxy.com',
    'https://gh.ddlc.top'
    # 'https://github-mirror.us.kg',#请打开此网站找到可用的镜像站,直接使用此来链接不适合实际用途,仅允许小流量代理
    
    # 'https://ghproxy.com/bad/demo'

    '' #空字符串收尾
)
function Get-AvailableGithubMirrors
{
   
   
    <#
    .SYNOPSIS
    列出流行的或可能可用的 GitHub 加速镜像站。
    列表中的镜像站可能会过期,可用性不做稳定性和可用性保证。

    .DESCRIPTION
    推荐使用 aria2 等多线程下载工具来加速下载,让镜像加速效果更加明显。
    

    .LINK
    # 镜像站搜集和参考
    https://github-mirror.us.kg/
    #>
    [CmdletBinding()]
    param(
        $mirrors = $GithubMirrors,
        [switch]$ListView,
        [switch]$PassThru,
        [switch]$SkipCheckAvailability
    )

    # 定义镜像站列表
    # $mirrors = @(
    #     'https://mirror.ghproxy.com',
    #     'https://ghproxy.cc',
    #     'https://github.moeyy.xyz',
    #     'https://github-mirror.us.kg', 
    #     'https://gh.ddlc.top'
    #     'https://ghproxy.com/bad/demo'
    # )
    
    # 检查镜像站的可用性
   

    Write-Host 'Checking available mirrors...'
    $availableMirrors = $mirrors
    # 存储可用的镜像列表
    if (!$SkipCheckAvailability)
    {
   
   
        $availableMirrors = @()

        foreach ($mirror in $mirrors)
        {
   
   
            # Write-Verbose "Testing $mirror..."
            if (Test-MirrorAvailability -Url $mirror)
            {
   
   
                Write-Verbose "$mirror is available."
                Write-Host "`t $mirror" -ForegroundColor Green
                $availableMirrors += $mirror
            }
            else
            {
   
   
                Write-Verbose "$mirror is not available."
                Write-Host "`t $mirror." -ForegroundColor Red
            }
        }
    }

    # 显示可用的镜像
    Write-Host "`nAvailable mirrors:"
    # 空白镜像保留
    $availableMirrors = @('') + $availableMirrors
    Write-Host ' 0: Use No Mirror' -NoNewline
    $index = 1
    $availableMirrors | ForEach-Object {
   
   
        # $index = [array]::IndexOf($availableMirrors, $_)
        # if($availableMirrors[$index] -eq ""){continue}
        if ($_.Trim())
        {
   
   

            Write-Host " ${index}: $_" -NoNewline
            $index += 1
        }
   
        
        Write-Host ''
    }

    if ($PassThru)
    {
   
   
        return $availableMirrors
    }
}

function Test-MirrorAvailability
{
   
   
    [CmdletBinding()]
    param (
        [string]$Url
    )

    try
    {
   
   
        # 使用 Invoke-WebRequest 检查可用性
        $response = Invoke-WebRequest -Uri $Url -Method Head -TimeoutSec 5 -ErrorAction Stop
        
        $availability = $response.StatusCode -eq 200
    }
    catch
    {
   
   
        $availability = $false
    }
    if ($VerbosePreference)
    {
   
   

        if ($availability)
        {
   
   

            Write-Host "Mirror $Url is available." -ForegroundColor Green
        }
        else
        {
   
   

            Write-Host "Mirror $Url is not available." -ForegroundColor Red
        }
    }
    return   $availability
}

function Get-SelectedMirror
{
   
   
    [CmdletBinding()]
    par
<think>首先,用户的问题是关于SAP MBT的,询问它是什么或它的用途。我需要基于提供的引用和系统指令来构建回答。 回顾引用: - 引用[1]:关于部署SAP UI5应用到STP BTP时的错误。 - 引用[2]:提到了MBT(Mobile Back-End Tools),用于全栈开发,使用CSDL文件,在SAP Business Application Studio中。 - 引用[3]:关于安装SAP Business One Web Client Extensions。 - 引用[4]:SAP UI5应用在Business Application Studio的构建日志。 - 引用[5]:SAP BTP点滴,包括构建和部署项目,提到安装工具如MBT(Cloud MTA Build Tools)。 从引用[2]和[5]中,MBT似乎指的是Mobile Back-End Tools或Cloud MTA Build Tools。引用[2]明确说"Mobile Back-End Tools (MBT)",而引用[5]提到"Cloud MTA Build Tools (MBT)"。所以,MBT可能有两种含义: - Mobile Back-End Tools:用于移动应用开发。 - Cloud MTA Build Tools:用于构建和部署多目标应用(MTA)。 用户的问题是"SAP MBT",可能指的是SAP上下文中的MBT。结合引用,我应该澄清这个缩写。 用户意图:用户可能是在问SAP系统中的MBT,可能是一个事务代码、模块或工具。基于引用,最相关的是Mobile Back-End Tools或Cloud MTA Build Tools。 构建回答: 1. **系统指令**: - 所有行内数学表达式用$...$,但这里可能不涉及数学。 - 独立公式用$$...$$,但可能不需要。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在引用段落末尾添加引用标识,如[^1]。 2. **回答结构**: - 清晰、逐步解决问题。 - 尽量真实可靠,基于引用。 3. **内容**: - 解释SAP MBT:基于引用,MBT可能指: - Mobile Back-End Tools:用于开发移动应用后端。 - Cloud MTA Build Tools:用于构建和部署MTA应用在SAP BTP上。 - 引用[2]直接提到MBT是Mobile Back-End Tools,用于全栈开发。 - 引用[5]提到MBT是Cloud MTA Build Tools。 - 所以,我需要区分或澄清。 可能的回答大纲: - 介绍SAP MBT的含义。 - 解释每种用途。 - 提供上下文基于引用。 - 添加引用标识。 - 生成相关问题。 回答结构: 1. 解释SAP MBT。 2. 描述用途。 3. 基于引用提供细节。 4. 生成相关问题。 最终回答: - 用中文。 - 在引用末尾加[^2]或[^5]。 - 生成相关问题。</think>### SAP MBT 的解释和用途 在 SAP 系统中,MBT 通常指 **Mobile Back-End Tools(移动后端工具)**,这是一个用于简化移动应用全栈开发的工具集。它特别针对 SAP Business Technology Platform (BTP) 环境,帮助开发者快速构建、部署和管理移动应用的后端服务。MBT 的核心是使用元数据文件(如 Common Schema Definition Language, CSDL)来定义数据模型和服务,从而加速开发流程。例如,在 SAP Business Application Studio 中,MBT 提供了图形化建模器,允许开发者通过拖拽方式设计 OData 模型,而无需手动编写复杂代码[^2]。 此外,在 SAP 上下文中,MBT 有时也指 **Cloud MTA Build Tools(云多目标应用构建工具)**,这是一个用于构建和部署多目标应用(MTA)的工具。MTA 是 SAP BTP 上的一种打包格式,用于将多个应用组件(如 UI5 前端、Java 后端)组合成一个可部署单元。MBT 在这里的作用是自动化构建过程,包括依赖管理、资源打包和部署配置。例如,开发者可以使用命令行工具(如 `mbt build`)生成 MTA 归档文件,然后部署到 SAP BTP 云环境[^5]。 #### 主要用途: 1. **简化移动应用开发**:MBT 作为 Mobile Back-End Tools 时,专注于移动场景。它允许开发者: - 使用 CSDL 文件定义数据模型和服务接口。 - 自动生成 OData 服务代码,减少手动编码工作量。 - 集成 SAP Business Application Studio 的图形化工具,提升开发效率。 例如,在构建一个移动端应用时,开发者可以先用 MBT 设计后端 API,再连接 SAP UI5 前端,实现端到端开发[^2]。 2. **自动化应用部署**:MBT 作为 Cloud MTA Build Tools 时,用于优化云部署- 构建 MTA 项目文件(如 `mta.yaml`),管理应用依赖和资源配置。 - 支持与 SAP BTP 的持续集成/持续部署(CI/CD)流程。 - 解决常见部署错误,例如在运行 `npm run deploy` 时避免 MTA 检索错误[^1][^5]。 例如,引用[5]中提到,开发者需先安装 MBT 工具(如通过 Chocolatey 或 Scoop),才能顺利执行构建命令。 总之,SAP MBT 的核心价值在于提高开发效率和降低部署复杂度,特别适用于 SAP BTP 平台上的移动和云应用项目。如果您有具体场景(如错误处理或工具安装),可提供更多细节以进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cxxu1375

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值