it-swarm-id.com

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

Saya perlu mengkompilasi beberapa perangkat lunak pada mesin Fedora saya. Di mana tempat terbaik untuk meletakkannya agar tidak mengganggu perangkat lunak yang dikemas?

130
theotherreceive

Rule of thumb, setidaknya pada sistem rasa Debian:

  • /usr/local untuk hal-hal yang merupakan "sistem-lebar" —i.e. /usr/local cenderung berada di distro default $PATH, dan mengikuti hierarki direktori UNIX standar dengan /usr/local/bin, /usr/local/lib, dll.

  • /opt untuk hal-hal yang tidak Anda percayai untuk membuat seluruh sistem, dengan awalan per-aplikasi — yaitu. /opt/firefox-3.6.8, /opt/mono-2.6.7, dan seterusnya. 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.

92
directhex

Jika Anda benar-benar tidak ingin mengganggu sama sekali, jangan letakkan di manapun di $PATH Anda.

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

Cara favorit saya untuk menginstal perangkat lunak yang dikompilasi khusus ada di direktori $HOME Saya. Dengan begitu Anda tidak perlu menggunakan Sudo untuk apa pun, dan itu dipisahkan dengan sangat baik dari sistem Anda yang lain. Sebagai contoh:

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

Dan jika Anda mau, Anda dapat menambahkan /home/username/stage/bin Ke $PATH Anda.

50
Sandy

FHS mengatakan untuk meletakkannya di/usr/local di mana distribusi tidak boleh menyentuhnya. /usr/local/bin untuk binari /usr/local/src untuk sumber dan /usr/local/lib untuk perpustakaan. Lihat spec FHS untuk info lebih lanjut

21
xenoterracide

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

10
Scott Anderson

Taruh di /usr/local/src.

Apa yang saya lakukan adalah mengekstrak sumber di 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

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

9

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

 ./configure
 make

diikuti oleh

 Sudo checkinstall

untuk membuat file . deb ...

6
Kevin Cantu

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

5
Aaron Toponce

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
Eimantas

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

5
Daniel James

Dua hal yang saya rekomendasikan:

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

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

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

4
elmarco

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.

3
wzzrd

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, tapi itu bagus selama pengembangan.

3
jacksonh

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

2
Hemant

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

2
Nils

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

1
Silviu Bogan

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 /usr dan bukan di bawah /usr/local, seperti semua file lain yang datang melalui sistem pengemasan.

0
user55149

Cara termudah untuk melakukan ini adalah dengan mengambil paket sumber (.src.rpm untuk RPMites), buka paketnya, retas sumber/konfigurasi baru/apa pun ke dalamnya, ubah versinya dengan tepat dan bangun. Menginstal ini membuat manajer paket Anda menyadari paket baru, memungkinkan untuk mempertimbangkan 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 di laboratorium.

0
vonbrand