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.

Instalujemy Termuksa

Zanim przejdę do instalacji, dwie kluczowe rzeczy:

  1. Instrukcja dotyczy wyłącznie telefonów z systemem Android.

    To system docelowy dla Termuksa. Nawet jeśli powstały jakieś wersje dla systemu iOS albo bardziej niszowych, alternatywnych systemów (jak mobilny Linux), to nie miałem z nimi styczności.

  2. Google to zło.

    Są 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:

  1. Najpierw pobieramy apkę F-Droid przez oficjalną stronę.
  2. Następnie uruchamiamy F-Droida, znajdujemy przez jego wyszukiwarkę apkę Termux. Instalujemy ją.
  3. 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 :smile:

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ę:

pkg install python

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:

pkg upgrade
Porada

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.

pkg install clang

To teraz potrzebujemy jeszcze składników – kilku bibliotek:

pkg install libxml2 libxslt libiconv

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ć:

pip install lxml

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:

CFLAGS='-O0' pip install lxml

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ę:

termux-change-repo

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ę.

Uwaga

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 game-repo -y
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.