Praca z aplikacją Termux
To nie tyle spójny samouczek, co zbiór luźnych informacji na temat Termuksa – aplikacji na Androida dającej możliwość korzystania z konsoli i skryptów na naszym własnym telefonie.
Wymienione tu porady i problemy są dość uniwersalne, więc nie chciałem ich powtarzać w każdym jednym wpisie i zebrałem je tutaj. Będę do nich odsyłał z innych wpisów.
Instalacja
Zanim przejdę do instalacji, dwie kluczowe rzeczy:
-
Instrukcja dotyczy wyłącznie telefonów z systemem Android.
To system docelowy dla Termuksa. Być może powstały jakieś wersje dla systemu iOS albo bardziej niszowych, alternatywnych systemów (jak mobilny Linux), ale nie miałem z nimi styczności.
-
Google jest niedobrym monopolistą.
Są teź właścicielami Play Store’a – oficjalnej i najpopularniejszej bazy z aplikacjami na Androida. Naszego Termuksa potraktowali niesprawiedliwie, zakazując mu dodawania niektórych funkcji, bardzo przydatnych dla majsterkujących użytkowników.
Ze względu na punkt drugi apka Termux dostępna przez Play Store jest wybrakowana.
Jasne, można jej użyć, jeśli chcemy tylko poćwiczyć w podróży korzystanie z programów konsolowych. Ale gdybyśmy chcieli skorzystać z pełni możliwości telefonu, mocno polecam pobranie wersji z innego źródła niż Play Store.
F-Droid na ratunek
„Inne źródło niż Play Store”? W porządku. Ale przydałoby się, żeby to źródło nie zaserwowało nam jakiejś apki z wirusami, która wykradnie nasze tajemnice z telefonu.
Takim źródłem jest F-Droid – baza przechowująca aplikacje open source.
Jest to źródło dość popularne i wiele osób ma je na oku, więc szybko by wyszło na jaw, gdyby ktoś próbował czegoś szemranego.
Instalacja prawdziwego Termuksa w takim wypadku przebiega następująco:
- Najpierw pobieramy apkę F-Droid z oficjalnego źródła.
- Następnie ją uruchamiamy i znajdujemy przez wyszukiwarkę apkę Termux. Instalujemy.
-
Na koniec instalujemy, również przez F-Droida,
Termux:API
.To funkcje rozszerzające Termuksa. Pozwalają mu między innymi uzyskać dostęp do schowka, mikrofonu, czujników telefonu – oczywiście tylko wtedy, kiedy wyrazimy zgodę.
Kiedy już zrobimy te trzy rzeczy, świat Termuksa stanie przed nami otworem
Możliwości
Co można robić, mając Termuksa?
Wszystkich zastosowań nie wymienię, bo są niezliczone! Jak dotąd opisałem na blogu:
- walkę z trollami (kopiowanie danych ze schowka + ich obróbka + otwieranie strony w domyślnej przeglądarce),
- chowanie plików poza zasięgiem innych (niesystemowych) aplikacji,
- robienie prowizorycznego backupu swoich SMS-ów,
- pobieranie filmików i muzyki z użyciem yt-dlp.
A będzie tego więcej
Poza tym, ogólniej: można korzystać z wielu przydatnych programów konsolowych znanych z systemu Linux.
Wiele fajnych samouczków można znaleźć w sieci pod hasłem bash tutorial
. Choć nie były tworzone z myślą o Termuksie, nieraz zadziałają również na nim.
Mało? Można zainstalować więcej programów z oficjalnej bazy. Dostępny jest chociażby język programowania Python, wraz z wieloma stworzonymi w nim pakietami (jak chociażby Matplotlib od wizualizacji danych).
A gdyby ktoś jeszcze czuł niedosyt, to po zainstalowaniu Termux:API
zyska dostęp do programów zintegrowanych z funkcjami smartfona. Warto poznać ich oficjalną listę.
Python
Nie będzie potrzebny osobom używającym gotowych programów. Ja jednak chciałem wzbogacić Termuksa o własne skrypty od przetwarzania stron internetowych. A że piszę je w języku Python, to go potrzebowałem.
Instalacja
Gdy już mamy Termuksa, instalowanie Pythona powinno być bardzo proste. Wpisujemy w konsolę:
Natomiast może się zdarzyć, że wyskoczy nam błąd związany z brakującym repozytorium. To nic strasznego. Zapraszam do części „Rozwiązywanie problemów”.
LXML
Biblioteka do sprawnej pracy z formatem XML. Wiele moich skryptów jej nie potrzebuje.
Do tej pory starałem się unikać jej oraz innych modułów opartych na innych językach niż Python. Ale stopniowo zaczynam poruszać na blogu kwestie przetwarzania bardziej złożonych plików, jak kod źródłowy dużych portali społecznościowych. Powoli staje się potrzebna.
Przede wszystkim zaktualizujmy swoje biblioteki do najnowszej wersji, żeby nie było między nimi rozbieżności. Wpisujemy w Termuksa:
Gdyby wyskoczył komunikat o niedziałającym repozytorium, w tym momencie albo po innym użyciu komendy pkg
, to rozwiązanie jest dość proste.
Poza tym potrzebujemy kompilatora – czegoś w rodzaju robota kuchennego, który pozwoli nam połączyć zgromadzone składniki w fajnego LXML‑a. Dobrym rozwiązaniem dla Androida jest Clang, ważący na dzień 19 grudnia 62 MB.
To teraz potrzebujemy jeszcze składników – kilku bibliotek:
Na Termuksie ważne, żeby to były właśnie te; wiele internetowych instrukcji odnosi się do zwykłego Linuksa i wspomina o wersjach z przyrostkiem -dev. Ale w bazach Termuksa ich po prostu nie mają, są inne.
Wpisujemy komendę i potwierdzamy.
Kiedy już mamy u siebie Clanga, trzy potrzebne biblioteki oraz samego Pythona, możemy się pokusić o zainstalowanie LXML-a. Najprościej byłoby wpisać:
Ale uwaga! W przypadku LXML-a po wyświetleniu building wheel for LXML zacznie się kompilacja, która długo potrwa, nawet całe godziny. Możemy na ten czas zostawić Termuksa.
Nie mamy cierpliwości? Możemy również wybrać opcję mniej zoptymalizowaną, ale szybszą. W tym celu wpisujemy:
Komenda CFLAGS
oznacza, że chcemy szybkie przerobienie programu, kosztem ewentualnego nieco wolniejszego działania. Ale większej różnicy nam to nie zrobi.
Pierwsza litera w wartości to O jak optymalizacja, zaś druga to zero.
Gdyby na tym etapie wyświetliło nam długi błąd, zawierający fragment:
command ‘arm-linux-androideabi-clang’ failed with exit status 1
…To znaczy że nie mamy u siebie Clanga. Instalujemy go jak wyżej.
Rozwiązywanie problemów
Instalowanie przez pkg nie działa
Sam Termux niewiele nam daje bez dodatkowych modułów i bibliotek. Możemy je łatwo instalować, wpisując komendę pkg install
. Ale co zrobić, kiedy tak podstawowa funkcja nam nie działa?
Po wpisaniu pewnej takiej komendy wyskoczył mi długi błąd, którego główne przesłanie znalazłem na końcu:
Possible cause: repository is under maintenance or down
Z czego to wynika? Otóż Termux ma u siebie ustalony adres jakiegoś serwera (repozytorium), do którego zwraca się z prośbami o pobranie dodatkowych rzeczy. I niestety jego dawny serwer – Bintray – został wyłączony. Stąd komunikat o błędzie.
Nie jest to wielki problem, bo można ustawić w Termuksie, żeby brał pliki od kogoś innego. Wydaje mi się, że nowsze wersje Termuksa to naprawiły.
Tym niemniej przez pewien czas, z punktu widzenia nowych użytkowników, Termux oznaczał dziwne, długie komunikaty o błędach i słabe pierwsze wrażenie. A szkoda.
A jak to zmienić na coś działającego? Bardzo prosto. Wpisujemy komendę:
Potwierdzamy. Wyświetli się ekran w stylu retro, pozwalający nam najpierw wybrać repozytorium, któremu chcemy zmienić źródło.
Po ekranie poruszamy się strzałkami. Spacją zaznaczamy. A klawiszem potwierdzającym (po prawej stronie naszej klawiaturze ekranowej) – potwierdzamy swój wybór. To ważne, żeby najpierw zaznaczyć, a potem potwierdzić. Inaczej wybralibyśmy zawsze pierwszą opcję.
Poniższe instrukcje odnoszą się do wersji Termuksa, którą miałem u siebie, dlatego piszę w pierwszej osobie. Możliwe, że wersja bardziej współczesna dla czytelników zawiera coś innego.
Domyślnie pierwszy ekran zawierał u mnie trzy kategorie – repozytorium główne, Science oraz Games. Wszystkim trzeba było ustawić nowe, działające źródło.
Inną opcją było usunięcie osobnych repozytoriów od gier i nauki; osobiście uznałem, że ich nie potrzebuję. Wystarczyły dwie proste komendy:
pkg remove science-repo -y
Kiedy miałem już tylko jeden rodzaj repozytorium, pozostała zmiana źródła. Zmieniłem opcję domyślną, Bintraya, na coś innego. Tamtego dnia działał mi Albatross, więc to jego ustawiłem jako źródło. Ale ogólnie, gdyby któreś nie działało, można po prostu wybrać coś innego z listy.
Po wprowadzeniu zmiany zaczęły działać komendy instalujące różne rzeczy przez pkg
.