Termux
Termux چیست؟
Termux یک شبیه ساز ترمینال برای اندروید است. به دلیل تعداد زیادی از بسته های موجود مانند clang ، ffmpeg ، opensh ، python ، vim ، می توان آن را شبیه توزیع توزیع لینوکس دانست و نه فقط به برنامه ترمینال.
Termux یک سیستم عامل یا شبیه ساز سخت افزاری نیست. این محیط با سایر قسمت های سیستم عامل Android مشترک است. برای درک بهتر در مورد آنچه اتفاق می افتد ، پیشنهاد می شود مقالات زیر را بخوانید:
ویکی پدیا: یک شبیه ساز ترمینال چیست
Termux از توزیع لینوکس چقدر متفاوت است
از کجا می توانم با Termux کمک بگیرم؟
این ویکی شروع خوبی در اصول اولیه Termux است. گزینه های دیگر عبارتند از:
IRC : کانال #Termux روی freenode که با Gitter آینه کاری شده است .
Github : گزارش مشکلات را در مورد برنامه اصلی ، بسته ها و افزونه ها ارسال کنید. برای راه حل های خود درخواست های کشش ایجاد کنید.
Gitter : اتاق چت که با IRC آینه کاری شده است .
Reddit : انجمن Reddit ، در اینجا سؤالات کلی بپرسید.
پیوندهای بیشتری را می توانید در صفحه انجمن مشاهده کنید .
در مورد Termux در اینترنت نیز تحقیق کنید ، به عنوان مثال سایت Termux: github.com
آیا می توانم مشارکت کنم؟
بله ، مشارکتها خوش آمدید. Termux یک برنامه منبع باز است و با کمک کاربران ساخته شده است.
مخازن کد منبع برای همه مؤلفه ها را می توانید در صفحه پروژه در Github پیدا کنید . مستندات برنامه نویس در https://github.com/termux/termux-packages/wiki موجود است .
اگر می خواهید یک بسته خاص را درخواست کنید یا گزارش اشکال ارسال کنید ، لطفاً یکی از مخازن زیر را باز کنید:
موضوعات مربوط به برنامه: https://github.com/termux/termux-app/issues
مسائل مربوط به بسته بندی: https://github.com/termux/termux-packages/issues
لطفاً هیچ مشکلی درباره محتوای شخص ثالث ارسال نکنید.
آیا می توان Termux را روی اندروید 4 نصب کرد؟
نه ، قابل نصب نیست.
دلایل متعدد برای این وجود دارد. مورد اول فرمت فایلهای اجرایی است - اندروید 5 و بالاتر به باینری های ELF نیاز دارد که از کد مستقل موقعیت به عنوان بخشی از سخت شدن امنیت استفاده کنند. این نوع باینری در نسخه های اندرویدی پایین پشتیبانی نمی شود. دلیل دوم Bionic libc است که در نسخه اندرویدی پایین فاقد بسیاری از توابع مشترک مورد استفاده برنامه های خط فرمان است.
همچنین شایان ذکر است که حفظ چندین نسخه از بسته ها به منظور کارآیی مناسب آنها بر روی نسخه های اندرویدی پایین تر ، فشار بیشتری را بر روی نگهدارنده ها و همچنین نسخه های قدیمی اندرویدی که شناخته می شود دارای بسیاری از اشکالات سیستم عامل است که باید از طرف Termux کار کنند ، قرار می دهد.
Termux دیگر برای آندروید 5 در دسترس نیست؟
از 01.01.2020 ، پشتیبانی از آندروید 5.x و 6.x به دلایل مشابه با Android 4. کاهش یافته است. شما هنوز هم می توانید از Termux در دستگاه های قدیمی استفاده کنید ، اما به روزرسانی های بسته در دسترس نخواهد بود و توسعه دهندگان Termux دیگر علاقه ای به این کار ندارند رفع مشکلات نسخه های قدیمی Android.
APK ها ، بسته ها و کد منبع آنها سازگار با Android 5 در بایگانی اینترنت موجود است .
محیط میراث Termux چیست؟
به طور کلی ، همه بسته های کامپایل شده برای Android 5.x - 6.x است و در https://termux.net سرو می شود . بنابراین اگر Termux شما بسته های این مخزن را نصب می کند - از 01.01.2020 خارج از پشتیبانی هستید.
اگر به دلایلی در Android 7 و بالاتر دارای "محیط میراث" هستید ، تعویض مخزن را با دستور بعدی انجام دهید:
termux-upgrade-repo
این ابزار همه چیز را در زیر $ PREFIX پاک می کند (مکانی که بسته ها نصب می شوند) اما در فهرست خانه Termux هیچ چیزی را لمس نمی کنند. پس از اتمام آن ، یک اسکریپت نصب مجدد بسته ایجاد می کند و از شما می خواهد که برنامه Termux را مجدداً راه اندازی کنید.
کاربران Android 5/6 قادر به استفاده از این اسکریپت نیستند. تلاش برای تقلب و تغییر به مخزن اصلی در نسخه های سیستم عامل زیر 7.0 منجر به خرابی کامل محیط می شود.
برای چه می توان از Termux استفاده کرد؟
Termux یک برنامه کاربردی عمومی است و در تئوری می تواند برای هر کاری که می تواند در توزیع معمولی لینوکس انجام دهد ، استفاده شود.
نمونه موارد استفاده:
یادگیری اصول اولیه محیط خط فرمان لینوکس.
محیط توسعه.
همگام سازی پرونده یا سرور وب.
مشتری SSH
بارگیری و مدیریت پرونده ها و صفحات با استفاده از ابزارهای زمان بندی شده.
پردازش داده ها با استفاده از پایتون.
البته موارد بسیار دیگری وجود دارد که Termux برای آن استفاده می شود. ما در مخازن ما بیش از 950 بسته داریم و شما حتی می توانید خود را کامپایل کنید ، بنابراین سوالات قابلیت استفاده نباید مشکلی ایجاد کند.
برای کاربرانی که به تازگی برنامه نویسی را آغاز می کنند ، بهتر است با یادگیری Bash شروع کنند و احتمالاً ارزش این است که این مقالات را در Termux Wiki بررسی کنید:
محیط های توسعه
ویراستاران
تفاوت از لینوکس
مدیریت بسته بندی
نرم افزار
آیا Termux یک محیط کامل لینوکس است؟
مقاله اصلی: تفاوت از لینوکس
بله ، همینطور است
اما این یک توزیع سنتی لینوکس نیست. اول از همه Termux یک سیستم عامل نیست. این یک برنامه شبیه ساز ترمینال است - یک رابط مبتنی بر متن برای نشان دادن جریان ورودی ، خروجی و خطاهای استاندارد برنامه که به طور معمول یک مترجم اسکریپت پوسته است. ثانیا ، همان درخت سیستم فایل را با Android به اشتراک می گذارد و به همین دلیل نمی تواند سیستم فایل ریشه ای خود را داشته باشد و از استاندارد FHS پیروی کند . شما فهرستهای سطحی ، / usr ، / usr ها را در محل استاندارد خود پیدا نمی کنید. در عوض ، سیستم فایل ریشه Termux پیشوند دارد (و معمولاً به آن $ PREFIX گفته می شود) و تحت مسیر ثابت زیر موجود است:
/data/data/com.termux/files/usr
فهرست اصلی (معمولاً به عنوان $ HOME خوانده می شود) تحت:
/data/data/com.termux/files/home
این امر باعث می شود در هنگام نصب و تدوین بسته بندی که ساختار فهرست FHS انتظار می رود ، تفاوت زیادی ایجاد کند
به این بحث و مقاله اصلی مراجعه کنید : تفاوت های لینوکس برای ساختار دایرکتوری بیشتر و اطلاعات مربوط به محیط PREFIX $.
آیا می توانم برای هک کردن از Termux استفاده کنم؟
مقاله اصلی: هک کردن
بله ، می توانید ، اما این بیشتر از ویژگی های Termux به مهارت شما سوال می کند.
ما ابزارهایی داریم که ممکن است در تست نفوذ به شما کمک کند. به عنوان مثال: aircrack-ng (مجموعه ای از خدمات برای ممیزی امنیتی Wi-Fi) ، هیدرا (ابزار brute force) ، metasploit (بستر آزمایش در برابر آسیب پذیری های شناخته شده) یا nmap (اسکنر بندر). ابزارهای مختلف توسعه مانند clang و python نیز موجود هستند.
Certain tools like aircrack-ng require your device to be rooted and/or even run a custom Linux kernel with additional drivers and patches.
A letter to Termux "hackers": We are not helping with hacking. No matter for which purpose you need it - we do not care about your learning needs and dirty mind. Just do not ask about hacking Facebook, Instagram, Whatsapp, Telegram and whatever else. And do not ask about rooting your device - our community is not XDA forum !
A letter to hacking tutorial seekers: Beware of scripts suggested to be executed in various "hacking tutorials" available on the Internet. Most of them actually do not work properly (outdated ?). Some of them break Termux environment or even installs malware. Termux developers are not responsible about any damage which may happen by following these "tutorials".
How do I access the device storage in Termux?
You need to grant storage permission to Termux application.
Open Android settings and go to Apps>Termux>Permissions and toggle the storage permission in menu. You may request this permission directly from Termux command line, just execute
termux-setup-storage
and grant the requested permission.
More information is available in Internal and external storage.
Can Termux be installed on the external SD card?
No, it cannot be installed there.
External SD cards are usually formatted in FAT32 or exFAT. These file systems do not support features such as symbolic links and Unix permissions. Program execution is not supported due to noexec mount option. Moreover, Android applies a special overlay which enforces mentioned restrictions regardless of underlying file system.
Why will Termux not write to an external SD card?
Android disallows arbitrary write access to external volumes. You can write only to private directory on such storage whicn is usually accessible through paths like
/storage/XXXX-XXXX/Android/data/com.termux
Alternate solution will be only root or custom ROMs which have this restriction disabled.
We received suggestions for using Storage Access Framework which is used by file managers. But it is not suitable for Termux: command line binaries are standalone and executed outside of Android runtime context and therefore SAF access cannot be passed to them.
Why does Termux not support more special buttons?
Their support is available but is not configured by default.
Check the Touch Keyboard Wiki article to learn about how to configure extra keys row and some key combinations.
Why might Termux add-on installation fail?
Since Termux environment is shared between all its add-ons, each APK must be signed with same key. Unfortunately, we cannot use same signature key for various installation sources.
Thus if Termux application was installed from Google Play, you will not be able to install add-on from F-Droid and vice versa.
How do I get help for a specific package?
Usually packagename -h will display basic help for an application.
Advanced information about program usage can be viewed through man tool. It can be installed with pkg install man. Typing commands man man or man info can help beginning and advanced users alike. For example, man busybox will output the manual page for the package 'busybox'.
Tips, when reading a man page:
Use q to quit
Use space for next page
/search for search
n for repeat search
How do I downgrade a package?
Termux uses "rolling-release" update scheme so downgrading is not supported.
We may provide older versions for some packages, but due to technical reasons and do not rely on them. Older versions may be removed from APT repository at any time.
The optimal way for downgrading packages would be compiling it on your own.
Where are all the *-dev packages?
In Termux they are not needed because development files are not split from the main package. Now, for example instead of libxml2-dev you will need just libxml2.
Can I use packages from another Debian repository?
No, you can't.
There are major differences between Termux and regular Linux distributions and packages from these repositories won't work. See Differences from Linux for more information.
It is better to try request it in termux-packages/issues on Github.
Can I run other Linux distributions in Termux?
Yes, with proot utility you will be able to create and use chroot environment even if device is not rooted.
Please read the PRoot for more information.
Why might apt fail when executed as root?
Apt is now patched to prevent execution as root. We have the next reasons to do so:
Running apt as root will mess up ownership and SELinux labels in $PREFIX.
Some packages use hooks running during installation or deletion. There is small probability that script may fail and cause massive ownership corruption or even data loss (including device soft bricking) if executed under root.
Can I use Termux packages in my own project?
Yes, you can but with following restrictions:
Your project must comply with license of Termux part you want to reuse.
Your project should not reuse our APT repository - our bandwidth is limited.
All binaries have some Termux-specific paths hardcoded. If your project is going to use a different application package name, you will have to recompile all necessary packages and their dependencies.
Get started with information on developer's wiki pages: https://github.com/termux/termux-packages/wiki.
Why do I keep getting a '/bin/sh bad interpreter' error?
This error is thrown due to access script interpreter at nonexistent location.
Termux does not have common directories like /bin, /sbin, /usr/bin at their standard place. There is an exception for certain devices where /bin is a symbolic link to /system/bin, but that does not make a difference.
Interpreters should be accessed at this directory only:
/data/data/com.termux/files/usr/bin
سه راه برای حل این مسئله وجود دارد:
با استفاده از termux-exec را نصب کنید pkg install termux-exec. این جلسه فعلی را تحت تأثیر قرار نمی دهد ، اما پس از راه اندازی مجدد باید بدون هیچگونه راه اندازی کار کند. اگر Termux شما به روز باشد لازم نیست. اگر هنوز کار نمی کند ، راه حل بعدی را امتحان کنید.
termux-fix-shebangبرای رفع خط shebang پرونده مشخص شده از دستور استفاده کنید.
برای تنظیم یک محیط کلاهبرداری که از یک سیستم پرونده عادی لینوکس در Termux استفاده می کند ، termux-chrootاز تنظیمات بسته استفاده کنید .
چرا فیلمنامه با "اجازه رد" می شود؟
این خطا به این معنی است که پرونده برای اجرا مجاز نیست. به عنوان مثال ، بیت اجرایی تنظیم نشده است یا شما در حال تلاش برای اجرای آن از یک سیستم پرونده ای هستید که noexecگزینه Mount در آن استفاده شده است.
موارد زیر را امتحان کنید:
اگر پرونده در $ HOME یا $ PREFIX قرار دارد ، chmod +rxآن را اجرا کنید .
اگر پرونده روشن است / sdcard (/ ذخیره / تقلید شده / 0) ، آن را به $ HOME منتقل کنید و مانند ویژگی فوق ، خواندن و اجرای آن را اعمال کنید. در غیر این صورت ، مثلاً فایل را با مفسر اجرا کنید sh script.sh.
چرا یک برنامه تدوین شده هشدارهای مربوط به DT_FLAGS_1 = 0x8 را نشان می دهد؟
این هشدار کاملاً بی خطر است و فقط به توسعه دهنده اطلاع می دهد که پیوند دهنده اطلاعات اضافی بلا استفاده را در پرونده اجرایی تشخیص داده است. در مورد DT_FLAGS_1 = 0x8 ، در مورد بخش RTLD_NODELETE ELF هشدار می دهد. علاوه بر DT_FLAGS_1 = 0x8 ، انواع بیشتری از بخش های ELF وجود دارد که توسط لینک دهنده Android اداره نمی شوند.
برای ناپدید شدن این اخطار ، باید از فایل دودویی ابزار "termux-elf-cleaner" و احتمالاً در تمام وابستگی های آن استفاده کنید.
pkg install termux-elf-cleaner
termux-elf-cleaner ./myprogram ./libmysharedlibrary.so
تعداد بخش های پشتیبانی شده ELF با نسخه سیستم عامل Android افزایش می یابد. در Android 7.0 و بالاتر احتمالاً هشدارهای پیوند دهنده را دریافت نمی کنید.
چرا یک عامل اجرایی خطای فرمت Exec را پرتاب می کند؟
شما در حال تلاش برای اجرای باینری کامپایل شده برای معماری متفاوت CPU هستید. به عنوان مثال ، اجرای باینری x86 در ARM و برعکس امکان پذیر نیست.
اگر کد منبع دودویی خود را دارید ، سعی کنید آن را با Android NDK به معماری CPU دستگاه خود که با آن می توانید بررسی کنید دوباره جبران کنید uname -m.
اگر باینری منبع بسته است یا نمی توانید آن را با موفقیت گردآوری کنید ، QEMU را در حالت کاربر امتحان کنید. برای اجرای باینری x86 ، بسته را qemu-user-i386(اگر 32 بیتی) یا qemu-user-x86_64(اگر 64 بیتی باشد) نصب کنید. سپس سعی کنید باینری خود را تحت QEMU به روشی مشابه اجرا کنید qemu-i386 ./myprogram.
چرا یک اجرایی خطای "چنین پرونده یا فهرست" را حتی اگر پرونده وجود نداشته باشد ، پرتاب می کند؟
شما در حال تلاش برای اجرای دودویی کامپایل شده برای توزیع دسک تاپ لینوکس هستید. چنین باینری هایی بصورت پویا با GNU یا Musl libc در ارتباط هستند و با سیستم عامل Android ناسازگار هستند. آنها مسیر لینک دهنده سخت را دارند که در Android وجود ندارد و برنامه کد را با کد خطای ENOENT (پرونده یافت نشد) خاتمه می دهد.
چگونه می توانم یک محیط خراب را تعمیر کنم؟
مقاله اصلی: یک محیط خراب را بازیابی کنید
می توانید از طریق میانبر برنامه ، یک پوسته failsafe را شروع کرده و سعی کنید از آنجا تعمیر کنید. تا زمانی که این متغیرهای محیط تنظیم نشوند ، به ابزارهای Termux دسترسی نخواهید داشت:
صادرات PREFIX = / data / data / com.termux / پرونده / usr
صادرات PATH = $ AT PATH}: $ {PREFIX} / سطل
در مواردی که محیط به دلیل خرابی مدیر بسته یا حذف برخی از پرونده های مهم شکسته شده است ، ساده ترین راه بازیابی پاک کردن کل $ PREFIX ، راه اندازی مجدد برنامه Termux و نصب بسته ها از ابتدا خواهد بود.
اطلاعات بیشتر در زمینه بازیابی یک محیط شکسته موجود است .
چگونه می توانم هنگام نصب مجدد Termux داده های خود را حفظ کنم؟
مقاله اصلی: تهیه نسخه پشتیبان از Termux
معمولاً نیازی به نصب مجدد Termux نیست. برنامه فقط rm -rf $PREFIXو مجدداً راه اندازی مجدد - این محتوای صفحه اصلی $ را لمس نخواهد کرد.
اگر واقعاً می خواهید برنامه را مجدداً نصب کنید ، می توانید محتوای HOME $ بایگانی کرده و آن را در فضای مشترک (/ sccard) ذخیره کنید. دستورالعمل های مربوط به تهیه نسخه پشتیبان از Termux را دنبال کنید .
چگونه می توان دستورات Termux را از برنامه دیگر اجرا کرد؟
در حال حاضر این پشتیبانی نمی شود.
تا زمانی که Termux راه حلی برای کنترل دسترسی حداقل برای هر برنامه نداشته باشد ، این ویژگی اجرا نخواهد شد.
بسیاری از کاربران از آن برای دسترسی به خدمات از راه دور استفاده می کنند و این امر نیاز به ذخیره کلیدهای SSH ، نشانه های API و سایر اطلاعات حساس در خانه HOME دارد. بدیهی است Termux از جدایی امتیاز برخوردار نیست و ما باید به گونه ای از داده های کاربر در برابر چشمان شخص ثالث محافظت کنیم.