Linux: Sistem File Case-INSENSITIVE

13

Metode apa yang ada untuk membuat sistem file Linux case-INSENSITIVE?

Saya memiliki aplikasi asp.net yang dikembangkan di Windows, tetapi selalu ada masalah dengan kapitalisasi / ejaan pada mono saat meletakkannya di Linux.

Salah satu caranya adalah dengan me-mount share SMB localhost ke / var / www. Apakah ada yang lain?

Kebingungan
sumber
14
Bukankah lebih mudah untuk memperbaiki aplikasi daripada meretas os untuk mengatasi aplikasi yang rusak?
Aaron Tate
2
Apakah aplikasi web ini dilayani melalui apache, Anda dapat menggunakan mod_speling.
Zoredache
2
Ini kedengarannya seperti kasus yang cukup jelas, "Atau Anda dapat mengajari pengembang web Anda untuk konsisten dengan penamaan file mereka, tentang rasa sakit yang menyakitkan"
Shadur

Jawaban:

15

Jika Anda hanya berbicara tentang ketidakpekaan huruf HANYA dalam aplikasi yang berjalan di bawah Mono, Anda dapat menggunakan IOMAPvariabel lingkungan untuk memberi tahu mono untuk mengabaikan kasus seperti halnya Windows.

Lihat detail penggunaannya di sini: http://www.mono-project.com/IOMap

tylerl
sumber
15

Ada driver ext3 case yang tidak sensitif , tetapi, terus terang, menjalankan hal seperti itu dalam produksi akan membuat saya sedikit takut, karena Anda sedang menggulir kernel kustom Anda sendiri dengan driver yang di-patch-in. (Ya, ya-- kami melakukan itu sepanjang waktu "kembali pada hari itu", tapi itu, seperti, 1997 ...)

Ada implementasi FUSE, ciopfs , yang mengimplementasikan ketidakpekaan kasus juga. Itu akan jauh lebih menakutkan bagi saya untuk digunakan dalam produksi daripada kernel yang ditambal.

Anda juga bisa menggunakan sistem file case-insensitive, seperti VFAT, untuk /var/wwwhierarki folder. Saya akan menggunakan mount loopback dalam kasus itu, sehingga Anda tidak perlu mengacaukan partisi disk Anda.

Evan Anderson
sumber
ciopfs adalah omong kosong, saya mencobanya, ia hanya memetakan huruf kecil ke huruf kecil, mengabaikan huruf besar ...
Quandary
1
@Quandary Run awk '/^ciopfs/ {print $2}' /proc/mountsdan itu akan menampilkan nama direktori yang akan digunakan. Setelah Anda menjalankan ciopfs a/ b/Anda tidak boleh mengakses atau memodifikasi file di bawah a/.
@ Pertanyaan kendala huruf kecil ditulis tepat di halaman proyek dan cukup jelas tbh, apakah Anda mencoba memperbaikinya untuk menangani kasus penggunaan Anda atau setidaknya RTFM sebelum digunakan?
Michael Shigorin
8

Necromancing.
Menjawab pertanyaan saya sendiri.
Ini memang mungkin.
Varian 1:
Buat file .dsk dengan ukuran X-MB (dengan dd), lalu buat sistem file JSF pada file itu, dengan opsi O (kompatibilitas OS2 - = tidak sensitif huruf besar-kecil)
Kemudian lakukan loop-mount file tersebut ke folder yang diinginkan .

(apt-get install jfsutils)
dd if=/dev/zero of=jfs.dsk bs=1048576 count=150
mkfs.jfs -O jfs.dsk
mkdir -p /mnt/jfs
mount /volumes/jfs.dsk /mnt/jfs -t jfs -o loop
umount /mnt/jfs/

Varian 2:
Ketika Anda menginstal OS, mempartisi disk secara manual, dan membuat partisi lain dengan format JFS, yang Anda pasang ke mana pun Anda ingin memilikinya.
Ketika semuanya sudah berjalan dan berjalan, Anda dapat memformat ulang partisi itu dengan (peringatan - ini akan menghapus semua data di partisi itu - pastikan Anda memilih yang tepat, dan belum memiliki data di dalamnya):

unmount partisi yang dipasang

umount /web

memformat ulang:

mkfs.jfs -O /dev/hda5

remount partisi

mount /dev/hda5 /web

Sekarang jalankan

blkid

dan Anda mendapatkan partisi-uuid baru.
Sekarang buka / etc / fstab, dan ganti uuid lama untuk / dev / hda5 dengan yang baru.

Jika Anda melakukan kesalahan ini, lihat juga
Selamat datang di mode boot darurat ...

Kebingungan
sumber
Jadi, Anda sudah berurusan dengan ini selama tujuh setengah tahun?!?! Anda akan berpikir sekarang "pengembang" yang Anda hadapi akan berhasil keluar dari sekolah dasar / dasar.
Andrew Henle
3
@Andrew Henle: Tidak, kami sebenarnya memilih solusi lain - partisi windows case-sensitive (ext3). Sekarang masalah muncul kembali dengan .NET Core, dan ini adalah solusi yang saya buat. Sekarang saya memiliki partisi Linux yang tidak case-sensitive tanpa memerlukan fuse / ciops, smb, hfs / hpfs +, extX-fs yang diretas, loop mount atau semua omong kosong itu. Ini cara yang tepat. Dan sejauh ini, tidak ada yang benar-benar menjawab pertanyaan dengan memuaskan dalam 7 tahun terakhir, jadi saya pikir saya akan melakukannya.
Quandary