Lokasi standar untuk menyimpan file sumber perangkat lunak

16

Apakah ada lokasi standar di Linux untuk menyimpan file sumber misalnya OpenSSL . Saya membangun Nginx dari sumber dengan versi OpenSSL yang tidak standar. Saya perlu mengunduh dan menghapus OpenSSL dan saya melakukannya di direktori home. Sekarang, saya bertanya-tanya apakah mungkin ada lokasi standar di Linux /opt?

pengguna3448600
sumber
1
Karena terdon menulis / usr / src adalah lokasi standar, dan di sini Anda dapat menemukan direktori untuk sumber kernel (/ usr / src / linux yang terhubung ke / usr / src / linux-versi) dan misalnya X11. Kode sumber untuk paket yang diinstal secara lokal (/ usr / local) lebih cocok di / usr / local / src. Jika Anda ingin membuat sendiri paket "secara manual", membuat direktori src di homedir Anda mungkin merupakan ide yang bagus ... Ingat Anda tidak boleh mengunduh, membongkar atau membangun sebagai root - hanya instal! Jika Anda membuat paket deb / rpm, direktori build sementara (mis. Under / var / tmp) biasanya digunakan sebagai gantinya. TBC
Baard Kopperud
Jika Anda membuat dan menginstal paket - atau membuat paket (rpm / dem) - sendiri, Anda biasanya tidak memerlukan kode sumber lagi setelah diinstal. Alasan mengapa Anda mungkin memiliki kode sumber untuk beberapa paket - seperti kernel atau X11 - di bawah / usr / src (atau / usr / local / src jika dibuat secara lokal), sebagian besar karena Anda mungkin membutuhkannya jika Anda sedang membuat (atau menulis) beberapa paket perangkat lunak sendiri (mis. beberapa file header yang tidak jelas dari kernel, cocok dengan pengaturan sistem Anda yang sebenarnya). (Tentu saja, Anda akan membutuhkannya jika Anda ingin membangun kernel Anda sendiri juga ...) Tetapi ini berlaku untuk beberapa paket.
Baard Kopperud

Jawaban:

20

Setiap kali Anda bertanya pada diri sendiri sesuatu seperti ini, periksa Filesystem Hierarchy Standard (FHS). Di sana, Anda akan menemukan entri berikut:

usr / src: Kode sumber (opsional)

Tujuan

Kode sumber dapat ditempatkan di subdirektori ini, hanya untuk tujuan referensi

Jadi Anda dapat menempatkan file sumber Anda di subdirektori /usr/src. Yang mengatakan, ini adalah direktori opsional sehingga Anda dapat menyimpannya di mana pun Anda suka. Kode sumber tidak relevan setelah Anda mengkompilasinya menjadi executable sehingga sistem tidak akan pernah membutuhkan sumber sesuatu untuk dapat diakses di lokasi tertentu.

Kesimpulannya: /usr/srcadalah lokasi yang cukup standar tetapi jangan ragu untuk memilih sendiri jika Anda mau.

terdon
sumber
6
Perlu diketahui bahwa Anda benar - benar tidak ingin main-main dengan /usr/srcsistem non- Linux. BSD menyimpan sumber sistem dasar mereka di sana secara default dan Anda tidak ingin mencampurkannya dengan perangkat lunak pihak ketiga. Bangun saja di $HOMEsuatu tempat ...
Kusalananda
1
Hal yang sama berlaku untuk beberapa sub direktori dari /usr/srcturunan Debian, jika Anda memiliki paket tertentu yang diinstal ( gcc-6-source,, binutils-sourcepaket DKMS, header kernel, dll.). Di Debian, ada fitur bagus di mana Anda dapat menambahkan diri Anda ke srcgrup yang memiliki /usr/src, dan kemudian hanya menulis di sana sebagai diri sendiri (tanpa perlu sudoatau apa pun).
Stephen Kitt
Dan di Fedora, Anda tidak boleh menyentuh /usr/src/debugdan /usr/src/kernels(AFAICS).
Stephen Kitt
+ Msgstr "Kode sumber dapat ditempatkan di tempat". Apakah "tempat diletakkan" salah ketik, atau apakah saya melewatkan sesuatu?
Faheem Mitha
3
Saya akan melangkah lebih jauh dan mengatakan Anda seharusnya tidak benar-benar menyentuh /usrpada sistem apa pun. Anda harus memasukkan semuanya /usr/local. Apakah BSD keberatan Anda menggunakan /usr/local/src?
Muzer
13

/usr/local/srcadalah tempat yang aman untuk menyimpan kode sumber, dan membangunnya juga. FHS mengatakan :

Directory   Description  
src         Local source code

dan juga

Hirarki / usr / lokal untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara lokal. Itu harus aman dari ditimpa ketika perangkat lunak sistem diperbarui.

Tidak jelas apa yang dimaksud dengan "kode sumber lokal", tetapi jelas sistem tidak akan mencoba menempatkan apa pun di dalamnya /usr/local/src, tidak seperti /usr/src, jadi sepertinya ada sedikit kelemahan untuk meletakkan kode di sana.

Bahkan, saya punya milik saya di sistem file yang terpisah:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

Catatan: setidaknya di Debian, pengguna Anda perlu ditambahkan ke staffgrup untuk menulis /usr/local.

Faheem Mitha
sumber
+1 untuk menunjukkan /usr/local/srcsementara jawaban lainnya hanya membahas/usr/src
MattSturgeon
Adapun apa yang dimaksud dengan "kode sumber lokal", secara umum berarti dikendalikan oleh sysadmin lokal dan bukan oleh distribusi . Sama seperti yang lainnya di bawah /usr/local(dalam teori). Jadi pada dasarnya itu berarti persis apa yang Anda gambarkan.
MattSturgeon
9

Jika dengan "standar" yang Anda maksud konvensional, maka tempat untuk membongkar dan membangun kode sumber adalah direktori home Anda. File-file tersebut diharapkan bersifat sementara, dihapus ketika Anda selesai, atau disimpan jika Anda suka, terorganisir sesuka Anda. Direktori rumah Anda adalah area Anda untuk bermain dengan semua hal semacam ini.

Jika Anda ingin menyimpannya setelah itu, untuk referensi , " Filesystem Hierarchy Standard " merekomendasikan /usr/src. Namun, ini bukan panduan hukum; dan, jika Anda terbiasa dengan kebiasaan ini kemudian menjelajah ke sistem non-Linux, Anda dapat menyebabkan masalah dengan mengikutinya. Misalnya, pada sistem BSD, sumber sistem dasar disimpan di sana dan Anda benar-benar tidak ingin mengacaukannya. Bahkan di Linux Anda dapat menjalankan risiko berbaur dengan sumber apa pun yang disimpan oleh manajer paket, yang tidak diinginkan.

Saya akan merekomendasikan untuk menghindari /usr/srckeseluruhan. Tidak ada manfaat yang jelas untuk menyimpan apa pun di sana sama sekali, dan risiko potensial jika Anda mengacaukan arti yang dimaksud.

Lightness Races dengan Monica
sumber
5

Anda dapat menggunakannya /usr/srckarena tempat ini terdengar masuk akal dan distribusi berbasis rpm menggunakannya untuk menyimpan konten paket srpm di sana. Tapi tempat lain seperti /opt, /usr/local, ~/srcbaik

Romeo Ninov
sumber
"Distribusi berbasis rpm menggunakannya untuk menyimpan konten paket srpm di sana." Itulah mengapa Anda tidak harus menyimpan sumber non-distro Anda sendiri di sana dan lebih baik menggunakan / usr / local. - "Itu pasti tempat yang bagus untuk menyimpan barang-barang, dengan semua forklift di sekitarnya yang tampaknya memiliki pendapat yang sama ...."
rackandboneman