Bagaimana saya tahu di mana harus meletakkan sesuatu di linux?

58

Menginstal sesuatu di windows membutuhkan klik tombol. Tetapi setiap kali saya mencoba menginstal sesuatu di linux, yang tidak ditemukan di APT, saya jadi bingung.

Anda mengunduh folder zip, lalu apa? Jika Anda beruntung ada README, merujuk pada beberapa dokumentasi, yang mungkin membantu Anda, jika Anda beruntung.

Apa trik sulap ketika "menginstal" ekstensi dan aplikasi yang tidak ditemukan di APT?

Saya suka linux, tetapi masalah ini menghantui saya setiap hari.

Marcus Johansson
sumber
8
Keluar topik. Tetapi trik sederhana adalah tidak pernah menginstal apa pun di luar sistem manajemen paket.
Let_Me_Be
1
Jika ini bukan dari APT maka itu mungkin bukan sesuatu yang bisa Anda instal - Anda harus mengkompilasi dan menginstalnya sendiri. Dan itu akan mulai menjadi bingung dengan paket berbasis APT. Ini paling sederhana untuk hanya menemukan APT /. Debs untuk apa pun yang Anda butuhkan sejauh yang Anda bisa.
Rup
2
@Rup Plus jika perangkat lunak tidak memiliki paket deb, Anda mungkin tidak boleh menginstalnya, karena itu sesuatu yang sudah usang, atau berdarah, atau tidak kompatibel dengan distribusi berbasis apt.
Let_Me_Be
3
Setelah Anda mendapatkan pengalaman yang cukup dengan membangun / menginstal perangkat lunak, Anda bisa membuat paket sendiri. Pastikan untuk memberikan umpan balik kepada penyedia hulu!
jsbillings

Jawaban:

32

Jika itu adalah perangkat lunak yang menaati Filesystem Hierarchy Standard daripada Anda harus menempatkannya di /usr/localdan subdirektori yang tepat (seperti bin, lib, share, ...).

Perangkat lunak lain harus ditempatkan di direktori mereka sendiri di bawah /opt. Kemudian atur PATHvariabel Anda untuk memasukkan bindirektori atau direktori apa pun yang menyimpan file executable, atau buat tautan simbolis /usr/local/bin.

Martin Scharrer
sumber
1
Jawaban yang bagus, sungguh, tetapi orang tidak harus melakukannya setiap hari.
phunehehe
1
@ phunehehe - Anda harus melakukannya setiap hari?
Rob
3
Tidak, saya merujuk pada OP "masalah ini menghantui saya setiap hari".
phunehehe
1
Selain tautan wikipedia ke FHS, baca juga tautan ini: pathname.com/fhs/pub/fhs-2.3.html . Baca bagian yang mengatakan "Tujuan".
yasouser
27

Tidak ada jawaban sederhana untuk pertanyaan ini, tetapi saya dapat memberi Anda gambaran umum tentang cara kerjanya:

Sebagian besar perangkat lunak Linux disediakan oleh penulis ("upstream") dalam bentuk kode sumber. Ini memungkinkan setiap orang yang memiliki kompiler untuk platform dan konfigurasi sistem khusus mereka untuk mengunduh kode sumber dan mengkompilasinya sendiri. Sayangnya untuk Anda, banyak program bergantung pada fungsi yang disediakan oleh program lain dan pustaka perangkat lunak (dependensi).

Perangkat lunak Windows biasanya datang dalam bentuk yang dikompilasi. Itu berarti ada satu file yang dapat dieksekusi generik untuk semua komputer Windows, dan dependensi sering menyertainya dalam paket instal.

Distribusi Linux mengambil kode sumber, precompile untuk Anda dan menawarkannya kepada Anda sebagai paket juga. Paket tidak termasuk dependensi, tetapi merujuk pada mereka dan memaksa sistem paket untuk menginstalnya juga (yang kadang-kadang dapat menyebabkan kekacauan yang mungkin sudah Anda alami sendiri).

Jika tidak ada paket yang dikompilasi, Anda selalu dapat mengunduh kode sumber dan mengompilasinya sendiri. Sebagian besar waktu, yang berikut ini akan berfungsi:

./configure
make
(sudo) make install (or sudo checkinstall)

Baris ./configure menetapkan tahapan untuk proses kompilasi (dan meludahkan kesalahan jika dependensi tidak terpenuhi). Baris make akan menjalankan Makefile, sebuah skrip yang mengkompilasi semua bagian dari program.

Secara tradisional, Anda akan menggunakan make install untuk kemudian menginstal perangkat lunak. Ini biasanya menempatkan executable di / usr / local / bin.

Karena Anda menggunakan apt, saya sangat merekomendasikan untuk mendapatkan checkinstall. Anda dapat menggunakannya sebagai ganti make install, dan itu akan menghasilkan paket deb. Untuk Anda. Ini membuatnya lebih mudah untuk menghapus perangkat lunak dengan bersih di kemudian hari.

Perhatikan bahwa ada beberapa sistem kompilasi lainnya, misalnya cmake; dan beberapa perangkat lunak telah dikompilasi tetapi tidak dikemas (dalam hal ini Anda dapat memulainya langsung dari folder yang tidak di-zip); dan beberapa perangkat lunak hadir sebagai kumpulan skrip yang harus Anda jalankan sendiri. Kode baru dari SVN kadang-kadang datang tanpa mengkonfigurasi skrip, jadi Anda harus terlebih dahulu menjalankan autoconf toolchain ... dll, dll ... Anda melihat ada banyak pengecualian pada aturan, tetapi dengan sedikit pengalaman Anda akan dapat katakan apa yang harus dilakukan dengan sebagian besar unduhan misterius itu. Configure-Make-Checkinstall adalah awal pertama yang baik.

PS. Habiskan satu atau dua akhir pekan untuk belajar bagaimana memprogram diri sendiri, dan segalanya akan menjadi sangat jelas :-)

PPS. Anda mungkin bertanya-tanya mengapa pembuat perangkat lunak Linux tidak hanya menyediakan paket yang sudah dikompilasi alih-alih kode sumber. Yah, kadang-kadang mereka melakukannya. Tetapi platform dan distribusi Linux yang berbeda semuanya memiliki format paket dan aturan sistem file sendiri, sehingga sebagai pengembang Anda harus menyediakan paket untuk setiap konfigurasi yang mungkin - yang merepotkan. Paket Ubuntu seringkali merupakan yang paling mudah ditemukan - Anda harus mencari tahu apa itu PPA dan bagaimana cara kerjanya!

sebastian_k
sumber
1
"NB. Habiskan satu atau dua akhir pekan untuk belajar bagaimana memprogram dirimu sendiri, dan segalanya akan menjadi sangat jelas :-)". Nasihat buruk dalam jawaban sebaliknya bagus. Meminta orang untuk memprogram untuk memahami linux seperti penumpang pesawat untuk memperbaiki pesawat.
apoorv020
alih-alih pemrograman, ubah saja untuk mengkompilasi linux Anda sendiri, seperti LFS (linux from scratch) linuxfromscratch.org
jsolarski
@ Apv, titik diambil. :)
sebastian_k
4

Anda harus memeriksa checkinstall . Dari pada

./configure
make
sudo make install

kamu lakukan

./configure
make
sudo make checkinstall

dan Anda akan dapat mengelola paket itu seolah-olah Anda telah menginstalnya melalui apt.

mgalg
sumber
Ups, baru perhatikan bahwa @sebastian_k sudah menyebutkan checkinstall ... Oh well!
mgalgs
1

Ada alasan yang valid dan masuk akal ini sangat membingungkan (ada juga alasan artifak yang mengganggu) ...

Unix memiliki riwayat multi-pengguna dan sebagian besar pengguna tidak memiliki akses untuk menginstal aplikasi di luar area yang telah mereka akses.

Jadi teorinya adalah bahwa Anda akan membangun sesuatu di direktori home Anda, lalu menyalinnya ke area yang Anda kontrol (area proyek Anda sendiri, atau area bersama).

PC Windows umumnya adalah sistem pengguna tunggal dan tidak memiliki kendala ini, semuanya berjalan dalam Program Files tidak peduli apa.

Lalu ada fakta bodoh dan menjengkelkan bahwa setiap kali Unix versi baru keluar, para pencipta merasa perlu untuk mengubah lokasi, tetapi yang lama harus tetap ada untuk skrip otomatis. Ini memberi Anda banyak direktori terkait yang melayani tujuan yang sama.

Sistem init bahkan lebih buruk.

Bill K
sumber