termux-app - Termux 是一个安卓手机的 Linux 模拟器,可以在手机上模拟 Linux 环境。它提供一个命令行界面,让用户与系统互动。

Created at: 2015-10-23 17:42:46
Language: Java
License: NOASSERTION

特穆斯应用

构建状态 测试状态 加入聊天 https://gitter.im/termux/termux 加入 Termux 不和谐服务器 Termux 库在 Jitpack 上发布

Termux是一个Android终端应用程序和Linux环境。

请注意,此存储库适用于应用程序本身(用户界面和终端仿真)。有关可在应用程序内安装的软件包,请参阅 termux/termux-packages

有关 Termux 软件包管理的快速操作方法,请访问软件包管理。它还包含有关如何修复存储库正在维护或运行时或命令时关闭错误的信息。

apt
pkg


注意:Termux 在 Android 12+ 上可能不稳定。Android 操作系统将杀死任何大于 32 的(幻像)进程(限制适用于所有应用程序的总和),并且还会杀死任何使用 CPU 过多的进程。你可能会在终端中收到消息,而无需自己实际退出 shell 进程。查看相关问题 #2366问题跟踪器、幻像缓存和空进程文档以及此 TLDR 评论,了解如何禁用幻影和过多 CPU 使用进程的修剪。稍后将添加适当的文档页面。Android 12L 或 13 中应该提供禁用杀戮的选项,因此如果你使用的是 Android 11,特别是如果你没有扎根,则需要自行承担升级风险。

[Process completed (signal 9) - press Enter]


@termux正在寻找 Termux 应用程序维护者来实现新功能、修复错误和审查拉取请求,因为当前的拉取请求 (@fornwall) 处于非活动状态。

问题 https://github.com/termux/termux-app/issues/1072 需要特别注意。


内容

Termux 应用程序和插件

核心 Termux 应用程序附带以下可选插件应用程序。

安装

最新版本是 。

v0.118.0

注意:强烈建议你尽快更新到 v0.118.0 或更高版本以进行各种错误修复,包括此处报告的关键全球可读漏洞。还再次提醒从Google Playstore安装termux应用程序的用户,Playstore版本已被弃用,不再受支持。建议你转向 F-Droid 或 GitHub 版本。

Termux可以通过下面列出的各种来源获得,仅适用于Android。对 Android 的支持已放弃,在 2020-01-01 上,旧版本可在 archive.org 上使用。

>= 7
5
6
v0.83

不同来源的APK文件使用不同的签名密钥进行签名。该应用程序及其所有插件都使用相同的共享用户ID,因此设备上安装的所有APK都必须使用相同的签名密钥进行签名才能协同工作,因此它们必须都从同一来源安装。不要尝试将它们混合在一起,即不要尝试从其他来源安装应用程序或插件,例如.Android 程序包管理器通常也不允许安装具有不同签名的 APK,并且你会在安装时收到错误,例如、、、、等。可以使用根或自定义 rom 绕过此限制。

Termux
com.termux
F-Droid
GitHub
App not installed
Failed to install due to an unknown error
INSTALL_FAILED_UPDATE_INCOMPATIBLE
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
signatures do not match previously installed version

如果你希望从其他来源安装,则必须先从设备中卸载任何和所有现有的 Termux 或其插件应用程序 APK,然后从同一新来源安装所有新 APK。有关详细信息,请查看“卸载”部分。你可能还需要考虑在卸载之前备份 Termux,以便在从 Termux 其他源重新安装后可以恢复它。

在以下段落中,“bootstrap”是指随自身一起提供的用于启动工作 shell 环境的最小软件包。它的拉链在这里构建和发布。

termux-app

F-机器人

可以从这里获得Termux应用程序。

F-Droid

你无需下载应用程序(通过链接)即可安装 Termux。你可以通过单击每个版本部分底部的链接直接从站点下载 Termux APK。

F-Droid
Download F-Droid
Download APK

在 上发布更新后,通常需要几天(甚至一周或更长时间)才能提供更新。一旦检测到新版本,就会生成和发布这些版本。Termux 维护人员无法控制 上 Termux 应用程序的构建和发布。此外,Termux 维护者也无法访问版本的 APK 签名密钥,因此我们无法自己发布与版本兼容的 APK。

F-Droid
GitHub
F-Droid
F-Droid
GitHub
F-Droid
F-Droid
GitHub
F-Droid

该应用程序通常可能不会通知你更新,你必须在应用程序的选项卡中手动执行下拉滑动操作才能检查更新。确保为应用程序禁用电池优化,请查看 https://dontkillmyapp.com/ 以获取有关如何执行此操作的详细信息。

F-Droid
Updates

仅发布通用APK,该APK适用于所有支持的架构。APK 和引导程序安装大小将为 。 不支持特定于架构的 APK。

~180MB
F-Droid

GitHub

Termux 应用程序可以从 GitHub 版本发布或 GitHub Build Action 工作流获得。

GitHub
>= 0.118.0

的 APK 将列在版本的下拉菜单下。这些将在新版本发布时自动附加。

GitHub Releases
Assets

操作工作流的 APK 将列在工作流运行部分下。这些是针对每次对存储库进行的提交/推送创建的,可供不想等待发布并希望立即试用最新功能或想要测试其拉取请求的用户使用。请注意,对于操作工作流,你需要登录到 GitHub 帐户才能启用/单击链接。如果你使用的是 GitHub 应用程序,请确保在 Chrome 或 Firefox 等浏览器中打开工作流链接,该浏览器已登录你的 GitHub 帐户,因为应用程序内浏览器可能未登录。

GitHub Build
Artifacts
Artifacts

这两个来源的 APK 都是可调试的,并且彼此兼容,但它们与其他来源不兼容。

通用和特定于架构的 APK 均已发布。如果使用通用和特定于体系结构,则 APK 和引导程序安装大小将为。详情请点击此处

~180MB
~120MB

安全警告:GitHub 上的 APK 文件使用已与社区共享的测试密钥进行签名。这不是官方的开发人员密钥,每个人都可以使用它来生成用于自己测试的版本。使用除 https://github.com/termux/termux-app 之外的其他地方获得的 Termux GitHub 构建时要非常小心。每个人都可以使用它来伪造可在GitHub版本上安装的恶意Termux更新。安装通过 Telegram 或其他社交媒体分发的 Termux 构建时要三思而后行。如果你的设备被恶意软件捕获,我们将无法为你提供帮助。

测试密钥不得用于模拟@termux,也不能用于此目的。我们不信任此密钥,并且很容易检测到它在用户生成的内容中的使用。

密钥库信息:

Alias name: alias
Creation date: Oct 4, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=APK Signer, OU=Earth, O=Earth
Issuer: CN=APK Signer, OU=Earth, O=Earth
Serial number: 29be297b
Valid from: Wed Sep 04 02:03:24 EEST 2019 until: Tue Oct 26 02:03:24 EEST 2049
Certificate fingerprints:
         SHA1: 51:79:55:EA:BF:69:FC:05:7C:41:C7:D3:79:DB:BC:EF:20:AD:85:F2
         SHA256: B6:DA:01:48:0E:EF:D5:FB:F2:CD:37:71:B8:D1:02:1E:C7:91:30:4B:DD:6C:4B:F4:1D:3F:AA:BA:D4:8E:E5:E1
Signature algorithm name: SHA1withRSA (disabled)
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

谷歌Play商店(已弃用)

由于android 10问题,Termux及其插件不再在Google Play商店中更新,并且已被弃用。为Android发布的最后一个版本是。强烈建议不要再从 Play 商店安装 Termux 应用程序。

>= 7
v0.101

Termux 开发者无权访问发布 Termux 的 Play 商店管理中心帐号,因此无法移除该应用。我们鼓励你尽快迁移到或构建,并建议通过社交媒体为其他用户这样做。

F-Droid
GitHub

如果你在 Play 商店购买插件,则无需再次购买插件。所有插件都是免费的 和 .

F-Droid
GitHub

你可以在更改安装源下和之前备份所有数据,然后在卸载之前按照备份 Termux 中的说明进行还原。

$HOME/
$PREFIX/

目前没有解决Android问题的工作,并且不会很快在Google Play商店恢复工作更新。目前,我们将继续以 SDK 为目标。因此,留在Play商店内部版本并等待更新恢复没有多大意义。如果由于某种原因你现在不想移动到或源,那么至少检查包管理更改你的镜像,否则,你将在运行时收到存储库正在维护或关闭错误或命令。之后,强烈建议运行命令将所有包更新到最新的可用版本,或者至少使用命令更新包。

10
28
F-Droid
GitHub
apt
pkg
pkg upgrade
termux-tools
pkg install termux-tools

请注意,通过将旧软件包升级到最新版本,例如可能会破坏你的设置/脚本,因为它们可能不再兼容。此外,你将无法降级软件包版本,因为 termux 存储库仅保留最新版本,并且如果需要,你必须根据构建软件包手动重建软件包的旧版本。

python

如果你计划将来也继续使用Play商店资源,那么你可能希望在Play商店中禁用Termux应用程序的自动更新,因为如果以及何时发布用于禁用Termux应用程序的更新,那么你将无法降级,并且将被迫移动,因为应用程序不再工作。只能提供一种备份数据的方法。版本 >= 0.135 还将在终端顶部显示一个横幅,上面写着,你可以通过运行并重新启动应用程序来删除它。

termux-app
termux-tools
You are likely using a very old version of Termux, probably installed from the Google Play Store.
rm -f /data/data/com.termux/files/usr/etc/motd-playstore

为什么要禁用?

  • Play商店应用存在多个严重漏洞,如 https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html 报告的那样,由于无法使用修复程序进行更新,因此任何使用旧版本的用户都容易受到攻击。

  • 它们应该被禁用,因为已弃用的东西会在一段时间后被删除并且不受支持,这是标准做法。自从宣布弃用以来已经有好几个月了,此后更新还没有在 Play 商店发布。

    29 September 2020

  • 新版本具有许多新功能和修复程序,你大多可以在你可能错过的GitHub版本的更新日志中查看。提交消息中通常会提供额外的详细信息。

  • 旧版本的用户经常在几个月前修复的多个存储库和支持论坛中报告问题,然后我们必须处理这些问题。@termux的维护者在空闲时间工作,主要是免费,从事开发工作并提供支持,并且不得不重新处理旧问题会占用当前工作中已经有限的时间,并且不可能继续做。Play商店页面充斥着“损坏的应用程序”的差评,尽管页面上明确提到应用程序未更新,但用户不阅读并且仍然安装和报告问题。

    termux-app

  • 当安装时由于存储库问题而中断并且有错误时,要求人们为插件付费是不道德的。

    termux-app

  • 旧版本没有适当的日志记录/调试和崩溃报告支持。报告没有日志或详细信息的错误对解决它们没有帮助。

  • 对于我们来说,解决与包相关的问题并通过应用更新提供自定义功能也更容易,如果用户继续使用旧版本,则无法做到这一点。例如,导致新 Play 商店用户包安装/更新失败的 bintray 关闭对 F-Droid 用户来说不是问题,因为它附带了更新的引导程序和存储库信息,因此没有报告来自新 F-Droid 用户的问题。

卸载

如果用户不希望再在其设备中安装 Termux 或切换到其他安装源,则可能需要卸载。你可能还需要考虑在卸载之前备份 Termux

要完全卸载 Termux,你必须卸载 Termux 应用程序和插件中列出的任何和所有现有 Termux 或其插件应用程序 APK

转到 ->,然后查找这些应用。你还可以使用搜索功能(如果你的设备上可用),并在应用程序列表中进行搜索。

Android Settings
Applications
termux

即使你认为自己没有安装任何插件,也强烈建议你浏览Android设置中的应用程序列表并仔细检查。

重要链接

社区

所有社区链接均可在此处获得。

主要有以下几点。

维基

杂项

终端

终端资源

终端仿真器

调试

你可以通过在应用程序设置 -> -> -> (需要应用程序版本)中进行适当的设置来帮助调试应用程序及其插件的问题。默认值和日志级别当前记录其他信息。最好在完成调试后将日志级别恢复到调试,因为在正常操作期间可能会传递私有数据,此外,额外的日志记录会增加执行时间。

Termux
logcat
Log Level
Termux
<APP_NAME>
Debugging
Log Level
Termux
>= 0.118.0
Log Level
Normal
Verbose
Normal
logcat

插件应用程序本身不执行命令,而是将执行意图发送到应用程序,该应用程序有自己的日志级别,可以在应用程序设置 -> -> -> 中设置。因此,你必须为两者设置日志级别以及相应的插件应用程序设置才能获取所有信息。

Termux
Termux
Termux
Debugging
Log Level
Termux

设置日志级别后,你可以在应用程序终端中运行命令以实时查看日志(停止)或使用转储日志。你还可以通过 从 PC 查看日志。有关更多信息,请在此处查看官方安卓指南。

logcat
Termux
Ctrl+c
logcat -d > logcat.txt
ADB
logcat

此外,用户可以使用终端的长保持选项菜单 -> 选项生成 termux 文件信息并自动转储,并在显示的提示中选择以添加调试信息。这有助于报告和调试其他问题。如果生成的报告太大,则可以使用上下文菜单中的选项(右上角的3个点),并改为查看/共享文件。

stat
logcat
More
Report Issue
YES
Save To File
ReportActivity

报告问题时,用户必须发布完整的报告(可选,没有敏感信息)。使用错误报告的(部分)屏幕截图而不是文本打开的问题可能会被自动关闭/删除。

日志级别
  • Off
    - 不记录任何内容。
  • Normal
    - 开始记录错误,警告和信息消息和堆栈跟踪。
  • Debug
    - 开始记录调试消息。
  • Verbose
    - 开始记录详细消息。

对于维护者和贡献者

术语共享库是在 v0.109 中添加的。它定义了 Termux 应用程序及其插件的共享常量和实用程序。它的创建是为了允许删除 Termux 应用程序中的所有硬编码路径。一些termux插件也在使用它,其余的将来也会使用。如果你贡献的代码使用可能共享的常量或实用程序,请在库中定义它(如果当前不存在),并从那里引用它。同时更新相关的更改日志。使用硬编码值的拉取请求将/不应被接受。Termux 应用程序和插件特定类必须添加到包下,并且必须在包和外部的常规类下添加。在贡献代码时,如有必要,还必须检查和更新术语共享许可证。必须尊重任何外部库或代码的许可证。

termux-shared
com.termux.shared.termux

主要的 Termux 常量由 TermuxConstants 类定义。它还包含有关如何分叉 Termux 或使用你自己的软件包名称构建它的信息。更改软件包名称将需要使用新的 、 查看构建软件包以获取更多信息来构建引导 zip 软件包和其他软件包。

$PREFIX

查看 Termux 库了解如何在插件应用程序中导入 termux 库,以及如何更新插件的 termux 库

提交消息必须使用常规提交规范,以便 chagelogs 可以由创建-常规-更改日志脚本自动生成,请查看其存储库以获取有关规范的更多详细信息。将以下内容用作、、等。你也可以选择添加作用域,例如 .后面的空间是必要的。

types
Added: Add foo
Added|Fixed: Add foo and fix bar
Changed!: Change baz as a breaking change
Fixed(terminal): Some bug
:

  • 为新功能添加了功能。
  • 已针对现有功能的更改进行了更改。
  • 对于即将删除的功能,已弃用
  • 已删除,暂时删除的功能。
  • 修复了任何错误。
  • 漏洞时的安全性
  • 用于更新文档的文档

版本的更改日志是根据“保留更改日志”规范生成的。

Termux 及其插件应用程序的 in 文件必须遵循语义版本 2.0.0 规范的格式。在 GitHub 上查找文件和为新版本创建标记时,请确保也包含补丁编号,例如,而不仅仅是 .文件和工作流也会验证版本,如果不遵循规范,构建/附件将失败。

versionName
build.gradle
major.minor.patch(-prerelease)(+buildmetadata)
versionName
build.gradle
v0.1.0
v0.1
build.gradle
attach_debug_apks_to_release
versionName

分 叉

  • 查看 TermuxConstants javadocs 以获取有关在应用程序中进行哪些更改以更改包名称的说明。
  • 你还需要为新软件包名称重新编译引导 zip。检查构建引导程序,这里和这里
  • 目前,并非所有插件都使用库中的插件,并且具有硬编码值,需要手动修补。
    TermuxConstants
    termux-shared
    com.termux
  • 如果分叉 termux 插件,请查看分叉和本地开发以获取有关如何将 termux 库用于插件的信息。