Termux Üzerinde Rust Geliştirme ve `cargo run` Sorunu
Rust dilinde Android cihaz üzerinde Termux kullanarak proje geliştirmeye başladıysanız ve cargo run
komutu sırasında izin hatası (permission error) aldıysanız, yalnız değilsiniz. Bu yazıda, sorunun nedenini ve pratik bir çözüm yolunu detaylı şekilde açıklıyorum.
🚫 Sorun: cargo run
Komutu Çalışmıyor
Hata Özeti:
error: failed to run `rustc` to learn about target-specific information
Caused by: Permission denied (os error 13)
Bu hata genellikle şu durumlarda ortaya çıkar:
- Termux, Android dosya sisteminde sınırlı yetkiyle çalışır.
cargo
derleyicisi (özelliklerustc
) proje sırasında bazı dosyalarıtarget/
dizinine yazmak ister.- Android, güvenlik nedeniyle bu dosya işlemlerini engeller.
Teknik Arka Plan
Rust’ın derleme sistemi, incremental compilation (artımlı derleme) yöntemini kullanır. Bu, daha hızlı derleme süresi sağlamak için proje derleme geçmişini target/
klasörüne önbellek olarak yazar.
Ancak, Android'in dosya izin politikaları nedeniyle bu işlemler engellenir. Özellikle root erişimi olmayan cihazlarda cargo
bu geçici dosyaları yazamaz ve derleme başarısız olur.
✅ Çözüm: Incremental Compilation Özelliğini Kapatın
Bu özelliği devre dışı bırakarak, cargo
önbellek oluşturmadan doğrudan derleme yapar. Bu da Android üzerinde dosya erişim problemi yaşanmadan çalışmasını sağlar.
Adımlar:
- Proje dizininde
.cargo/config.toml
dosyasını oluşturun (veya mevcutsa düzenleyin).
[build]
incremental = false
- Ardından terminalden aşağıdaki komutları çalıştırın:
cargo clean
cargo check
- Artık
cargo run
komutunu tekrar deneyin:
cargo run
Her şey doğru şekilde ayarlandıysa bu sefer hata almadan projeniz başarıyla çalışacaktır.
🎯 Ek Tavsiyeler
.cargo/config.toml
dosyası proje klasörünüzde yoksa elle oluşturabilirsiniz.- Alternatif olarak bu ayarı sistem geneline yaymak isterseniz:
~/.cargo/config.toml
dizinine de aynı şekilde yazabilirsiniz.