如果您在 Android 上使用 Termux,您可能有過這樣的經驗:
您在 GitHub 上找到一個有用的命令列工具,卻必須想辦法在 Termux 上安裝它。
也許它在官方 Termux 儲存庫中無法取得。
也許它是一個小型開發者工具,對官方儲存庫來說並不合理。
也許該專案提供了原始碼,但沒有 Termux 套件。
或者您只是想要一種更簡單的方式來發現和管理社群套件。
這就是我想要用 Termux App Store 解決的問題。
「Termux App Store 是一個社群驅動的 TUI 與 CLI 套件管理員,專為 Termux 在 Android 上設計。」
它的設計目的是讓您更容易直接從 Termux 發現、安裝、建置、更新和管理社群套件。
GitHub:https://github.com/djunekz/termux-app-store
PyPI:https://pypi.org/project/termux-app-store/
網站:https://termux-app-store.pages.dev/
什麼是 Termux App Store?
Termux App Store(「termux-app-store」)是一個離線優先、二進位安全、基於原始碼的 TUI 與 CLI 套件管理員,專為 Termux 在 Android 上建置。
它使用 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 是專為 Termux 在 Android 上設計。
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 以及原始 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-build
Termux App Store 也包含「termux-build」。
它是一個套件驗證和開發輔助工具。
它不是自動發布系統。
它的職責是幫助開發者和審查者建立和驗證 Termux 套件定義。
例如:
./termux-build create my-tool
建立套件。
./termux-build lint my-tool
檢查套件。
./termux-build check-pr my-tool
檢查套件是否準備好提交拉取請求。
./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
測試後,透過拉取請求提交套件。
這建立了從以下路徑:
開發者專案
↓
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/
網站:
https://termux-app-store.pages.dev/
文件:
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.