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.

directhex
sumber
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.

Sandy
sumber
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

xenoterracide
sumber
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.

Scott Anderson
sumber
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.

Stephen Jazdzewski
sumber
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 . ...

Kevin Cantu
sumber
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.

Eimantas
sumber
5

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

Daniel James
sumber
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.

Aaron Toponce
sumber
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 :)

elmarco
sumber
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.

jacksonh
sumber
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.

wzzrd
sumber
2

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

Hemant
sumber
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.

Nils
sumber
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


sumber
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.

vonbrand
sumber
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.

user55149
sumber