使用raw.gitmirror.com替换raw.githubusercontent.com以解决brew upgrade python@3.12慢的问题

MacOS系统上,升级python3.12时,超级慢,而且最后还失败了。看了日志,发现是用curl从raw.githubusercontent.com上下载Python安装包超时了。

解决方案一:开启翻墙工具,穿越围墙

解决方案二:使用raw.gitmirror.com替换raw.githubusercontent.com

翻墙有风险,操作需谨慎,这里我采用的是方案二。

1. 查看curl路径

which curl
# /usr/bin/curl

2. 编写自定义脚本,并赋予执行权限

ln -s `which curl` /usr/local/bin/curl
[ -d ~/.local/bin ] || mkdir -p ~/.local/bin/
cd ~/.local/bin
touch curl
chmod +x curl
# 注:PATH要配置到.bashrc或.zshrc里,别的窗口才能起作用
export PATH=$HOME/.local/bin:$PATH
vi curl
which curl
# ~/.local/bin/curl

3. 脚本内容

#!/usr/bin/env python
import os,sys
origin,target="raw.githubusercontent.com","raw.gitmirror.com"
args=" ".join(repr(i) if " " in i else i for i in sys.argv[1:])
cmd="/usr/bin/{} ".format(sys.argv[0].split('/')[-1])+args.replace(origin,target)
sys.exit(os.system(cmd))

4. 测试效果

curl https://raw.githubusercontent.com/Homebrew/homebrew-core/a775cbd0967da13128293d71fb26431fdedee6fb/Formula/m/mpdecimal.rb

5. 重新执行升级命令(这时候就很快了,不到一分钟就下载完毕,十分钟内就完成升级)

brew upgrade python@3.12

注: wget也可以用类似的方法加速

################# 2024.02.08 补充:

如果有外网服务器,还可以配个中转请求:

本地curl文件内容如下(需export JUMPER_IP='<服务器IP地址>')

#!/usr/bin/env python
import os
import systry:from typing import List  # NOQA:F401
except ImportError:passdef gen_cmd(sys_argv):# type: (List[str]) -> strargs = []scheme = "https://"origin, target = "raw.githubusercontent.com", "raw.gitmirror.com"domains = ("objects.githubusercontent.com", "github.com")redirect = os.getenv("JUMPER_IP")host = "http://{}:9337/".format(redirect)for i in sys_argv[1:]:if i.startswith(scheme):j = i[len(scheme) :]if j.startswith(origin):i = i.replace(origin, target)elif redirect:for domain in domains:if j.startswith(domain):i = host + jbreakelif " " in i:i = repr(i)args.append(i)tool = "/usr/local/bin/" + sys_argv[0].split("/")[-1]cmd = tool + " " + " ".join(args)return cmddef main():# type: () -> intsys_argv = sys.argvif "--dry" in sys_argv:sys_argv = [i for i in sys_argv if i != "--dry"]print("--> " + gen_cmd(sys_argv))return 0return os.system(gen_cmd(sys_argv))if __name__ == "__main__":sys.exit(main())

服务器上的app.py文件如下:

# pip install httpx orjson sanic gunicorn 'uvicorn[standard]'
from httpx import AsyncClient
from orjson import dumps, loads
from sanic import Sanic, rawapp = Sanic("Jumper", dumps=dumps, loads=loads)@app.route("/<full:path>")
async def handler(request, full: str):host, url = full.lstrip("/"), ""try:host, url = host.split("/", 1)except ValueError:passif host.startswith("http"):scheme, domain = host.split(".", 1)else:scheme, domain = "https", hostasync with AsyncClient(base_url=scheme + "://" + domain) as client:r = await client.get(url + "?" + request.query_string)return raw(r.content)if __name__ == "__main__":app.run()

后台启动服务:

gunicorn app:app --bind 0.0.0.0:9337 --worker-class uvicorn.workers.UvicornWorker --daemon

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试OpenSIPS3.4.3的lua模块

这几天测试OpenSIPS3.4.3的lua模块&#xff0c;记录如下&#xff1a; 有bug&#xff0c;但能用 但现实世界就是这样&#xff0c;总是不完美的&#xff0c;发现之后马上提了issue 下面这段代码运行报错&#xff1a; function func1(msg) xlog("ERR","…

【开源项目阅读】Java爬虫抓取豆瓣图书信息

原项目链接 Java爬虫抓取豆瓣图书信息 本地运行 运行过程 另建项目&#xff0c;把四个源代码文件拷贝到自己的包下面 在代码爆红处按ALTENTER自动导入maven依赖 直接运行Main.main方法&#xff0c;启动项目 运行结果 在本地磁盘上生成三个xml文件 其中的内容即位爬取…

论文阅读-CARD:一种针对复制元数据服务器集群的拥塞感知请求调度方案

论文名称&#xff1a;CARD: A Congestion-Aware Request Dispatching Scheme for Replicated Metadata Server Cluster 摘要 复制元数据服务器集群&#xff08;RMSC&#xff09;在分布式文件系统中非常高效&#xff0c;同时面对数据驱动的场景&#xff08;例如&#xff0c;大…

ECMAScript Modules规范的示例详解

ECMAScript Modules&#xff08;ESM&#xff09;是JavaScript中用于模块化开发的规范&#xff0c;它允许开发者将代码分割成多个独立的文件&#xff0c;以提高代码的可维护性和可重用性。下面是一个ECMAScript Modules规范的示例详解&#xff1a; 创建模块 1.1 导出变量 在一个…

大数据Flume--入门

文章目录 FlumeFlume 定义Flume 基础架构AgentSourceSinkChannelEvent Flume 安装部署安装地址安装部署 Flume 入门案例监控端口数据官方案例实时监控单个追加文件实时监控目录下多个新文件实时监控目录下的多个追加文件 Flume Flume 定义 Flume 是 Cloudera 提供的一个高可用…

【安卓操作系统——讲解】

安卓操作系统 安卓操作系统 安卓操作系统 安卓&#xff08;Android&#xff09;是一种基于Linux内核和其他开源软件的移动操作系统&#xff0c;主要用于触屏移动设备如智能手机和平板电脑。由Andy Rubin等人开发&#xff0c;最初的目的是创建一个先进的操作系统&#xff0c;用…

Python算法100例-1.4 百钱百鸡

1.问题描述2.问题分析3.算法设计4.知识点补充5.确定程序框架6.确定公鸡、母鸡和小鸡数量7.完整的程序8.问题拓展 完整源代码项目地址&#xff0c;关注博主私信’源代码’后可获取 1.问题描述 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”&#xf…

【Make编译控制 03】Makefile常用函数

目录 一、shell 二、subst 三、patsubst 四、foreach 五、dir 六、notdir 七、filter 八、filter-out 九、basename 十、wildcard 一、shell $(shell <command> <arguments>)# 名称&#xff1a;shell 命令函数 # 功能&#xff1a;调用 shell 命令 comma…

聚簇索引、非聚簇索引、回表、索引下推、覆盖索引

聚簇索引&#xff08;主键索引&#xff09; 非叶子节点上存储的是索引值&#xff0c;叶子节点上存储的是整行记录。 非聚簇索引&#xff08;非主键索引、二级索引&#xff09; 非叶子节点上存储的都是索引值&#xff0c;叶子节点上存储的是主键的值。非聚簇索引需要回表&…

动态规划的一个初步学习

啥叫动态规划 在我们写很多的题目时&#xff0c;常常可以用暴力枚举来写&#xff0c;缺点就是速度太慢了。如果我们用一个数组或者哈希表&#xff08;虽然我还没学过哈希表&#xff09;将之前暴力枚举的数据储存起来&#xff0c;当再一次枚举到这个数字的时候就直接调用数组或…

Android---Jetpack Compose学习002

Compose 布局。Compose 布局的目标&#xff1a;1&#xff09;实现高性能&#xff1b;2&#xff09;让开发者能够轻松编写自定义布局&#xff1b;3&#xff09;在 Compose 中&#xff0c;通过避免多次测量布局子级可实现高性能。如果需要进行多次测量&#xff0c;Compose 具有一…

分享86个表单按钮JS特效,总有一款适合您

分享86个表单按钮JS特效&#xff0c;总有一款适合您 86个表单按钮JS特效下载链接&#xff1a;https://pan.baidu.com/s/1WwQGFPWv8464JBcuEMJZ_Q?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

LeetCode639. Decode Ways II——动态规划

文章目录 一、题目二、题解 一、题目 A message containing letters from A-Z can be encoded into numbers using the following mapping: ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” To decode an encoded message, all the digits must be grouped then …

spring boot学习第十二篇:mybatis框架中调用存储过程控制事务性

1、MySQL方面&#xff0c;已经准备好了存储过程&#xff0c;参考&#xff1a;MYSQL存储过程&#xff08;含入参、出参&#xff09;-CSDN博客 2、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"…

SpringCloud--Eureka注册中心服务搭建注册以及服务发现

注意springboot以及springcloud版本&#xff0c;可能有莫名其妙的错误&#xff0c;这里使用的是springboot-2.6.13&#xff0c;springcloud-2021.0.5 一&#xff0c;Eureka-Server搭建&#xff1a; 1.创建项目&#xff1a;引入依赖 <dependency><groupId>org.sp…

[C/C++] -- Boost库、Muduo库编译安装使用

1.Muduo库 Muduo 是一个基于 C11 的高性能网络库&#xff0c;其核心是事件驱动、非阻塞 I/O、线程池等技术&#xff0c;以实现高并发、高性能的网络通信。Muduo 库主要由陈硕先生开发维护&#xff0c;已经成为 C 服务器程序员的常用工具之一。 Muduo 库的主要特点&#xff1a…

Javaweb之SpringBootWeb案例之事务管理的详细解析

1. 事务管理 1.1 事务回顾 在数据库阶段我们已学习过事务了&#xff0c;我们讲到&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&am…

MySQL数据库⑥_内置函数(日期函数+字符串函数+数学函数等)

目录 1. 日期函数 2. 字符串函数 3. 数学函数 4. 其它函数 本篇完。 1. 日期函数 MySQL常用的日期函数如下&#xff1a; 函数名称描述current_date()获取当前日期current_time()获取当前时间current_timestamp()获取当前时间戳now()获取当前日期时间date(datetime)获取d…

深度学习的进展及其在各领域的应用

深度学习&#xff0c;作为人工智能的核心分支&#xff0c;近年来在全球范围内引起了广泛的关注和研究。它通过模拟人脑的学习机制&#xff0c;构建复杂的神经网络结构&#xff0c;从大量数据中学习并提取有用的特征表示&#xff0c;进而解决各种复杂的模式识别问题。 一、深度…

百面嵌入式专栏(面试题)驱动开发面试题汇总1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux驱动程序的功能是什么? 对设备初始化和释放。进行内核与硬件的数据交互。检测和处理设备出现的错误。2、内核程序中申请内存使用什么函数? 答案:kmalloc()、kzalloc()、vm…