Di mana saya harus meletakkan perangkat lunak yang saya kompilasi sendiri?


Jawaban:


90

Rule of thumb, setidaknya pada sistem rasa Debian:

  • /usr/localuntuk hal-hal yang "sistem-lebar" -yaitu /usr/localcenderung berada di default distro $PATH, dan mengikuti hirarki direktori UNIX standar dengan /usr/local/bin, /usr/local/lib, dll

  • /optuntuk hal-hal yang Anda tidak percaya untuk membuat sistem-lebar, dengan awalan-yaitu per-aplikasi /opt/firefox-3.6.8, /opt/mono-2.6.7dan sebagainya. Hal-hal di sini memerlukan manajemen yang lebih hati-hati, tetapi juga lebih kecil kemungkinannya untuk merusak sistem Anda — dan lebih mudah untuk dihapus karena Anda baru saja menghapus folder dan hilang.


Menariknya, banyak program / aplikasi secara otomatis menyarankan untuk menginstal /optjika Anda sudomenginstal.
HongboZhu

50

Jika Anda benar-benar tidak ingin mengganggu sama sekali, jangan taruh di mana pun di Anda $PATH.

Jika Anda menginginkannya $PATH, setidaknya pastikan untuk tidak menginstalnya /usr/local. Saya telah menemukan bahwa banyak perangkat lunak terlihat di sana bahkan jika itu diinstal oleh distro /usr.

Cara favorit saya untuk menginstal perangkat lunak yang dikompilasi khusus ada di $HOMEdirektori saya . Dengan begitu Anda tidak perlu menggunakan sudoapa pun, dan itu sangat baik dipisahkan dari sisa sistem Anda. Sebagai contoh:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

Dan jika Anda mau, Anda bisa menambahkan /home/username/stage/binke $PATH.


1
Jelas, menggunakan direktori home Anda adalah opsi terbaik. IMO.
bitek

1
+1 Setuju. Saya suka ~ / sbin untuk skrip bash / ruby ​​/ python, dan ~ / opt / ... untuk instalasi yang dikompilasi, dengan alias di ~ / bin.
Kris

4
+1 untuk menggunakan direktori home Anda karena membuat semuanya lebih sederhana; -1 untuk saran untuk menghindari $ PATH - sebenarnya ada direktori di sana "disediakan untuk pemasangan lokal" sesuai dengan standar (misalnya, /usr/local).
Riccardo Murri

1
Saran saya untuk menghindari / usr / local didasarkan pada keinginan poster asli (agak kabur) untuk tidak mengganggu perangkat lunak paket. Karena ada banyak paket perangkat lunak yang akan "membantu" dengan melihat / usr / local atau dalam $ PATH, saya pikir itu memenuhi syarat sebagai pengganggu. Tetapi itu benar-benar tergantung pada kebutuhan dan tujuan individu seseorang. / usr / local dapat menjadi pilihan yang sangat bagus dalam banyak situasi.
Sandy

tidak ada yang memperhatikan kesalahpahaman sepenuhnya dari huruf "s" dalam komentar # 2. yang harus dihapus
meffect

20

FHS mengatakan untuk meletakkannya di / usr / local di mana distribusi tidak boleh menyentuhnya. /usr/local/binuntuk binari /usr/local/srcuntuk sumber dan /usr/local/libuntuk perpustakaan. Lihat spesifikasi FHS untuk info lebih lanjut


Bagaimana dengan konfigurasi? Katakanlah saya menginstal MySQL tanpa menggunakan manajer paket, apakah saya masih harus menggunakan /etc/mysqluntuk konfigurasi?
Hubro

Saya hanya melihat ada /usr/local/etcfolder secara default, saya kira saya harus menggunakannya ... :-)
Hubro

10

Sebagian besar waktu, saya suka menempatkan barang-barang kompilasi saya sendiri /opt. Ini semacam tempat pseudo-standar. Anda juga dapat mempertimbangkan /usr/local, tetapi saya lebih suka menyimpan barang-barang saya 100% terisolasi.


1
distro's cenderung memasukkan beberapa hal ke / opt (biasanya paket proprietary) / opt tidak mengatakan bahwa distro tidak dapat menyentuhnya. namun dikatakan bahwa tentang / usr / local
xenoterracide

1
Saya belum pernah melihat distro memasukkan barang /opt, namun saya telah melihat berkali-kali di mana /usr/localberserakan sampah yang memang berasal dari distro
Scott Anderson

distro yang saya gunakan suka meletakkan java di / opt Saya sudah melihat acrobat reader di sana juga. jika mereka meletakkan barang di / usr / local mereka mengabaikan FHS yang mengatakan itu harus aman dari ditimpa dalam pembaruan sistem.
xenoterracide

Untuk masing-masing, kurasa. FHS itu bagus, tapi saya pikir itu kadang-kadang diabaikan.
Scott Anderson

Satu-satunya hal yang pernah saya lihat dalam paket distro /usr/localadalah hierarki direktori yang paralel dengan yang ada di pohon standar, dan mungkin mengindeks file untuk hal-hal seperti TeX.
Phil Miller

9

Tempatkan mereka /usr/local/src.

Apa yang saya lakukan adalah mengekstrak sumber dalam direktori ini. Ini akan membuat jalur seperti

/usr/local/src/postgresql-8.3.7

Lalu saya membuat tautan simbolis untuk itu:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Apakah semua bangunan Anda di /usr/local/src/postgresql.

Melakukan hal-hal dengan cara ini membantu ketika Anda perlu melompati versi dan mendokumentasikan versi apa yang Anda gunakan.


1
+1 untuk menyatakan alasan Anda dan bagaimana OP dapat menerapkannya, termasuk versi.
samt

6

Ini mengingatkan saya, saya perlu lebih sering menggunakan checkinstall ! Dengan begitu saya hanya melakukan hal biasa

 ./configure
 make

diikuti oleh

 sudo checkinstall

untuk membuat file deb . ...


2
Tidak menjawab pertanyaan.
JBentley

5

Jika ada kemungkinan - saya sarankan untuk mengkompilasi perangkat lunak Anda dan kemudian membuat paket FC (saya percaya itu menggunakan yum untuk menginstal paket perangkat lunak). Kemudian Anda dapat menginstal paket perangkat lunak yang Anda buat sendiri dan menghapusnya tanpa mengacaukan seluruh sistem.


5

Jika Anda ingin dapat dengan mudah menginstal dan menghapus beberapa aplikasi yang Anda buat sendiri, Anda dapat menggunakan Stow sebagai manajer paket sederhana.


5

Per FHS , /usr/local/digunakan untuk aplikasi yang dikompilasi dari sumber, sedangkan /opt/digunakan untuk aplikasi pihak ketiga yang tidak didukung oleh vendor sistem operasi Anda.


4

Dua hal yang saya rekomendasikan:

Sistem lebar: gunakan stow dan instal di bawah / usr / local / stow / versi-paket. Maka Anda dapat dengan mudah beralih di antara versi.

Di rumah saya, atau jika saya tidak memiliki izin menulis / usr / lokal, saya secara pribadi menginstal program di bawah ~ / .local, yang diisyaratkan oleh standar XDG .

Anda juga dapat menggunakan stow secara lokal, meskipun saya tidak pernah melakukannya :)


3

Saya memiliki pengaturan yang sedikit berbeda dari kebanyakan orang karena saya melakukan banyak pengembangan. Saya memiliki direktori / home / jackson / bin / yang saya instal dan saya telah mengedit .bashrc saya dengan menambahkan ini:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Saya tidak akan melakukan ini untuk semuanya, tetapi bagus selama pengembangan.


3

Sebenarnya tidak sulit untuk membuat deb atau rpm dari tarball sumber. Dengan begitu, Anda dapat menggunakan fasilitas manajer paket distro Anda untuk menjaga sistem Anda tetap bersih. Inilah yang saya lakukan, sebagian besar waktu: hanya membuat rpm sedikit.


2

jika Anda mengompilasi aplikasi, Anda dapat menambahkan path executable-nya di variabel PATH env Anda. ini tidak akan berdampak pada pengguna lain.


Saya bertanya-tanya mengapa suara turun? +1 untuk jenis "keseimbangan"
phunehehe

Saya juga bertanya-tanya mengapa :-). Saya telah menggunakan solusi yang sama untuk menggunakan cscope di mana saya tidak memiliki izin instal.
Hemant

@ phunehehe Mungkin karena ia bahkan tidak berusaha menjawab pertanyaan. Pertanyaannya menanyakan ke mana harus menempatkan perangkat lunak. Jawaban ini memberikan tip tentang apa yang dapat Anda lakukan setelah Anda menempatkannya di suatu tempat. Ini dapat ditingkatkan dengan memberikan beberapa saran tentang folder mana yang akan digunakan.
JBentley

2

Selalu ada opsi untuk "meletakkannya di tempatnya" tetapi menulis rpm sederhana, pertama.


1

Jika Anda ingin aplikasi Anda tersedia untuk semua pengguna di sistem dan Anda memiliki izin yang diperlukan, gunakan / opt. Jika Anda ingin aplikasi tersedia hanya untuk Anda (dan root), gunakan / home / nama pengguna


0

Cara termudah untuk melakukan ini adalah dengan mengambil paket sumber ( .src.rpmuntuk RPMites), membongkarnya, meretas sumber / konfigurasi baru / apa pun ke dalamnya, mengubah versi tepat dan membangun. Menginstal ini membuat manajer paket Anda menyadari paket baru, memungkinkan untuk mempertimbangkannya untuk dependensi dan menghapus / memperbarui.

Ini adalah tugas pertama kali, tetapi jika versi baru (atau tambalan kritis) keluar, maka lebih mudah untuk memperbarui. Manfaat lain adalah Anda dapat membuat repositori Anda sendiri dengan perangkat lunak lokal, untuk dibagikan misalnya oleh mesin-mesin di lab.


0

Menulis RPM, tidak sulit, memiliki pedoman di mana harus meletakkan barang-barang dan membuat menghapus instalan cepat.

Jika Anda melakukan ini, instal file di bawah /usrdan tidak di bawah /usr/local, seperti semua file lain yang datang melalui sistem pengemasan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.