Termux, Эмулятор терминала линукс для андроид — различия между версиями

Материал из LUWRAIN Wiki
Перейти к: навигация, поиск
(Новая страница: « = termux, Эмулятор терминала линукс для андроид. = termux - это эмулятор терминала и linux-среда…»)
 
 
Строка 1: Строка 1:
 
       = termux, Эмулятор терминала линукс для андроид. =
 
       = termux, Эмулятор терминала линукс для андроид. =
termux - это эмулятор терминала и linux-среда для android, это
+
termux - это эмулятор терминала и linux-среда для android.
замечательная прога вообще отдельного описания требует, но постараюсь
 
коротко.
 
  
начать с того, что эту штуку можно использовать как простой эмулятор
+
во-первых, эту штуку можно использовать как простой эмулятор
 
терминала для вызова встроенных команд android, и это единственный более
 
терминала для вызова встроенных команд android, и это единственный более
 
или менее доступный терминал, который я видел под андроид, в других окно
 
или менее доступный терминал, который я видел под андроид, в других окно
Строка 17: Строка 15:
 
который может запускаться на телефоне безо всякого рута.
 
который может запускаться на телефоне безо всякого рута.
  
если подробнее, то, как вы знаете, андроид, это по ядру тоже linux, но
+
если подробнее, то, как вы знаете, андроид, это тоже linux, но
 
со значительными отличиями от того, что мы привыкли понимать под словом
 
со значительными отличиями от того, что мы привыкли понимать под словом
linux, хотябы по архитектуре фс.
+
linux, хотябы по архитектуре файловой системы.
  
в-общем, у каждого приложения там есть определённый каталог на фс, где
+
у каждого приложения там есть определённый каталог в файловой системе, где
 
приложение может держать свои данные, private storage, там можно
 
приложение может держать свои данные, private storage, там можно
 
размещать и запускать оттуда любые адаптированные под местные условия
 
размещать и запускать оттуда любые адаптированные под местные условия
бинари.
+
бинарники.
  
они создали свою среду linux с прогами, адаптированными под эти различия
+
они создали свою среду linux с программами, адаптированными под эти различия, на базе busybox и apt.
на базе busybox и apt.
 
  
 
как результат, вы можете поставить туда очень многие пакеты нормального
 
как результат, вы можете поставить туда очень многие пакеты нормального
linux, например apache, python, jq, bash, curl, wget, nmap и т.д.
+
linux, например apache, python, jq, bash, golang, curl, wget, nmap и т.д.
  
 
говорят, кто-то запускал там nodejs.
 
говорят, кто-то запускал там nodejs.
  
что интересно, если другие похожие софты используют chroot, то эта
+
под android существуют такие приложения, как LinuxDeploy, которые позволяют запускать на смартфоне обычные linux-дистрибутивы - debian, ubuntu, arch.
работает с путями android напрямую, то есть те же shell-скрипты должны
+
обычно подобные приложения используют для этого системный вызов chroot, почему для их работы и требуются root-права.
 +
termux же работает с путями android напрямую, то есть те же shell-скрипты должны
 
там начинаться с #!/data/data/com.termux/files/usr/bin/bash
 
там начинаться с #!/data/data/com.termux/files/usr/bin/bash
  
Строка 41: Строка 39:
 
эту раскладку.
 
эту раскладку.
  
это и отличает его от софт типа LinuxDeploy, которые ставят в chroot
+
при использовании LinuxDeploy и ему подобных на смартфоне запускаются файлы, скомпилированные просто под arm, без учёта особенностей android.
существующие дистры, такие как debian или arch, используя бинари,
+
из-за этого некоторые программы либо не работают совсем, либо не выполняют часть своих функций.
скомпилированные просто под arm.
 
  
из-за этого многие проги не могут нормально взаимодействовать с
+
также там всё сильно зависит от того, как производитель смартфона организовал внутреннее устройство своей системы.
особенностями android (своя система shared memory и ещё некоторые) и
+
на этой почве могут возникать различные неприятные сюрпризы типа невозможности использовать sudo или полного отсутствия выхода в интернет для программ дистрибутива.
просто отказываются работать, особенно это относится к сложным
 
мультипроцессным софтам (hydra, postgresql).
 
  
ещё, так как это дело использует хакерские методы для запуска дистров, у
+
в termux же, если там есть какой-то пакет, то вы можете быть почти уверены,
вас может, например, отказаться работать sudo или не быть интернета в не
 
рутовых сессиях.
 
 
 
в termux же, если там есть какой пакет, то вы можете быть почти уверены,
 
 
что он у вас будет работать, так как компилируется всё изначально под
 
что он у вас будет работать, так как компилируется всё изначально под
 
андроид.
 
андроид.
 +
 +
в LinuxDeploy и подобных для запуска linux используются хакерские методы, а здесь всё делается легальным способом, поэтому будет работать на большинстве устройств.
  
 
ещё, кроме безрута, это даёт ряд преимуществ:
 
ещё, кроме безрута, это даёт ряд преимуществ:
Строка 74: Строка 67:
 
синтеза речи android, поставить что-то на воспроизведение.
 
синтеза речи android, поставить что-то на воспроизведение.
  
тут даже можно запустить любую пульсосовместимую программу и она будет
+
среди доступных пакетов есть и pulseaudio, совместимый с системой вывода звука android.
выводить звук, правда speechd там пока нет.
+
с его помощью можно воспроизводить звук при помощи таких программ, как sox.
  
 
тут всё ограничено только вашей фантазией.
 
тут всё ограничено только вашей фантазией.
Строка 91: Строка 84:
 
если прокрутить на этом ряде вперёд, как бы пролистывая на вторую страницу, то будет обычное поле редактирования.
 
если прокрутить на этом ряде вперёд, как бы пролистывая на вторую страницу, то будет обычное поле редактирования.
 
объясняю зачем это нужно.
 
объясняю зачем это нужно.
девелоперы termux это сделали, поскольку у многих клавиотур есть функции типа автодополнения и предсказания набираемого текста, истории буфера обмена и подобные, для которых клаве необходимо иметь точное представление об уже набранном тексте, что в условиях терминального окна нормально работать не может, так как там набранный текст определяется работающей в терминале программой, с которой клава взаимодействовать не способна в принципе.
+
разработчики termux это сделали, поскольку у многих клавиотур есть функции типа автодополнения и предсказания набираемого текста, истории буфера обмена и подобные, для которых необходимо иметь точное представление об уже набранном тексте, что в условиях терминального окна нормально работать не может, так как там набранный текст определяется работающей в терминале программой, с которой клава взаимодействовать не способна в принципе.
 
итак, набираемый в этом поле текст никак не влияет на то, что работает в терминале, пока мы не нажмём клавишу ввод. тогда поле очистится и всё, что мы набирали, отправится вверх в терминал. когда мы ещё раз нажмём ввод, будет послан сигнал перевода строки и, если перед нами стандартная консоль, введённая нами команда начнёт выполняться.
 
итак, набираемый в этом поле текст никак не влияет на то, что работает в терминале, пока мы не нажмём клавишу ввод. тогда поле очистится и всё, что мы набирали, отправится вверх в терминал. когда мы ещё раз нажмём ввод, будет послан сигнал перевода строки и, если перед нами стандартная консоль, введённая нами команда начнёт выполняться.
 
для нас с вами это поле означает нормальную работу произношения символов и слов при вводе, а также возможность нормально перемещаться по тексту, чтобы исправить ошибки, так что его очень удобно использовать для подготовки команды перед запуском.
 
для нас с вами это поле означает нормальную работу произношения символов и слов при вводе, а также возможность нормально перемещаться по тексту, чтобы исправить ошибки, так что его очень удобно использовать для подготовки команды перед запуском.
Строка 136: Строка 129:
 
скачать можно либо с плеймаркета, либо с FDroid.
 
скачать можно либо с плеймаркета, либо с FDroid.
 
если предпочитаете не использовать первое, но не знаете, что такое второе, всё равно идите на FDroid и качайте apk оттуда, они в отличие от гугла не блокируют прямую скачку apk через браузер.
 
если предпочитаете не использовать первое, но не знаете, что такое второе, всё равно идите на FDroid и качайте apk оттуда, они в отличие от гугла не блокируют прямую скачку apk через браузер.
но и termux, и аддоны все должны быть из одного источника, либо с плея, либо оттуда.
+
 
 +
но termux и дополнения должны быть из одного источника, смешивать apk с FDroid и google play нельзя.

Текущая версия на 12:16, 30 мая 2021

      = termux, Эмулятор терминала линукс для андроид. =

termux - это эмулятор терминала и linux-среда для android.

во-первых, эту штуку можно использовать как простой эмулятор терминала для вызова встроенных команд android, и это единственный более или менее доступный терминал, который я видел под андроид, в других окно с результатом отображается в скринридере просто как пустое пространство, здесь можно хотя бы читать текст, хотя до десктопных консольных скринридеров очень далеко в плане автоозвучки изменений.

но режим со встроенной оболочкой android тут называется failsafe, то есть аварийный, а основной режим ещё интереснее.

это особый, адаптированный под условия android, дистрибутив linux, который может запускаться на телефоне безо всякого рута.

если подробнее, то, как вы знаете, андроид, это тоже linux, но со значительными отличиями от того, что мы привыкли понимать под словом linux, хотябы по архитектуре файловой системы.

у каждого приложения там есть определённый каталог в файловой системе, где приложение может держать свои данные, private storage, там можно размещать и запускать оттуда любые адаптированные под местные условия бинарники.

они создали свою среду linux с программами, адаптированными под эти различия, на базе busybox и apt.

как результат, вы можете поставить туда очень многие пакеты нормального linux, например apache, python, jq, bash, golang, curl, wget, nmap и т.д.

говорят, кто-то запускал там nodejs.

под android существуют такие приложения, как LinuxDeploy, которые позволяют запускать на смартфоне обычные linux-дистрибутивы - debian, ubuntu, arch. обычно подобные приложения используют для этого системный вызов chroot, почему для их работы и требуются root-права. termux же работает с путями android напрямую, то есть те же shell-скрипты должны там начинаться с #!/data/data/com.termux/files/usr/bin/bash

соответственно, всё, что запускается в termux, компилируется именно под эту раскладку.

при использовании LinuxDeploy и ему подобных на смартфоне запускаются файлы, скомпилированные просто под arm, без учёта особенностей android. из-за этого некоторые программы либо не работают совсем, либо не выполняют часть своих функций.

также там всё сильно зависит от того, как производитель смартфона организовал внутреннее устройство своей системы. на этой почве могут возникать различные неприятные сюрпризы типа невозможности использовать sudo или полного отсутствия выхода в интернет для программ дистрибутива.

в termux же, если там есть какой-то пакет, то вы можете быть почти уверены, что он у вас будет работать, так как компилируется всё изначально под андроид.

в LinuxDeploy и подобных для запуска linux используются хакерские методы, а здесь всё делается легальным способом, поэтому будет работать на большинстве устройств.

ещё, кроме безрута, это даёт ряд преимуществ:

возможность лёгкого доступа к файловой системе устройства (то, что в файловых менеджерах называют встроенной памятью)

возможность неплохо управлять ресурсами android через специальный аддон.

например, можно пропустить список своих sms через grep или какой-нибудь regexp, запросить какой-то api через curl и результат вывезти в панель уведомлений, и т. д.

или поработать с буфером обмена.

или, наконец, сделать снимок с камеры, заслать что-нибудь в систему синтеза речи android, поставить что-то на воспроизведение.

среди доступных пакетов есть и pulseaudio, совместимый с системой вывода звука android. с его помощью можно воспроизводить звук при помощи таких программ, как sox.

тут всё ограничено только вашей фантазией.

есть даже система для вывода простеньких диалогов (меню, да/нет, дата-время, ввод текста)


и да, получается, что для нас это самый доступный ssh-клиент, который я видел. ещё можно поставить спецверсию ssh-агента и использовать для хранения ключей хранилище ключей android, что делает очень сложной задачу их кражи даже при условии наличия рута, так как все операции над ними проходят через специальный чип, правда ещё не тестировал, может работать не у всех. больше о технических деталях можно узнать у них на wiki, я же сосредоточусь на интерфейсе. итак, главное окно termux, кроме собственно окна терминала и клавиотуры, содержит в себе ещё ряд, в котором сгруппированы вспомогательные клавиши (esc, tab, стрелки, правда только вверх и вниз, а также модификаторы ввиде флажков) если прокрутить на этом ряде вперёд, как бы пролистывая на вторую страницу, то будет обычное поле редактирования. объясняю зачем это нужно. разработчики termux это сделали, поскольку у многих клавиотур есть функции типа автодополнения и предсказания набираемого текста, истории буфера обмена и подобные, для которых необходимо иметь точное представление об уже набранном тексте, что в условиях терминального окна нормально работать не может, так как там набранный текст определяется работающей в терминале программой, с которой клава взаимодействовать не способна в принципе. итак, набираемый в этом поле текст никак не влияет на то, что работает в терминале, пока мы не нажмём клавишу ввод. тогда поле очистится и всё, что мы набирали, отправится вверх в терминал. когда мы ещё раз нажмём ввод, будет послан сигнал перевода строки и, если перед нами стандартная консоль, введённая нами команда начнёт выполняться. для нас с вами это поле означает нормальную работу произношения символов и слов при вводе, а также возможность нормально перемещаться по тексту, чтобы исправить ошибки, так что его очень удобно использовать для подготовки команды перед запуском. но такие вещи, как автодополнение по tab, так просто работать не будут, поскольку, повторюсь, терминал ничего не может знать о наших действиях до тех пор, пока мы не отправим написанное наверх клавишей ввод. а когда мы это отправили и редактор очищен, то ничем на набранное мы повлиять не можем, разве что с большим трудом удалить, так как при наборе прямо в терминал talkback не озвучивает наших действий над клавиатурой, видимо просто не может получить о них данные, так что очень легко допустить ошибку, а перемещаться в стороны мы не можем, так как есть только стрелки вверх и вниз, комбинациями ctrl+f ctrl+b если только, но это опять же озвучиваться не будет, и если проконтролировать набор и удаление ещё можно постоянными перепроверками результата, то дастоверно определить местоположение курсора вообще невозможно. кроме этих элементов, можно нажатием и удержанием на терминале вызвать контекстное меню, где можно вставить текст из буфера, скопировать содержимое терминала, перейти по ссылкам, если они есть в текущем выводе, и ещё некоторые вещи. есть ещё одно меню, которое можно вызвать проводкой двумя пальцами слева направо в верхней части окна. там можно скрыть или показать клавиотуру, также развернуть клавиотуру можно нажатием на нижнюю часть терминала, или управлять сеансами. сеансы это нечто вроде независимых вкладок. если на кнопке new session сделать удержание, откроется окно, где можно дать своё имя новому сеансу или войти в failsafe режим, ещё failsafe можно запустить из меню ярлыка в лаунчере. failsafe это, как уже говорилось, аварийный режим, когда попадаешь не в среду termux, а в стандартную систему оболочки android с базовыми командами. он предназначен для ситуаций, когда вы настолько испортили файлы типа .bashrc, что командная оболочка падает при старте и ничего невозможно сделать, так как система просто не доходит до того этапа, когда можно вводить команды. наконец, есть значёк termux в уведомлениях, который висит, если у вас есть хоть один сеанс или включена блокировка сна. о последнем подробнее: если вы просто запустите в termux что-то долго работающее и отключите экран, очень скоро это что-то остановится, так как система уйдёт в спящий режим. чтобы этого не было, надо включить режим wake lock либо кнопкой значка, либо командой termux-wake-lock (termux-wake-unlock для выключения) эти команды спокойно можно вызывать из скриптов. ещё есть команда termux-storage-setup, которая откроет доступ из этой среды к вашей файловой системе через подкаталог storage домашнего каталога. обратите внимание, что нормальный доступ ко многим вещам, например к usb-носителям и внешней карте, весьма затруднителен, так как android требует для этого использовать систему saf (storage access framework), которую можно вызывать только из java кода, но никак не из нативных библиотек и тем более не из автономных бинарников. больше команд по управлению андроидом можно получить, поставив дополнительное приложение termux-api и с ним пакет termux-api. пакетчик тут apt. ещё пара мелочей: комбинация ctrl+l на виртуальной клаве может быть использована вместо команды clear, а ctrl+d там, где уместна exit или что-то подобное. эти клавиши и на десктопах работают, но на смартфоне это может быть особенно удобно. beep-сигнал с терминала преобразуется в лёгкий вибросигнал. ещё одна вещь, на которой надо остановиться, это установка ssh-сервера, так как конфигурировать всю эту систему удобнее с компа. для начала вызываем passwd и задаём себе какой-нибудь пароль. потом вызываем pkg in openssh pkg это скрипт, который для краткости объединяет вызов apt update с основным вызовом. in - сокращённая запись от install, если не сработает, попробуйте полную install. openssh это пакет, который объединяет клиент и сервер ssh. дожидаемся конца, отвечая y где надо. потом: sshd никакой менеджер сервисов тут не используется, поэтому вызываем вот так, напрямую. всё, теперь наш ssh сервер работает на порту 8022. обратите внимание, что порт именно 8022, так как порты ниже 1024 использовать не позволяется. логин можете использовать любой, а пароль тот, что задавали через passwd. для остановки команда pkill sshd и не забудьте поставить флаг keep screen on или включить блокировку сна, рекомендуется второе, иначе скоро сервер встанет сам собой.

подробности, как уже писал, на их wiki.

скачать можно либо с плеймаркета, либо с FDroid. если предпочитаете не использовать первое, но не знаете, что такое второе, всё равно идите на FDroid и качайте apk оттуда, они в отличие от гугла не блокируют прямую скачку apk через браузер.

но termux и дополнения должны быть из одного источника, смешивать apk с FDroid и google play нельзя.