CLI数据分析【免费下载链接】millerMiller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON项目地址https://gitcode.com/gh_mirrors/mi/miller点击查看免费下载导读Miller命令行工具为mlr是一款面向 CSV、TSV、JSON 等名称索引数据的处理工具官方安装方式包括包管理器、预编译二进制与源码编译。而在 RHEL/CentOS/Fedora 等基于 RPM 的发行版上用户常希望以原生 RPM 形式分发与安装 Miller。本文基于仓库根目录的 README-RPM.md 官方文档完整讲解如何从源码构建 Miller 的源 RPMSRPM与二进制 RPM包括一次性环境准备、spec 文件解读、rpmlint校验、rpmbuild -bs/rpmbuild -ba的构建流程以及安装后的版本与 man 手册验证。读完本文你将具备在 RPM 系 Linux 上独立完成 Miller 打包、校验、安装的全套实操能力。一、Miller 的 RPM 打包总览Miller 仓库在根目录提供了两个与 RPM 打包直接相关的关键文件miller.specRPM 构建描述文件定义了软件包的元数据、构建依赖、构建/检查/安装阶段以及要打入包内的文件清单README-RPM.md打包操作手册按读者对 RPM 的熟悉程度分成经验者与无经验者两套指引。整套流程的核心思路是用发布 tarballmiller-版本.tar.gz作为 RPM 的 Source 输入用miller.spec描述如何把它构建成可安装的 RPM。官方发布流程中源 RPMSRPM是每次发布必须产出的工件之一详见 docs/src/how-to-release.md这进一步说明 SRPM 构建是被官方支持的标准化流程。1.1 miller.spec 核心结构解读当前仓库中的 miller.spec 以6.21.0为示例版本关键字段如下Summary: Name-indexed data processing tool Name: miller Version: 6.21.0 Release: 1%{?dist} License: BSD Source: https://github.com/johnkerl/miller/releases/download/%{version}/miller-%{version}.tar.gz URL: https://miller.readthedocs.io # gcc for cgo transitive dependency BuildRequires: golang BuildRequires: gcc BuildRequires: systemd-rpm-macros各字段含义与注意事项Name: miller软件包名。虽然二进制名为mlr但 RPM 包名统一使用millerrpm -qpi输出中的 Name 字段显示为mlr属于旧版本 spec 的历史差异当前版本统一为millerVersion: 6.21.0版本号需与发布 tarball 的版本号一致构建前按需修改Release: 1%{?dist}发布号%{?dist}会自动带上发行版标签如.el6、.fc40这也是文档示例中出现miller-6.2.0-1.el6这类文件名的原因Source指向发布 tarball 的 URL用%{version}宏自动拼接版本号因此只要Version字段正确Source 无需手工修改BuildRequires: golang、gccMiller 是 Go 项目且依赖 cgo注释中明确说明 gcc 是 cgo 的传递依赖因此构建机必须安装 Go 工具链与 C 编译器%description包描述概括了 Miller 的核心能力对 CSV/JSON 等名称索引数据提供类似 sed/awk/cut/join/sort 的功能支持格式互转、保留表头、流式处理低内存占用、适配管道与tail -f。构建阶段与根目录 Makefile 中的目标一一对应%prep %autosetup %build make build %check make check %install make install%prep中的%autosetup自动解包 Source tarball 并进入源码目录%build调用make build对应 Makefile 中的go build github.com/johnkerl/miller/v6/cmd/mlr产物为./mlr可执行文件%check调用make check对应 Makefile 中的unit-test regression-test即在打包过程中运行 Go 单元测试与回归测试确保构建出的版本通过测试%install调用make installMakefile 中该目标使用DESTDIR支持打包场景mkdir -p $(DESTDIR)/$(INSTALLDIR)后拷贝mlr并make -C man install安装 man 手册。最终打入 RPM 的文件清单%files %license LICENSE.txt %doc README.md %{_bindir}/mlr %{_mandir}/man1/mlr.1*即许可证文件、README 文档、二进制mlr以及 man 手册页由 man/Makefile 负责生成并安装到share/man/man1下的mlr.1。这也是二进制 RPM 中最终能看到/usr/bin/mlr与/usr/share/man/man1/mlr.1.gz两个文件的原因。二、一次性环境准备2.1 安装 rpmbuild 工具链RPM 系发行版通常不预装rpmbuild。文档给出的安装方式RHEL/CentOS 系使用 yumsudo yum install rpmbuild部分发行版的软件包名可能为rpm-build在tools/release.sh的报错信息中也提示install rpm-build若yum install rpmbuild找不到软件包可尝试sudo yum install rpm-build。现代 Fedora 上rpmbuild一般随rpm-build或rpm-devel提供。2.2 创建 rpmbuild 目录结构rpmbuild遵循标准目录布局约定需要手工创建以用户主目录为例cd mkdir ~/rpmbuild mkdir ~/rpmbuild/SPECS mkdir ~/rpmbuild/SOURCES~/rpmbuild/SPECS存放.spec文件~/rpmbuild/SOURCES存放 Source 归档tarball构建产物会自动落到~/rpmbuild/SRPMS源 RPM与~/rpmbuild/RPMS/arch二进制 RPM无需预先创建。2.3 准备 spec 文件与源码 tarballcp /your/path/to/miller/clone/miller.spec ~/rpmbuild/SPECS cp /your/path/to/miller-6.2.0.tar.gz ~/rpmbuild/SOURCES cd ~/rpmbuild/SPECS即把仓库根目录的 miller.spec 拷入SPECS把对应版本的发布 tarball 拷入SOURCES。tarball 的命名必须严格匹配 spec 中Source宏展开的结果miller-版本号.tar.gz。关于 tarball 的来源发布 tarball 由仓库根目录的 create-release-tarball 脚本生成通过make release_tarball触发它会先用./mlr --bare-version读取版本号然后使用支持--transform的 tar 打包源码并排除data、docs、experiments、perf、python、vim等非安装必需目录以减小体积。换句话说RPM 构建所用的 tarball 与官方发布流程产出的 tarball 是同一份你也可以直接使用官方发布页面提供的 tarball。三、修改版本号打包前的关键一步RPM 构建前请确认miller.spec的Version字段与你手中的 tarball 版本一致。文档以6.2.0为例Version: 6.2.0发布打包示例中 Source 对应的 tarball 为miller-6.2.0.tar.gz。由于 spec 使用%{version}宏自动拼接 Source URL只需把Version改为目标版本即可无需改动Source行。需要同步修改版本号的地方还有两处来自官方发布流程见 docs/src/how-to-release.mdpkg/version/version.go 中的STRING变量当前仓库为6.21.0-dev它决定mlr --version的输出miller.spec 的Version字段及其%changelog区块需要新增一条格式为* 星期 月 日 年 作者 - 版本-1的变更记录。如果版本号不匹配构建出的 RPM 可能无法正确关联到对应源码安装后mlr --version的输出版本也可能与预期不符。四、spec 文件校验rpmlint如果修改过 miller.spec官方建议在正式构建前用rpmlint做静态检查rpmlint miller.specrpmlint会检查 spec 的语法、宏使用、文件清单、许可字段等常见问题输出警告或错误提示。若未安装sudo yum install rpmlint注意rpmlint 是可选步骤。官方发布脚本tools/release.sh中也只在其已安装时才运行 rpmlintcommand -v rpmlint探测后决定是否执行而rpmbuild则是必需工具。五、仅构建源 RPMSRPM5.1 执行构建rpmbuild -bs miller.spec Wrote: /your/home/dir/rpmbuild/SRPMS/miller-6.2.0-1.el6.src.rpm-bs表示 build source RPM产物是.src.rpm文件以当前仓库版本为例会是miller-6.21.0-1.dist.src.rpm。源 RPM 不包含编译产物而是打包了构建所需的全部原料——源码 tarball 与 spec 文件——任何人都可以用它复现二进制 RPM 的构建。5.2 查看 SRPM 内容清单rpm -qpl ../SRPMS/miller-6.2.0-1.el6.src.rpm-qplquery package list输出miller-6.2.0.tar.gz miller.spec可以看到 SRPM 内恰好包含两个文件发布 tarball 与 spec 文件这正是%autosetup阶段解包构建所需的全部输入。5.3 查看 SRPM 元数据rpm -qpi ../SRPMS/miller-6.2.0-1.el6.src.rpm-qpiquery package info输出类似Name : mlr Relocations: (not relocatable) Version : 6.2.0 Vendor: (none) ...rpm -qpi展示的是 spec 头部声明的 Name、Version、Release、Summary、BuildRequires 等元数据。需要说明文档示例取自 Miller 较早版本当时Name字段为mlr当前仓库的 miller.spec 已统一使用Name: miller因此新构建的 SRPM 中 Name 字段应为miller。六、构建源 RPM 与二进制 RPM6.1 执行完整构建rpmbuild -ba miller.spec-babuild all会依次执行%prep解包、%buildmake build编译出./mlr、%checkmake check运行单元与回归测试、%install安装到暂存目录以及打包阶段最终同时产出源 RPM~/rpmbuild/SRPMS/和二进制 RPM~/rpmbuild/RPMS/arch/。由于%check阶段会跑完整测试套件首次构建耗时较长属正常现象。若某发行版架构上测试依赖缺失导致%check失败可在明确知悉后果的情况下暂时跳过测试但这不在官方文档推荐路径内。6.2 查看二进制 RPM 内容清单rpm -qpl ../RPMS/x86_64/miller-6.2.0-1.el6.x86_64.rpm输出/usr/bin/mlr /usr/share/man/man1/mlr.1.gz与%files清单完全吻合可执行文件安装到/usr/bin/mlrspec 中%{_bindir}/mlrman 手册安装到/usr/share/man/man1/mlr.1.gzspec 中%{_mandir}/man1/mlr.1*。这里的 man 手册由 man/Makefile 的install目标负责拷贝。七、安装与验证7.1 安装二进制 RPMsudo rpm -ivh ../RPMS/x86_64/miller-6.2.0-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:mlr ########################################### [100%]-iinstall、-vverbose、-h显示进度条。安装完成后mlr即可作为系统命令使用。7.2 验证版本与 man 手册/usr/bin/mlr --version Miller 6.2.0确认版本号与 spec 中Version一致。文档还给出了一种更严格的验证方式man -M /usr/share/man mlr用-M指定 man 手册搜索路径查看mlr手册页并核对 DESCRIPTION 章节中的版本信息是否与预期一致。这样既验证了二进制版本也验证了 man 手册页是否随 RPM 正确安装、内容是否与本次构建的版本匹配。八、与官方发布流程的衔接打包 RPM 不仅是个人分发手段也是 Miller 官方发布流程的一环仓库中有多处佐证docs/src/how-to-release.md 明确写道SRPM 是每次发布必需的发布工件the SRPM is a required release artifact并指向 README-RPM.md 作为准备源 RPM的操作手册tools/release.sh 的pre-release子命令包含phase_3_srpm它会自动检查rpmbuild是否在 PATH 中否则报错退出、复用$HOME/rpmbuild/SPECS与$HOME/rpmbuild/SOURCES目录布局、可选运行rpmlint、执行rpmbuild -bs生成 SRPM并做内容感知的幂等复用按 tarball sha256 判断是否可复用已有 SRPM发布 tarball 由make release_tarball即 create-release-tarball 脚本生成其产物命名与 spec 的Source宏完全对应。因此如果你在维护 Miller 的 RPM 发行完全可以遵循本文的手工流程而如果你只是想在 RHEL/CentOS/Fedora 上快速安装 Miller官方文档 docs/src/installing-miller.md 也提示可尝试yum install miller——但该页同时提醒yum/apt 仓库中的版本可能滞后于官方发布如需最新版本按本文流程自行打包是可靠的选择。九、常见问题与注意事项rpmbuild命令找不到确认已安装rpm-build部分发行版包名为rpmbuild并检查是否在 PATH 中官方发布脚本对此会直接报错并提示install rpm-build。Version与 tarball 不一致rpmbuild会因找不到Source对应的 tarball 而失败。请确保~/rpmbuild/SOURCES/miller-版本.tar.gz与 spec 的Version字段完全一致。构建依赖缺失Miller 是 Go 项目且依赖 cgo构建机必须同时具备golang与gcc否则%build阶段的make build会失败。%check较耗时spec 中默认执行完整测试make check首次构建请耐心等待这也是确保 RPM 质量的一道保障。RPMS 目录按架构分目录二进制 RPM 位于~/rpmbuild/RPMS/arch/如x86_64安装时请使用与机器架构匹配的 RPM 文件。版本与 man 手册一致性安装后建议同时执行mlr --version与man -M /usr/share/man mlr核对二进制版本与手册 DESCRIPTION 章节版本一致防止打包时版本串号。通过以上步骤你可以在任何 RPM 系 Linux 发行版上从 Miller 源码构建出标准、可分发、可复现的源 RPM 与二进制 RPM并纳入自己的软件仓库或镜像体系。赞分享CLI数据分析【免费下载链接】millerMiller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON项目地址https://gitcode.com/gh_mirrors/mi/miller点击查看免费下载相关推荐GeoLibre 的 Fedora COPR 打包实现从二进制 RPM 重打包 spec 到 CI 自动发布GeoLibre 的 Fedora COPR 打包实现从二进制 RPM 重打包 spec 到 CI 自动发布 GeoLibre 通过 Fedora 社区的 CGIS数据可视化前端桌面应用后端Unity Test完整指南如何在10分钟内为C语言项目搭建单元测试框架Unity Test完整指南如何在10分钟内为C语言项目搭建单元测试框架 你是否在为C语言项目寻找一个轻量级、高效的单元测试解决方案Unity Test正是数据库KV存储缓存数据存储iOSAppHook进阶如何编写CaptainHook插件并注入到目标应用iOSAppHook进阶如何编写CaptainHook插件并注入到目标应用 iOSAppHook是一款专注于非越狱环境下iOS应用逆向研究的工具集从dyliUI组件前端设计系统上一篇解锁音乐自由QMCDecode全场景音频格式转换指南下一篇如何用AI图像融合工具实现一键产品溶图3分钟打造专业级视觉效果创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
YOLO 完全指南:YOLO 目标检测实战系列 《YOLO 目标检测实战系列 内容介绍》 本系列由 9 篇文档组成,按“认知 → 训练 → 调优 → 评测 → 工程落地 → 数据标注”的逻辑层层递进,兼顾理论直觉与工程实操: 具体可查看 YOLO 完全指南
① 认知与原理
《YOLO介绍》 从“为什么工业… · 2026/9/24 15:32:19
Yii 2 主题化(Theming)实战指南:用 Theme 组件系统替换视图而不改动渲染代码 Yii 2 主题化(Theming)实战指南:用 Theme 组件系统替换视图而不改动渲染代码 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2
主题化(T… · 2026/9/24 15:32:19
应用案例 | 船舶海洋:基于MBSE 的船舶系统电磁兼容性设计专用软件开发 一、项目背景随着船舶系统复杂度的不断提升,舰载电子设备的数量持续增加,系统间的电磁耦合关系也日益变得复杂,传统的基于文档的电磁兼容性设计方式已暴露出流程衔接性差、协同作业效率低、知识复用度不足等问题。以基于模型的系统工程&#… · 2026/9/24 16:03:02
软件测试的分类 软件测试的分类按手段划分:手工测试、自动化测试按是否运行代码划分:静态测试、动态测试按技术划分:黑盒测试、白盒测试、灰盒测试按阶段划分:单元测试、集成测试、系统测试、验收测试性能测试冒烟测试:对软件的基本功… · 2026/9/24 16:03:02
高精度三维线圈动态屏蔽系统:弱磁实验环境优化核心方案 在弱磁精密检测、磁性材料研发、传感器标定、生物磁学研究等高端科研领域,环境磁场干扰是影响实验数据精度的核心难题。地磁场固有偏移、地铁、电梯、电气设备产生的动态交变磁干扰,会直接导致微弱磁场实验数据漂移、重复性差、误差超标。传统被动磁屏蔽… · 2026/9/24 16:03:02
GEO技术原理深度解析:AI引用概率=权威度×结构化×语义匹配×多源一致×时效性 总有人把 GEO 说成玄学。其实它有清清楚楚的技术原理——业内把核心逻辑总结成一个公式:AI 引用概率 权威度 结构化程度 语义匹配 多源一致性 时效性。五个变量,缺一不可。下面逐个拆开说。
变量一:权威度——占了快一半
AI 打分时&… · 2026/9/24 16:03:02
Koin 在 Kotlin Multiplatform(KMP)中的完整配置指南:依赖、模块划分与多平台启动 后端 【免费下载链接】koin Koin - a pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform 项目地址: https://gitcode.com/gh_mirrors/ko/koin 点击查看 免费下载 Koin 为 Kotlin Multiplatform(KMP… · 2026/9/24 16:02:55
douyin-downloader 抖音批量下载教程:三步从零跑通,去水印下载与自动归档 douyin-downloader 抖音批量下载教程:三步从零跑通,去水印下载与自动归档 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplicatio… · 2026/9/24 16:02:55
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44