Bagaimana distribusi yang berbeda memodifikasi lokasi file config untuk program?

14

Banyak program Linux menyatakan bahwa lokasi file konfigurasi bergantung pada distribusi. Saya bertanya-tanya bagaimana distribusi yang berbeda melakukan ini. Apakah mereka benar-benar mengubah kode sumber? Apakah ada parameter build yang menetapkan lokasi ini? Saya telah mencari ini tetapi tidak dapat menemukan informasi. Saya tahu itu di luar sana, sepertinya saya tidak dapat menemukannya. Apa "cara Linux" dalam hal ini?

bfvanrooyen
sumber

Jawaban:

14

Itu tergantung pada distribusi dan sumber asli ('hulu').

Dengan sebagian besar paket autoconf- dan automake-use, dimungkinkan untuk menentukan direktori di mana file-file konfigurasi akan dicari menggunakan --sysconfdirparameter. Sistem build lainnya (mis., CMake) memiliki opsi yang serupa. Jika paket source menggunakan salah satu dari sistem build tersebut, maka packager dapat dengan mudah menentukan parameter yang tepat, dan tidak diperlukan patch. Bahkan jika mereka tidak (misalnya, karena sumber upstream menggunakan beberapa sistem build buatan sendiri), seringkali masih mungkin untuk menentukan beberapa konfigurasi build untuk memindahkan file konfigurasi ke lokasi tertentu tanpa harus menambal sumber upstream.

Jika bukan itu masalahnya, maka seringkali distribusi memang harus menambahkan tambalan ke sumber untuk membuatnya memindahkan file dalam apa yang mereka anggap sebagai lokasi 'benar'. Dalam kebanyakan kasus, pembuat paket distribusi kemudian akan menulis sebuah tambalan yang akan memungkinkan sumber untuk dikonfigurasikan dalam pengertian di atas, sehingga mereka dapat mengirim tambalan tersebut ke pengelola upstream, dan tidak harus terus memelihara / memperbaruinya. Ini adalah kasus untuk lokasi file konfigurasi, tetapi juga untuk hal-hal lain, seperti bin/ sbinexecutable (interpretasi dari apa yang merupakan perintah administrator sistem berbeda antara distribusi), lokasi tempat menulis dokumentasi, dan sebagainya.

Catatan: jika Anda mempertahankan beberapa perangkat lunak bebas, silakan membuatnya mudah bagi pembuat paket untuk berbicara dengan Anda. Kalau tidak, kita harus mempertahankan tambalan seperti itu tanpa alasan yang kuat ...

Wouter Verhelst
sumber
8

Mereka memiliki tambalan yang diterapkan pada pohon kode sumber yang mengadaptasi lokasi.

Ada cukup "standar" yang tersedia sehingga setiap distribusi dapat memilih berdasarkan preferensi (pribadi) dan / atau praktik historis. Jarang ada solusi yang hanya memiliki kelebihan. Itu kadang-kadang menjengkelkan / membingungkan, tetapi konsistensi dalam satu distribusi adalah tujuan yang paling penting: itu mengarah ke kurang berantakan dan lebih mudah menebak di mana hal-hal yang mungkin untuk program Y jika Anda sudah tahu di mana hal-hal serupa (setup / file konfigurasi misalnya) untuk program X.

Contoh aplikasi tambalan

Paket python saya ruamel.yamltersedia di Debian Sid. Dulu bergantung pada ruamel.base, dan pengguna yang diinstal melalui PyPI mungkin masih memiliki versi yang lebih lama, tidak kompatibel, ruamel.basediinstal. Menggunakan setup.py/ PyPI bukanlah manajemen paket yang sebenarnya, jadi Anda tidak dapat menghapus paket yang sebelumnya diinstal melalui dependensi. Saya memecahkan masalah untuk pengguna PyPI dengan membuat versi yang lebih baru ruamel.baseyang menghapus masalah yang terkait dengan ruamel.basepaket yang lebih lama dan membuat ruamel.yamlketergantungan pada versi yang lebih baru.

Untuk Sid, ini bukan masalah: versi yang lebih lama ruamel.basetidak diinstal (atau dapat dihapus melalui manajemen paket). Oleh karena itu mereka menerapkan tambalan , yang dapat Anda temukan di ruamel.yamlhalaman informasi untuk Sid yang menghilangkan ketergantungan ruamel.yamlpada ruamel.base.

Distribusi lain memiliki pengaturan serupa. Misalnya, jika Anda melihat spesifikasi membuat file RPM sumber (misalnya untuk RedHat / CentOS / SuSE), Anda akan melihat bahwa Anda menggabungkan tarball asli asli dari sebuah paket dengan satu atau lebih tambalan yang akan diterapkan sebelum mengkonfigurasi / mengkompilasi .

Anthon
sumber