Tag Archive pkg

Byphunsanit

linux: ใช้ในมือถือผ่าน Termux

การใช้งาน Termux บน Android กับ Linux Terminal ( บน Desktop / Server ) มีความใกล้เคียงกันมากในแง่ของความรู้สึก แต่ในทางเทคนิค “ไส้ใน” นั้นแตกต่างกันอย่างสิ้นเชิงครับ ถ้าผ่านการติดตั้งจาก ใช้ Linux ในมือถือ Android ที่ซ่อนอยู่ทุกเครื่อง มาแล้ว จะทำความเข้าในมันเพิ่มกัน


โครงสร้างระบบไฟล์ ( File System Hierarchy )

นี่คือจุดที่ต่างกันมากที่สุดครับ

  • Linux ทั่วไป: ใช้มาตรฐาน FHS ( Filesystem Hierarchy Standard ) เช่น Binary อยู่ที่ /bin, /usr/bin และ Library อยู่ที่ /lib
  • Termux: เนื่องจาก Android ไม่อนุญาตให้แอปทั่วไปเขียนไฟล์ลงใน Root Directory ( / ) ของระบบได้ Termux จึงต้องเก็บทุกอย่างไว้ใน Private Folder ของแอปเอง ซึ่งมักจะเป็น: $PREFIX หรือ /data/data/com.termux/files/usr/bin
    • ข้อควรระวัง: สคริปต์ที่เขียนแบบ Hard-code เส้นทางไฟล์ เช่น #!/bin/bash อาจจะรันไม่ได้ใน Termux ( ต้องใช้ termux-fix-shebang หรือเปลี่ยนเป็น #!/data/data/com.termux/files/usr/bin/bash )

การจัดการสิทธิ์ ( Permissions & Root )

  • Linux ทั่วไป: คุณคือพระเจ้าผ่านคำสั่ง sudo สามารถเข้าถึงฮาร์ดแวร์ได้ทุกส่วน
  • Termux: รันภายใต้สิทธิ์ของ “User App” ใน Android
    • ไม่มี sudo โดยเริ่มต้น ( ยกเว้นเครื่องจะ Root มา )
    • เข้าถึงไฟล์ใน SD Card หรือ Internal Storage ต้องใช้คำสั่ง termux-setup-storage ก่อน
    • ไม่สามารถจัดการระบบระดับ Kernel หรือแก้ไฟล์ระบบของ Android ได้โดยตรง

การจัดการแพ็กเกจ ( Package Manager )

  • Linux ทั่วไป: ใช้ apt, dnf, pacman ซึ่งดึงไฟล์จาก Repository ของ Distro นั้น ๆ ( Debian, Ubuntu, Arch )
  • Termux: ใช้ pkg ( ซึ่งเป็น Wrapper ของ apt อีกที ) แต่จะดึงข้อมูลจาก Repository เฉพาะของ Termux เอง ซึ่งแพ็กเกจถูก Compile มาให้รันบน Android โดยเฉพาะ

Library และการคอมไพล์ ( C Library )

  • Linux ทั่วไป: ส่วนใหญ่ใช้ GNU C Library ( glibc )
  • Termux: ใช้ Bionic libc ( ตัวเดียวกับที่ Android ใช้ )
    • ผลคือ: คุณไม่สามารถเอาไฟล์ Binary ที่คอมไพล์จาก Ubuntu ( x86_64 ) มาวางแล้วรันใน Termux ( ARM / AArch64 ) ได้ทันที แม้จะเป็นสถาปัตยกรรม CPU เดียวกัน ก็อาจจะติดปัญหาเรื่อง Library ที่ไม่เหมือนกันครับ

ตารางสรุปเปรียบเทียบ

หัวข้อLinux Terminal (Desktop)Termux (Android)
ฐานระบบGNU / LinuxAndroid ( Linux Kernel + Bionic )
Root Accessมี ( sudo )จำกัด ( ตามสิทธิ์ App / ต้อง Root เครื่อง )
Path หลัก/bin, /usr/bin/data/data/com.termux/files/usr/bin
การแสดงผล GUIรองรับ Native ( X11 / Wayland )ต้องผ่าน VNC หรือ XServer App เพิ่มเติม
ความเสถียรสูงมาก สำหรับงาน Serverอาจถูก Android OS “ฆ่า Process” ทิ้งได้ถ้าใช้แรมเยอะ

อ่านเพิ่มเติม