飘逸峰的博客

Spring--Java程序员的春天

摘要

  • brew install、brew upgrade 下载很慢或中途断开时,可以自己把同一个安装包下完,放到 Homebrew 这次要读的缓存文件上,再重新执行原来的命令。下面用本机升级 gh 2.102.0 作例子。Homebrew 7.0.8,缓存目录是 ~/Library/Caches/Homebrew。这次 GitHub 上的源码包下到一半就断了:curl: (18) Transferred a partial file。
  • 可以自己把同一个压缩包下完,再放到 Homebrew 这次要读的缓存文件上。放进去的必须是 formula 里那个 URL 的文件,SHA-256 也要一致。文件名以 brew --cache --build-from-source gh 的输出为准,不能自己编哈希,也不能拷进 $(brew --cellar)/gh。
  • gh 2.102.0 在当前 API 里没有 bottle,所以这次下的就是源码包 https://github.com/cli/cli/archive/refs/tags/v2.102.0.tar.gz,校验和是 08bf0ef8b4409893889175e0f5279d30d6edd96465816042c0d7c72eac598158。本机缓存文件名是 downloads/838ae966d01d820dbc2c41ab1f82d72064fe030ca19254fb2ff3aa993768b18d--cli-2.102.0.tar.gz。前半段是这条 URL 的 SHA-256,后半段来自下载响应里的文件名。
  • 校验通过后再执行原来的 brew upgrade gh 或 brew install gh。Homebrew 会接着做自己的校验和编译。缓存和 Cellar 的差别见 MacOS软件包管理器--brew。
阅读全文 »

摘要

  • 本机环境 15.8.1-x86_64。
  • Homebrew 7.0.8 不再为 Intel Mac 提供 cmake 的 bottle,brew upgrade cmake 会从源码执行 ./bootstrap。cmake 4.4.4 停在 Cannot find a C++ compiler that supports both C++11。
  • 失败点在 C++ 头文件的搜索路径,不在某一个依赖 cmake 的软件包。直接升级或安装 cmake,以及任何要在本机编译 cmake 的 formula,都会停在同一处。这次是升级 wget 时把它作为依赖编出来的。
  • /usr/bin/clang++ 是 Apple Clang 17.0.0,clang++ --version 正常,CC、CXX、CXXFLAGS 都没有设置。用一段 C++11 程序编译,报错是 fatal error: 'iostream' file not found。
  • iostream 在各个 SDK 里都有,例如 /Library/Developer/CommandLineTools/SDKs/MacOSX26.2.sdk/usr/include/c++/v1/iostream。编译器实际搜索的是 /Library/Developer/CommandLineTools/usr/include/c++/v1。这条路径按编译器自己的位置计算:InstalledDir 是 CommandLineTools/usr/bin,libc++ 头文件放在它的上一级 usr/include/c++/v1。这个目录还在,里面没有 iostream。目录一旦存在,驱动就只用它,不再把 SDK 里的那份加入搜索路径。
  • 把这个目录改名为 c++.backup 之后,同一段 C++11 程序可以编译并输出 123,再执行 brew upgrade cmake。
  • 日志里的 Intel x86_64、Tier 3 警告说明这次为什么要本地编译。Homebrew 在 Intel 上的支持变化见 MacOS软件包管理器--brew 文末「从 4.5 到 7.0」。
阅读全文 »

摘要

  • MacPorts 是 macOS 上的软件包管理器,用来安装命令行工具和库,例如 git、wget、nginx。角色和 MacOS软件包管理器--brew 相同,默认目录是 /opt/local,可以和 Homebrew 装在同一台机器上。
  • 安装脚本叫 Portfile,对应 Homebrew 的 formula。日常命令是 port,改动系统的操作要加 sudo。
  • Homebrew 计划在 2027 年 9 月或更晚停止在 Intel Mac 上运行,官方建议改用 MacPorts。已经用 brew 装好的软件不会自动搬过来,要在 MacPorts 里重新装。
  • 本文命令对照 MacPorts Guide,安装包版本以指南页上的 2.12.6 为例。本机是 MacOS Intel Sequoia 15.7.9,安装包选带 15-Sequoia 的 pkg。
阅读全文 »

摘要

  • brew 用 formula 从源码(或 bottle)安装软件,用 cask 安装已经打好的成品。成品常见是 .app / .pkg,也可以只是一个命令行二进制,不一定非要是 GUI。

  • 本文介绍如何在 macos 下创建自己的 Cask,和 brew -- 创建自己的 Formula 是一对:那篇讲 Formula,这篇讲 Cask。

  • 本文基于 MacOS 15.x,brew 版本为 Homebrew 7.0.4。

  • 关于 brew 的安装及使用可以参考 MacOS软件包管理器--brew

阅读全文 »

摘要

阅读全文 »

摘要

  • MySQL 从 5.7.8 起提供原生 JSON 类型:写入时自动校验、内部二进制存储,查询可用路径表达式与一组 JSON_* 函数
  • 本文按日常用法整理:建表写入、路径取值(-> / ->>)、增删改键、生成列索引、多值索引,以及常见坑
  • 适合日志 / 埋点 / 半结构化扩展字段;强一致业务主表仍建议用普通列
  • Shell 侧批量导入见 MySQL Shell(mysqlsh)使用手册:常用功能速查 的 util.importJson;官方文档:The JSON Data Type、JSON Functions
阅读全文 »

摘要

  • MySQL Shell(mysqlsh)是官方高级客户端:除 SQL 外,还支持 JavaScript / Python,并内置 AdminAPI、逻辑备份/恢复、升级检查等工具
  • 本文基于 MySQL Shell 26.7 官方文档,按「日常最常用」整理安装、连接、模式切换、输出格式、util.* 工具与命令行 API 集成
  • 与传统 mysql 客户端的对比见 1.1:多数场景只装 Shell 即可,保留 mysql 主要为了兼容旧脚本
  • 最新版 mysqlsh 可配合任意 MySQL 8.0 GA 及以上 使用;InnoDB Cluster 实操见 MySQL 8.4 InnoDB Cluster 的构建方法,升级检查场景见 MySql--从Mysql5.7升级到Mysql8
阅读全文 »

摘要

阅读全文 »

摘要

  • MySQL 官方高可用方案 InnoDB Cluster 的搭建、故障转移演练与日常运维
  • 本文基于mysql-8.4.11 LTS、mysql-shell-8.4.10、mysql-router-8.4.10
  • 操作系统使用 Amazon Linux 2023(x86_64);其它发行版的用户、服务、软件包和配置文件路径可能不同
  • 组成:Group Replication(数据复制与选主)+ MySQL Shell(AdminAPI)(搭建与管理)+ MySQL Router(把写流量路由到当前 Primary)
  • 同步原理不同于普通主从:多数派确认的是提交与顺序;落到 Secondary 表里仍靠组内分发后的 applier 应用(见第 0 节对比)
  • 不需要自建证书也能建集群:内网实验沿用 MySQL/Router 自动证书和默认 AUTO / PREFERRED,通常仍会加密,但不验证对端身份;生产环境应为成员间、Router 与客户端启用身份校验
  • 单节点/主从/双主的搭法见 MySql8.4单节点、主从、双主的构建方法;为什么不用 MHA 见 MySql-MHA的构建方法
阅读全文 »

摘要

  • MySql单节点、主从、双主的构建过程,及其配置文件的说明
  • 本文基于mysql-8.4.11 LTS,下载地址 https://dev.mysql.com/downloads/mysql/8.4.html
  • 操作系统使用 Amazon Linux 2023(x86_64);其它发行版的用户、服务、软件包和配置文件路径可能不同
  • 8.0 版本的做法见 MySql单节点、主从、双主的构建方法,两篇的命令不通用,8.4 删除了一批主从语句和配置项,下面第 0 节先讲差异
阅读全文 »
0%