- Android에서 리눅스 환경과 터미널 기능을 제공하는 오픈소스 앱으로, 다양한 패키지를 설치해 확장 가능
-
Termux:API, Boot, Float, Styling, Tasker, Widget 등 여러 플러그인 앱을 통해 기능을 보완
- 설치는 F-Droid, GitHub, Google Play(실험적) 등에서 가능하며, 각 소스의 서명 키가 달라 혼용 불가
- Android 12 이상에서는 프로세스 제한으로 인한 불안정성이 발생할 수 있으며, 관련 이슈와 해결 링크 제공
- 개발자와 유지보수자를 위한 공유 라이브러리(termux-shared) , 커밋 메시지 규칙, 포크 지침 등이 명확히 문서화되어 있음
Termux 개요
-
Termux는 Android에서 리눅스 환경을 제공하는 터미널 에뮬레이터 앱
- Android 12 이상에서는 프로세스 32개 제한 및 CPU 과다 사용 시 프로세스 종료 문제가 발생 가능
- 관련 이슈와 해결 방법은 GitHub 이슈 #2366 및 Android 문서 링크로 안내
Termux 앱과 플러그인
- 기본 앱 외에 다음과 같은 플러그인 앱을 지원
- Termux:API, Termux:Boot, Termux:Float, Termux:Styling, Termux:Tasker, Termux:Widget
- 모든 플러그인은 동일한 sharedUserId(com.termux) 를 사용하므로, 동일한 서명 키로 서명된 APK만 함께 설치 가능
설치 방법
- 최신 버전은 v0.118.3, Android 7 이상에서 완전 지원
- Android 5·6 지원은 2020년 종료되었으나, 2022년 GitHub 소스에서 앱만 재지원
-
서명 키가 다른 소스(F-Droid, GitHub 등)를 혼용 설치하면 오류 발생
- 다른 소스에서 설치하려면 기존 Termux 및 플러그인 APK를 모두 제거 후 재설치 필요
F-Droid
- F-Droid에서 직접 APK 다운로드 가능, 앱 설치 후 업데이트는 수동 확인 필요
- F-Droid 빌드는 Termux 개발자가 아닌 F-Droid 측에서 관리하며, 서명 키가 다름
- 아키텍처별 APK는 제공되지 않으며, 단일 universal APK (~180MB) 만 배포
GitHub
- GitHub Releases 또는 Build Action을 통해 APK 제공
- Android 7 이상은 apt-android-7, Android 5·6은 apt-android-5 버전 사용
-
GitHub 빌드 APK는 테스트 키(testkey_untrusted.jks) 로 서명되어 있으며, 누구나 동일 키로 빌드 가능
- 악성 버전 유포 위험이 있으므로 공식 GitHub 저장소 외 출처의 APK 설치는 비권장
- universal APK는 약 180MB, 아키텍처별 APK는 약 120MB
Google Play (실험적)
- Android 11 이상용 정책 대응 버전이 Google Play에 존재하나, 기능 누락 및 버그 있음
- Play 버전은 별도 저장소(termux-play-store)에서 개발 중
- F-Droid 버전과 sharedUserId 제거로 호환되지 않음, 자동 업데이트 비활성화 권장
제거 및 백업
- 다른 설치 소스로 전환하거나 앱 삭제 시, 모든 Termux 및 플러그인 APK를 완전히 제거해야 함
- 제거 전 Backing up Termux 절차를 통해 데이터 백업 가능
커뮤니티 및 문서
- 주요 커뮤니티: Reddit(r/termux) , Matrix/Gitter 채널, Twitter(@termuxdevs) , 지원 이메일(support@termux.dev)
- 공식 문서:
- 추가 자료: FAQ, 파일 시스템 구조, 원격 접근, Android 저장소 접근, 터미널 설정 등
디버깅
- 앱 설정에서 Log Level을 조정해 문제를 추적 가능 (Off, Normal, Debug, Verbose)
- 로그는 logcat 명령으로 확인하거나 Report Issue 기능으로 자동 수집 가능
-
스크린샷만 포함된 불완전한 오류 보고서는 자동 폐기될 수 있음
유지보수자 및 기여자 지침
-
termux-shared 라이브러리는 앱과 플러그인 간 공통 상수·유틸을 정의
- 하드코딩된 경로 사용 금지, 공용 라이브러리 내 정의 필요
-
버전명은 semantic version 2.0.0 규칙(major.minor.patch)을 따라야 하며, 태그 생성 시 패치 번호 포함 필수
-
커밋 메시지는 Conventional Commits 규격을 따라야 함
- 타입: Added, Changed, Deprecated, Removed, Fixed, Security
- 예시: Added: Add foo, Changed!: Change baz as a breaking change
포크(Forking)
- 패키지명을 변경하려면 TermuxConstants 수정 및 bootstrap zip 재컴파일 필요
- 일부 플러그인은 여전히 하드코딩된 com.termux 값을 사용하므로 수동 수정 필요
- 플러그인 포크 시 Termux Libraries 문서 참고
후원 및 지원
-
GitHub Accelerator, GitHub Secure Open Source Fund, NLnet NGI Mobifree, Cloudflare, Warp 등의 지원을 받음
- 각 기관의 관련 링크와 프로젝트 참여 내역이 명시됨