Apa --prefix lakukan dengan tepat saat digunakan di ./configure?

29

Jadi saya hanya punya pertanyaan sederhana yang mungkin akan membuat saya terlihat bodoh, tetapi saya sedang belajar

Ketika saya melakukan

./configure --prefix/usr/bin/

Apa yang dilakukan awalan? Apakah ini hanya menginstal paket ke lokasi itu

Dan dapatkah balasan memberikan lebih banyak jawaban rumit untuk pemasangan yang rumit dan menjelaskan secara rinci awalan dan opsi yang menyertainya.

Jika saya menjalankan instalasi apt-get, bagaimana saya menginstalnya ke lokasi tertentu dengan awalan

Saya juga sudah melihat

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Jika awalan dipanggil ./configure mengapa selalu dibuat dalam dua contoh ini?

Terima kasih sebelumnya!


sumber
Beberapa info di sini: Standar Pengkodean GNU: Variabel Direktori
steeldriver
periksa jawaban yang diperbarui
luv.preet
freetds.org/userguide/config.htm , ini akan membantu Anda lebih banyak
luv.preet
Peninjau: Ini tentang menginstal perangkat lunak . Ini memiliki tiga suara dekat di luar topik sebagai "bukan tentang Ubuntu." Jika penutupan ini entah bagaimana konsisten dengan apa yang sebenarnya situs kebijakan , saya sarankan berkomentar. Kalau tidak, ini kemungkinan akan dibuka kembali bahkan jika ditutup.
Eliah Kagan

Jawaban:

32

Ketika Anda menginstal perangkat lunak dengan make installatau sudo make install, file yang berbeda ditempatkan di direktori yang berbeda. Executables yang memberikan perintah yang dimaksudkan untuk dijalankan oleh pengguna biasanya masuk dalam bindirektori, perpustakaan biasanya masuk dalam libdirektori, halaman manual biasanya masuk dalam mandirektori, dan sebagainya.

Ketika Anda menjalankan ./configure, yang --prefixpilihan memungkinkan Anda menentukan di mana mereka direktori adalah . Disebut demikian --prefixkarena memungkinkan Anda memberikan awalan yang muncul di jalur ke setiap direktori tempat file dari program atau pustaka yang sedang Anda bangun harus diinstal. Sebagian besar configureskrip mendukung --prefix, dan menghilangkannya dan hanya menjalankan ./configurebiasanya setara dengan ./configure --prefix=/usr/local.

Untuk menjawab ini lebih lengkap, saya telah mereproduksi dua bagian dari jawaban saya ke Bagaimana cara menginstal file tar "secara global"? (di Unix & Linux ), yang menjawab pertanyaan ini secara khusus:

Mengkonfigurasi Bangunan Anda

Ketika Anda memiliki kode sumber yang dikompilasi dengan menjalankan ./configure dan make, Anda biasanya akan menggunakan make install(atau sudo make install) untuk menginstalnya. Ini menyalin file dari direktori build ke lokasi instal. Ketika hal yang Anda instal menyediakan perintah yang dapat dieksekusi, file yang dapat dieksekusi tersebut biasanya disalin ke direktori yang ada $PATHatau yang harus Anda pertimbangkan untuk ditambahkan $PATH.

Meskipun membangun dan menginstal perangkat lunak seringkali sesederhana menjalankan ./configure,, maketerkadang make checkatau make test, dan kemudian make installatau sudo make install, Anda terkadang ingin meneruskan opsi ke configureskrip untuk mengonfigurasi pembuatan. Secara khusus, seperti yang dikatakan pfnuesel , ini adalah bagaimana Anda mengkonfigurasi di mana perangkat lunak akan diinstal. Meskipun make installlangkah tersebut benar-benar menginstal perangkat lunak, lokasi di mana semuanya akan diinstal biasanya ditetapkan dalam ./configurelangkah tersebut.

Opsi paling umum untuk ini adalah --prefix. Awalan default, ketika Anda tidak memberi tahu configureapa yang harus digunakan, biasanya /usr/local. (Kadang-kadang, kode sumber program atau pustaka default untuk beberapa awalan lainnya. Untungnya ini jarang terjadi.)

Jadi ./configurebiasanya setara dengan ./configure --prefix=/usr/local. Untuk menginstal perangkat lunak di direktori home Anda, Anda dapat menggunakan ./configure --prefix=/home/galahad(apakah /home/galahaddirektori home Anda) atau --prefix="$HOME". Maka tentu saja Anda masih harus membangun dan menginstal perangkat lunak dengan make. Saya harus mengatakan bahwa tidak semua perangkat lunak yang didistribusikan dalam bentuk kode sumber dibangun dengan cara ini. Anda harus selalu mencari dokumentasi di dalam arsip kode sumber yang diekstraksi.

Apa --prefixartinya

Ketika Anda menjalankan , Anda menunjukkan bahwa perangkat lunak harus diinstal di bawah direktori. Tetapi ini jarang, jika pernah, menempatkan file longgar di . Sebagai gantinya, ia menempatkan file yang melayani tujuan yang berbeda di subdirektori yang berbeda di . Jika subdirektori tersebut tidak ada, itu membuatnya../configure --prefix=directorydirectorydirectorydirectory

Executable biasanya masuk directory/bin, meskipun mereka bisa masuk directory/sbinjika mereka biasa digunakan untuk administrasi sistem atau mereka dapat pergi (lebih jarang, hari ini) directory/gamesjika mereka adalah permainan. Perpustakaan masuk directory/libatau direktori lain yang mirip seperti directory/lib32. File header masuk directory/include. Halaman manual masuk directory/man. File data yang digunakan oleh perangkat lunak masuk directory/share.

Itulah artinya directorymenjadi awalan . Direktori induk yang berisi lokasi tempat berbagai file akan diinstal. Dengan demikian muncul sebagai awalan di jalur absolut dari sebagian besar file dan direktori yang dibuat dengan menjalankan make install atau sudo make install.

Ada beberapa pengecualian untuk ini. File konfigurasi di seluruh sistem - yang terkadang dibuat saat menginstal perangkat lunak yang akan menggunakannya, meskipun tidak selalu - biasanya masuk /etc. Ini biasanya tidak terpengaruh dengan menentukan awalan yang berbeda. Bahkan jika Anda menginstal banyak perangkat lunak /usr/local, sebagian besar masih akan digunakan /etc, dan /usr/local/etcdirektori Anda mungkin tidak ada, kosong, atau mengandung sangat sedikit file.

Pada banyak sistem, Anda dapat menemukan informasi lebih lanjut tentang tata letak sistem file yang khas dengan menjalankan man hier. Jika Anda menggunakan sistem GNU / Linux Anda mungkin tertarik pada Filesystem Hierarchy Standard .

Eliah Kagan
sumber
2

Ini memberitahu lokasi hal-hal yang diperlukan untuk mengkonfigurasi paket atau perangkat lunak saat ini.

Seperti dalam kasus sederhana, ini dapat memberi tahu lokasi perpustakaan ssl:

--with-libssh2=/usr/local  #used in configuring nagios

dan itu juga memberi tahu paket mana yang tidak dikonfigurasikan, untuk membuat kompilasi program yang sesuai dengan sistem Anda:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Ini hanyalah opsi tambahan untuk membuat kompilasi cocok untuk sistem Anda. Itu yang saya pikirkan. Perbaiki saya jika itu adalah sesuatu yang lain.

The --prefix=PREFIXpilihan menginstal file independen arsitektur PREFIX. Saat Anda menjalankan make installperintah, pustaka akan ditempatkan di PREFIX/libdirektori, executable di PREFIX/bindirektori dan sebagainya.

Jika argumen ini tidak diteruskan ke configureperintah maka nilai defaultnya adalah /usr/local.

luv.preet
sumber