如果你使用 Android 上的 Termux,你可能会有这种感觉:
你在 GitHub 上找到了一个有用的命令行工具,但接下来却需要弄清楚如何在 Termux 中安装它。
也许它在官方 Termux 仓库中不可用。
也许它是一个小型开发者工具,对官方仓库来说意义不大。
也许该项目提供了源代码,但没有 Termux 软件包。
或者你只是想要一种更简单的方式来发现和管理社区软件包。
这就是我想要通过 Termux App Store 解决的问题。
「Termux App Store 是一个面向 Termux on Android 的社区驱动 TUI 和 CLI 包管理器。」
它旨在让用户可以更轻松地直接从 Termux 中发现、安装、构建、更新和管理社区软件包。
GitHub: https://github.com/djunekz/termux-app-store
PyPI: https://pypi.org/project/termux-app-store/
Website: https://termux-app-store.pages.dev/
什么是 Termux App Store?
Termux App Store(“termux-app-store”)是一个离线优先、二进制安全、基于源码的 TUI 和 CLI 包管理器,专为 Android 上的 Termux 构建。
它使用 Python 配合 Textual 编写,同时提供交互式终端界面和传统的命令行命令。
目标很简单:
找到软件包
↓
查看详情
↓
安装
↓
管理
↓
更新
无需手动查找仓库、下载文件、构建软件包以及记住不同的安装流程,Termux App Store 提供了一个统一的界面。
例如:
pkg install python
pip install termux-app-store
然后:
termux-app-store
或者使用更简短的命令:
tas
你也可以直接通过 CLI 使用:
termux-app-store search
termux-app-store list
termux-app-store show
termux-app-store install
termux-app-store update
termux-app-store upgrade
termux-app-store uninstall
为什么还要为 Termux 构建另一个包管理器?
Termux 已经拥有强大的软件包生态。
官方 Termux 仓库是该平台的基础,而 TUR(Termux User Repository)等项目扩展了可用软件。
那么为什么还要创建另一个包管理器?
因为还有另一层开发者与用户想要分发的软件。
想想一个小 CLI 项目。
它可能是:
- 对特定 Termux 用户群体有用
- 实验性的
- 由单个开发者维护
- 对于官方仓库来说太小众
- 频繁更新
- 专为 Android/Termux 设计
- 作为个人或社区工具有用
这些项目仍然需要一种方式来触达用户。
这正是社区软件包层有用的地方。
寻找 Termux 软件包的问题
问题不总是:
「“我该如何安装软件包?”」
有时候真正的问题是:
「“我首先去哪里找软件包?”」
开发者可能会搜索:
Termux package
Termux community package
Termux custom package
Termux CLI tools
Termux package repository
Termux Android packages
但有用的项目可能分散在 GitHub 仓库、个人项目、社区仓库和文档中。
Termux App Store 试图将软件包发现纳入包管理体验的一部分。
无需从:
GitHub → README → 依赖 → 构建说明 → 故障排除
开始,工作流可以变为:
Termux App Store
↓
搜索
↓
软件包信息
↓
安装
专为 Termux 设计的包管理器
Termux App Store 并不打算取代官方 Termux 软件包生态。
相反,它提供了一个额外的面向社区的层。
对生态系统的一种简化理解如下:
Termux
│
Official packages
│
┌────────┴────────┐
│ │
Official repo TUR
│ │
└────────┬────────┘
│
Community layer
│
Termux App Store
│
┌──────────┴──────────┐
│ │
Enter fullscreen mode Exit fullscreen mode
Pre-built .deb Source builds
其理念类似于 AUR(Arch User Repository):提供一个社区驱动的层,让用户可以访问核心仓库范围之外的软件。
然而,Termux App Store 是专为 Android 上的 Termux 设计的。
Termux App Store 与官方 Termux 软件包及 TUR 的对比
这些项目服务于不同的目的。
官方 Termux 软件包
官方 Termux 软件包仓库是 Termux 核心生态的一部分。
它专注于属于官方发行版的软件。
TUR
TUR,即 Termux User Repository,在维护精选贡献者工作流的同时为 Termux 提供额外软件包。
Termux App Store
Termux App Store 专注于更加开放、社区驱动的软件包层。
一个软件包可以通过一个包含元数据和构建说明的“build.sh”文件来表示。
这使得单个开发者无需将每个小项目都变成官方发行版软件包,就能分发自己的 Termux 兼容工具。
重要的区别在于:
「Termux App Store 是一个独立的社区项目,与官方 Termux 项目无关。」
二进制安装与源码构建
Termux App Store v0.4.x 的重大变化之一是引入了快速安装引擎。
之前主要关注基于源码的安装。
现在系统可以使用预构建的“.deb”软件包。
一般工作流如下:
termux-app-store install
│
▼
Check local cache
│
┌───────┴───────┐
│ │
HIT MISS
│ │
▼ ▼
Verify SHA256 Find mirror
│
┌───────┼───────┐
│ │ │
GitHub CDN Fallback
│ │ │
└───────┼───────┘
│
▼
Download .deb
│
▼
SHA256 check
│
▼
dpkg
二进制安装引擎使用镜像池和本地缓存。
当前实现支持包括 GitHub Pages、Cloudflare CDN、jsDelivr 以及 raw GitHub 回退在内的镜像。
安装前会使用特定架构的 SHA256 信息验证软件包。
这使得常见安装比本地编译快得多。
为什么保留源码构建?
因为便利不应该消除控制权。
当你想要速度时,预构建的软件包很有用。
当你想要透明度和控制权时,源码构建很有用。
因此 Termux App Store 同时保留了这两种方式。
例如:
termux-app-store install my-package
可以使用快速二进制安装路径。
如果你想强制进行源码构建:
termux-app-store fix-install my-package
这给了用户选择:
Installation
│
┌─────────┴─────────┐
│ │
Binary Source
│ │
Fast install Full control
│ │
Cached .deb build.sh
Enter fullscreen mode Exit fullscreen mode
离线优先的设计
Termux App Store 背后的原则之一是本地优先计算。
该应用无需云服务即可管理你的软件包。
没有账户系统。
没有强制登录。
没有遥测要求。
没有后台服务。
包管理器直接在你的 Termux 环境中运行。
本地二进制缓存还意味着在缓存有效期内无需重复下载相同的“.deb”即可重复使用软件包。
其理念是:
「本地优先。控制胜过便利。透明胜过魔法。」
安全与软件包验证
包管理器之所以强大,是因为它们可以在你的机器上执行软件。
这也意味着软件包分发需要认真对待。
Termux App Store 包含若干旨在使软件包安装更加透明的机制。
对于二进制软件包,安装前会执行 SHA256 验证。
对于基于源码的软件包,构建说明通过可见的“build.sh”文件呈现。
简化的软件包结构如下:
packages/
└── my-tool/
└── build.sh
软件包定义可以包含以下元数据:
TERMUX_PKG_HOMEPAGE=""
TERMUX_PKG_DESCRIPTION=""
TERMUX_PKG_LICENSE=""
TERMUX_PKG_MAINTAINER=""
TERMUX_PKG_VERSION=""
TERMUX_PKG_SRCURL=""
TERMUX_PKG_SHA256=""
这使得软件包的来源更容易检查和审计。
目标不是让用户盲目信任安装程序。
目标是让安装过程可见且可审计。
简单的软件包定义
每个软件包都从一个“build.sh”开始。
例如:
packages/my-tool/build.sh
这种方法对于使用过 Linux 软件包构建系统的开发者来说是熟悉的。
你可以通过以下命令创建软件包模板:
./termux-build create my-tool
或者从 GitHub 仓库初始化:
./termux-build init https://github.com/user/repository
然后验证:
./termux-build lint my-tool
这创建了一个工作流,开发者可以从现有的 GitHub 项目直接生成 Termux 软件包,而无需从头手动构建。
介绍 termux-build
Termux App Store 还包含“termux-build”。
它是一个软件包验证和开发助手。
它不是自动发布系统。
它的作用是帮助开发者和审核者创建并验证 Termux 软件包定义。
例如:
./termux-build create my-tool
创建软件包。
./termux-build lint my-tool
检查软件包。
./termux-build check-pr my-tool
检查软件包是否已准备好提交 pull request。
./termux-build doctor
诊断环境。
其他命令包括:
./termux-build suggest
./termux-build explain
./termux-build template
./termux-build guide
目的是让社区更容易进行软件包创建和审核。
tasctl:管理管理器
Termux App Store 还包含“tasctl”。
它充当 Termux App Store 自身的控制器。
例如:
./tasctl install
./tasctl update
./tasctl uninstall
./tasctl doctor
./tasctl self-update
这将软件包管理与包管理器自身的管理分开。
用户能做什么?
CLI 提供了常见软件包管理工作流的命令。
搜索软件包
termux-app-store search
列出软件包
termux-app-store list
查看软件包
termux-app-store show
安装
termux-app-store install
安装多个软件包
termux-app-store install pkg1 pkg2 pkg3
更新软件包信息
termux-app-store update
升级软件包
termux-app-store upgrade
卸载
termux-app-store uninstall
检查镜像
termux-app-store mirrors
管理缓存
termux-app-store cache info
termux-app-store cache clear
这意味着 Termux App Store 既可以作为交互式 TUI 使用,也可以作为传统的 CLI 工具使用。
TUI 体验
对于喜欢交互式终端界面的用户:
termux-app-store
或者:
tas
可以打开 TUI。
该界面同时支持键盘和触摸屏导航。
用户无需记住命令,即可通过终端 UI 浏览可用软件包、搜索工具、查看软件包信息并执行软件包操作。
这对于熟悉 Termux 但不想记住每个包管理命令的用户尤其有用。
Termux App Store 面向哪些人?
有几类人可以从中受益。
Termux 用户
用户可以发现社区软件包,并在无需手动处理每个项目构建流程的情况下安装它们。
开发者
开发者可以将他们的 CLI 工具作为 Termux 软件包分发。
无需告诉用户:
git clone
cd project
install dependencies
compile
configure
fix errors
而是可以提供软件包定义。
软件包维护者
维护者可以管理多个 Termux 软件包,并使用验证工具保持软件包定义的一致性。
审核者
审核者可以在接受贡献之前检查“build.sh”文件和软件包元数据。
开发者如何分发 Termux 软件包
假设你有一个名为:
my-awesome-cli
的 GitHub 项目。
你希望 Termux 用户能够安装它。
基本工作流是:
git clone https://github.com/djunekz/termux-app-store
cd termux-app-store
创建软件包:
./termux-build create my-awesome-cli
或者从 GitHub 初始化:
./termux-build init https://github.com/yourname/my-awesome-cli
然后验证:
./termux-build lint my-awesome-cli
测试后,通过 pull request 提交软件包。
这创建了一条从:
开发者项目
↓
build.sh
↓
验证
↓
Pull Request
↓
Termux App Store
↓
Termux 用户
的路径。这条分发管道是该项目最重要的理念之一。
88+ 个软件包且持续增长
该项目不仅是一个包管理器。
它也在成为一个软件包生态系统。
在撰写本文时,该项目提供了数十个社区软件包,且软件包目录仍在持续增长。
长期目标不是仅仅拥有大量软件包。
目标是让这些软件包可发现、可安装、可重现且可维护。
当用户甚至在打开 Termux 之前就能搜索软件包目录时,它就会变得更有用。
这就是为什么软件包发现是 Termux App Store 未来的重要方向。
从包管理器到包注册表
该项目背后有一个更大的想法。
包管理器回答:
「“我该如何安装这个?”」
包注册表可以回答:
「“存在什么?”」
这种区别很重要。
想象在 Google 中搜索:
Termux ffmpeg
或者:
Termux CLI tools
或者:
Termux community packages
并找到一个软件包页面,解释:
Package name
Description
Version
Architecture
Dependencies
Source repository
SHA256
Installation command
理想的工作流变为:
Search
↓
Discover
↓
Understand
↓
Install
↓
Manage
这是我希望 Termux App Store 发展的方向之一。
SEO 与软件包发现
软件生态系统存在发现问题。
开发者可能会创建有用的工具,但如果用户找不到它们,软件实际上就不存在。
这就是为什么诸如:
- Termux package manager
- Termux packages
- Termux community packages
- Termux package repository
- Termux custom packages
- Termux Android packages
- Termux ".deb" packages
- Termux source build
- Termux CLI tools
- Termux package installation
等术语对生态系统来说是重要的搜索概念。
目标不是关键词堆砌。
目标是将真实的用户问题与真实的软件包联系起来。
例如:
用户搜索:
"how to install a custom package in Termux"
↓
Enter fullscreen mode Exit fullscreen mode
Termux App Store 文档
↓
Enter fullscreen mode Exit fullscreen mode
软件包格式 + build.sh
↓
Enter fullscreen mode Exit fullscreen mode
安装命令
或者:
用户搜索:
"Termux package repository"
↓
Enter fullscreen mode Exit fullscreen mode
Termux App Store 软件包注册表
↓
Enter fullscreen mode Exit fullscreen mode
浏览软件包
↓
Enter fullscreen mode Exit fullscreen mode
安装
因此,该网站有可能不仅仅是一个项目主页。
它可以成为 Termux 社区的可搜索软件包索引。
为什么“Termux 的 AUR”是一个有用的类比
熟悉 Arch Linux 的开发者可能会立即理解这个概念。
AUR 围绕 Arch 软件包提供了一个社区驱动的生态系统。
Termux App Store 遵循类似的理念:
Official Termux packages
+
Community packages
+
Developer-maintained tools
+
Source build definitions
但实现和软件包格式是围绕 Termux 和 Android 设计的。
所以一个简单的描述是:
「Termux 的 AUR 式社区软件包层。」
不是官方 Termux 的替代品。
不是“pkg”的替代品。
不是隐藏的安装程序。
而是一个独立的社区生态系统,用于可在 Termux 上运行的软件。
默认隐私
现代软件通常假设用户对账户、分析、遥测和云服务感到舒适。
Termux App Store 采取了不同的方法。
该项目围绕以下原则设计:
No account
No mandatory login
No telemetry
No tracking
No background service
No root requirement
Local execution
Transparent package definitions
理念很简单:
「你的终端应该仍然属于你。」
支持多种架构
Android 设备并非都以相同的方式构建。
Termux 用户可以在不同的 CPU 架构上运行,包括:
aarch64
arm
x86_64
i686
因此,软件包分发需要考虑架构差异。
二进制安装引擎可以选择合适的软件包,并为目标架构验证其 SHA256 值。
这使得预构建软件包分发对 Android 设备来说更加实用。
开源与社区驱动
Termux App Store 基于 MIT 许可证发布。
该项目有意面向社区。
贡献可以包括:
- 新软件包
- 错误修复
- 文档
- 翻译
- 软件包审核
- 安全审核
- 构建改进
- UI 改进
- 测试
软件包贡献者不一定需要修改整个包管理器。
他们可以专注于创建一个好的软件包定义。
这降低了开发者仅想让自己的 CLI 工具对 Termux 用户可用的门槛。
理念
该项目可以用一句话概括:
「本地优先。控制胜过便利。透明胜过魔法。」
我相信包管理器应该让软件更容易安装,而不隐藏底层发生的事情。
便利很重要。
但用户仍然应该能够检查:
这个软件包来自哪里?
正在安装什么?
它使用什么源?
哪个构建脚本负责?
二进制文件是否已验证?
我可以自己构建吗?
这些问题在 Android 这样的平台上尤其重要,因为 Termux 为用户提供了一个功能强大的类 Linux 环境。
接下来是什么?
有几个方向可以使生态系统更有用。
更好的软件包发现
可搜索的软件包索引可以帮助用户在安装工具之前发现它们。
单个软件包页面
每个软件包都可以有一个包含以下内容的文档页面:
Description
Version
Architecture
Dependencies
Source
License
Install command
Build information
软件包请求
用户应该能够请求他们希望添加的软件包。
更好的开发者工具
“termux-build”可以继续发展成为更强大的软件包创建和验证工具包。
更好的软件包审核
随着生态系统的发展,验证和安全审核变得越来越重要。
更多社区软件包
随着开发者贡献有用的 Termux 兼容软件,生态系统变得更加有用。
结论
Termux 已从一个简单的终端模拟器发展成为一个强大的 Android 开发环境。
但一个强大的环境也需要健康的软件生态系统。
官方 Termux 仓库提供了基础。
社区仓库扩展了这一基础。
像 Termux App Store 这样的项目探索了另一层:
「一个专门为 Termux 用户和开发者打造的社区驱动包管理器和软件包生态系统。」
目标不是取代官方 Termux 项目。
目标是让社区软件更容易:
discover → inspect → build → install → update → share.
如果你为 Android 或 Termux 构建命令行工具,请考虑打包它们。
如果你使用 Termux 却找不到你需要的工具,请考虑请求或贡献一个软件包。
如果你有兴趣为 Android 构建社区软件包生态系统,该项目欢迎贡献。
尝试 Termux App Store
从 PyPI 安装:
pkg install python
pip install termux-app-store
运行:
termux-app-store
或者:
tas
搜索软件包:
termux-app-store search
安装软件包:
termux-app-store install
链接
GitHub:
https://github.com/djunekz/termux-app-store
PyPI:
https://pypi.org/project/termux-app-store/
Website:
https://termux-app-store.pages.dev/
Documentation:
https://github.com/djunekz/termux-app-store
关键词
Termux App Store, Termux package manager, Termux packages, Termux community packages, Termux package repository, Termux custom packages, Termux Android packages, Termux CLI tools, Termux ".deb" packages, Termux source build, Android terminal, Termux package management, Termux developer tools, community package manager, AUR for Termux.
「Termux App Store — 为所有人而建,由社区打造。」
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.