Simon! Saya tahu apa yang kau rasakan; Saya berjuang dengan bagian ini belajar Linux, juga. Berdasarkan pengalaman saya sendiri, saya menulis tutorial tentang beberapa item yang Anda alamat (kebanyakan sebagai referensi untuk diri saya sendiri!): Http://easyaspy.blogspot.com/2008/12/buildinginstalling-application-from.html . Saya pikir Anda akan menghargai catatan saya tentang bagaimana membangun / menginstal aplikasi Python sederhana. :)
Semoga ini bisa membantu! Dan senang menyusunnya.
Tim Jones
Membangun / Memasang aplikasi dari sumber di Ubuntu Linux
Sementara repositori Ubuntu penuh dengan aplikasi hebat, pada satu waktu atau lain Anda terikat untuk menemukan alat "must-have" yang tidak ada dalam repositori (atau tidak memiliki paket Debian) atau Anda memerlukan versi yang lebih baru daripada di repositori. Apa yang kamu kerjakan? Nah, Anda harus membangun aplikasi dari sumber! Jangan khawatir, ini benar-benar tidak serumit kedengarannya. Berikut adalah beberapa tips, berdasarkan pengalaman saya untuk menjadi amatir peringkat! (Sementara saya menggunakan Ubuntu untuk contoh ini, konsep umum harus berlaku untuk sebagian besar distribusi Unix / Linux, seperti Fedora, dan bahkan platform Cygwin pada Windows.)
Proses dasar membangun (mengkompilasi) sebagian besar aplikasi dari sumber mengikuti urutan ini: configure -> compile -> install. Perintah Unix / Linux untuk melakukan hal-hal ini adalah: config
-> make
-> make install
. Dalam beberapa kasus, Anda bahkan akan menemukan halaman web yang menunjukkan bahwa semua ini dapat digabungkan menjadi satu perintah:
$ config && make && make install
Tentu saja, perintah ini mengasumsikan bahwa tidak ada masalah dalam langkah-langkah ini. Di sinilah kesenangan datang!
Mulai
Jika Anda belum pernah mengkompilasi aplikasi dari sumber pada sistem Anda sebelumnya, Anda mungkin perlu mengaturnya dengan beberapa alat pengembangan umum, seperti gcc
suite kompiler, beberapa file header umum (anggap ini sebagai kode yang telah ditulis oleh orang lain yang digunakan oleh program yang Anda instal), dan alat make. Untungnya, di Ubuntu, ada metapackage yang disebut build-essential
yang akan menginstal ini. Untuk menginstalnya (atau pastikan Anda sudah memilikinya!), Jalankan perintah ini di terminal:
$ sudo apt-get install build-essential
Sekarang setelah Anda memiliki pengaturan dasar, unduh file sumber aplikasi dan simpan ke direktori yang telah Anda baca / tulis izinnya, seperti direktori "home" Anda. Biasanya, ini akan berada dalam file arsip dengan ekstensi file baik .tar.gz
atau .tar.bz2
. Secara .tar
sederhana ini berarti "arsip tape", yang merupakan pengelompokan file yang mempertahankan struktur direktori relatif mereka. The .gz
singkatan gzip (GNU zip), yang merupakan format kompresi Unix / Linux populer. Demikian pula, .bz2
singkatan dari bzip2, yang merupakan format kompresi yang lebih baru yang memberikan kompresi lebih tinggi (ukuran file terkompresi lebih kecil) daripada gzip.
Setelah Anda mengunduh file sumber, buka jendela terminal (Terminal Sistem dari menu Ubuntu) dan ubah ke direktori tempat Anda menyimpan file Anda. (Saya akan gunakan ~/download
dalam contoh ini. Di sini, '~' adalah jalan pintas ke direktori "home" Anda.) Gunakan perintah tar untuk mengekstrak file dari file arsip yang diunduh:
Jika file Anda adalah arsip gzip (mis. Diakhiri dengan .tar.gz
), gunakan perintah:
$ tar -zxvf filename.tar.gz
Jika file Anda adalah arsip bzip2 (mis. Diakhiri dengan .tar.bz2
), gunakan perintah:
$ tar -jxvf filename.tar.gz
Kiat: Jika Anda tidak ingin harus mengingat semua sakelar baris perintah untuk mengekstraksi arsip, saya sarankan untuk mendapatkan satu (atau keduanya) dari utilitas ini: dtrx (favorit saya!) Atau deco (lebih populer). Dengan salah satu dari utilitas ini, Anda cukup memasukkan nama utilitas (dtrx atau deco) dan nama file, ia mengerjakan sisanya. Kedua "tahu" ini bagaimana menangani sebagian besar format arsip yang cenderung Anda temui dan mereka memiliki penanganan kesalahan yang besar.
Saat membangun dari sumber, ada dua jenis kesalahan umum yang cenderung Anda temui:
- Kesalahan konfigurasi terjadi ketika Anda menjalankan skrip konfigurasi (biasanya bernama config atau configure) untuk membuat makefile yang khusus untuk pengaturan Anda.
- Kesalahan kompiler terjadi ketika Anda menjalankan perintah make (setelah makefile dibuat) dan kompiler tidak dapat menemukan beberapa kode yang diperlukan.
Kami akan melihat masing-masing dan membahas bagaimana menyelesaikannya.
Konfigurasi dan Kesalahan Konfigurasi
Setelah Anda mengekstrak file arsip kode sumber, di terminal, Anda harus mengubah ke direktori yang berisi file yang diekstraksi. Biasanya, nama direktori ini akan sama dengan nama file (tanpa ekstensi .tar.gz
atau .tar.bz2
). Namun, kadang-kadang nama direktori hanyalah nama aplikasi, tanpa informasi versi apa pun.
Di direktori sumber, cari README
file dan / atau INSTALL
file (atau sesuatu dengan nama yang mirip). File-file ini biasanya berisi informasi berguna tentang cara membangun / mengkompilasi aplikasi dan menginstalnya, termasuk informasi tentang dependensi. "Ketergantungan" hanyalah nama yang bagus untuk komponen atau pustaka lain yang diperlukan untuk berhasil dikompilasi.
Setelah Anda membaca file README
dan / atau INSTALL
file (dan, semoga melihat dokumentasi online yang relevan untuk aplikasi), cari file executable (memiliki izin "x" pada file) bernama config
atau configure
. Terkadang file mungkin memiliki ekstensi, seperti .sh
(misalnya, config.sh
). Ini biasanya skrip shell yang menjalankan beberapa utilitas lain untuk mengonfirmasi bahwa Anda memiliki lingkungan "waras" untuk dikompilasi. Dengan kata lain, itu akan memeriksa untuk memastikan bahwa Anda telah menginstal semua yang Anda butuhkan.
Tip: Jika ini adalah aplikasi berbasis Python, alih-alih file konfigurasi, Anda harus mencari file yang bernama setup.py
. Aplikasi python biasanya sangat sederhana untuk diinstal. Untuk menginstal aplikasi ini, sebagai root (mis., Letakkan sudo di depan perintah berikut di bawah Ubuntu), jalankan perintah ini:
$ python setup.py install
Hanya itu yang harus Anda lakukan. Anda dapat melewati sisa tutorial ini dan melanjutkan langsung untuk menggunakan dan menikmati aplikasi Anda.
Jalankan skrip konfigurasi di terminal. Biasanya, Anda dapat (dan seharusnya!) Menjalankan skrip konfigurasi dengan akun pengguna reguler Anda.
$ ./config
Script akan menampilkan beberapa pesan untuk memberi Anda gambaran tentang apa yang dilakukannya. Seringkali, skrip akan memberi Anda indikasi apakah berhasil atau gagal dan, jika gagal, beberapa informasi tentang penyebab kegagalan. Jika Anda tidak mendapatkan pesan kesalahan, maka Anda biasanya dapat menganggap bahwa semuanya berjalan dengan baik.
Jika Anda tidak menemukan skrip apa pun yang terlihat seperti skrip konfigurasi, maka itu biasanya berarti bahwa aplikasinya sangat sederhana dan merupakan platform independen. Ini berarti bahwa Anda dapat langsung beralih ke langkah build / compile di bawah ini, karena yang disediakan Makefile
harus bekerja pada sistem apa pun.
Sebuah contoh
Dalam tutorial ini, saya akan menggunakan RSS reader berbasis teks yang disebut Newsbeuter sebagai contoh untuk jenis kesalahan yang mungkin Anda temui ketika membangun aplikasi Anda. Untuk Newsbeuter, nama skrip konfigurasi adalah config.sh
. Di sistem saya, ketika saya menjalankan config.sh
, kesalahan berikut terjadi:
tester@sitlabcpu22:~/download/newsbeuter-1.3$ ./config.sh
Checking for package sqlite3... not found
You need package sqlite3 in order to compile this program.
Please make sure it is installed.
Setelah melakukan beberapa penelitian, saya menemukan bahwa, pada kenyataannya, sqlite3
aplikasi telah diinstal. Namun, karena saya mencoba membangun dari sumber, ini adalah tip yang config.sh
sebenarnya dicari adalah pustaka pengembangan (header) sqlite3
. Di Ubuntu, sebagian besar paket memiliki paket rekanan pengembangan terkait yang diakhiri -dev
. (Platform lain, seperti Fedora, sering menggunakan sufiks paket -devel
untuk paket pengembangan.)
Untuk menemukan paket yang sesuai untuk paket sqlite3
pengembangan, kita dapat menggunakan apt-cache
utilitas di Ubuntu (dan, juga, yum
utilitas di Fedora):
tester@sitlabcpu22:~/download/newsbeuter-1.3$ sudo apt-cache search sqlite
Perintah ini mengembalikan daftar hasil yang cukup besar, jadi kita harus melakukan sedikit pekerjaan detektif untuk menentukan paket mana yang sesuai. Dalam hal ini, paket yang sesuai ternyata libsqlite3-dev
. Perhatikan bahwa kadang-kadang paket yang kita cari akan memiliki lib
awalan, bukan hanya nama paket plus yang sama -dev
. Ini karena kadang-kadang kita hanya mencari pustaka bersama yang dapat digunakan oleh banyak aplikasi berbeda. Untuk menginstal libsqlite3-dev
, jalankan perintah apt-get install di terminal:
tester@sitlabcpu22:~/download/newsbeuter-1.3$ sudo apt-get install libsqlite3-dev
Sekarang, kita harus menjalankan config.sh
lagi untuk memastikan bahwa kita telah menyelesaikan masalah ketergantungan ini dan bahwa kita tidak memiliki masalah ketergantungan lagi. (Walaupun saya tidak akan menunjukkannya di sini, dalam kasus Newsbeuter, saya juga harus menginstal libcurl4-openssl-dev
paket.) Juga, jika Anda menginstal paket pengembangan (seperti libsqlite3-dev
) dan paket aplikasi yang terkait (mis., sqlite3
) Tidak sudah diinstal, sebagian besar sistem akan secara otomatis menginstal paket aplikasi terkait pada saat yang sama.
Ketika konfigurasi berjalan dengan sukses, hasilnya akan membuat satu atau lebih file make. File-file ini biasanya dinamai Makefile
(ingat bahwa kasus nama file penting di Unix / Linux!). Jika paket build menyertakan sub-direktori, seperti src
, dll., Masing-masing sub-direktori ini akan berisi Makefile
, juga.
Kesalahan Bangunan dan Kompilasi
Sekarang, kami siap untuk benar-benar mengkompilasi aplikasi. Ini sering disebut bangunan dan namanya dipinjam dari proses membangun sesuatu di dunia nyata. Berbagai "potongan" aplikasi, yang biasanya merupakan beberapa file kode sumber, digabungkan bersama untuk membentuk keseluruhan aplikasi. Utilitas make mengelola proses pembuatan dan memanggil aplikasi lain, seperti kompiler dan tautan, untuk benar-benar melakukan pekerjaannya. Dalam kebanyakan kasus, Anda cukup menjalankan make (dengan akun pengguna reguler Anda) dari direktori tempat Anda menjalankan konfigurasi. (Dalam beberapa kasus, seperti mengkompilasi aplikasi yang ditulis dengan pustaka Qt, Anda perlu menjalankan aplikasi "pembungkus" lain seperti qmake sebagai gantinya. Sekali lagi, selalu periksa README
dan / atau INSTALL
dokumen untuk detailnya.)
Seperti halnya skrip konfigurasi di atas, ketika Anda menjalankan make (atau utilitas serupa) di terminal, ia akan menampilkan beberapa pesan tentang apa yang sedang dieksekusi dan setiap peringatan dan kesalahan. Anda biasanya dapat mengabaikan peringatan, karena ini terutama untuk pengembang aplikasi dan memberi tahu mereka bahwa ada beberapa praktik standar yang dilanggar. Biasanya, peringatan ini tidak memengaruhi fungsi aplikasi. Di sisi lain, kesalahan penyusun harus ditangani. Dengan Newsbeuter, ketika saya berlari membuat, segalanya berjalan baik untuk sementara waktu, tapi kemudian saya mendapat kesalahan:
tester@sitlabcpu22:~/download/newsbeuter-1.3$ make
...
c++ -ggdb -I/sw/include -I./include -I./stfl -I./filter -I. -I./xmlrss -Wall -Wextra -DLOCALEDIR=\"/usr/local/share/locale\" -o src/configparser.o -c src/configparser.cpp
c++ -ggdb -I/sw/include -I./include -I./stfl -I./filter -I. -I./xmlrss -Wall -Wextra -DLOCALEDIR=\"/usr/local/share/locale\" -o src/colormanager.o -c src/colormanager.cpp
In file included from ./include/pb_view.h:5,
from src/colormanager.cpp:4:
./include/stflpp.h:5:18: error: stfl.h: No such file or directory
In file included from ./include/pb_view.h:5,
from src/colormanager.cpp:4:
./include/stflpp.h:33: error: ISO C++ forbids declaration of \u2018stfl_form\u2019 with no type
./include/stflpp.h:33: error: expected \u2018;\u2019 before \u2018*\u2019 token
./include/stflpp.h:34: error: ISO C++ forbids declaration of \u2018stfl_ipool\u2019 with no type
./include/stflpp.h:34: error: expected \u2018;\u2019 before \u2018*\u2019 token
make: *** [src/colormanager.o] Error 1
Proses make akan berhenti segera setelah kesalahan pertama ditemukan. Menangani kesalahan kompiler terkadang bisa menjadi bisnis yang rumit. Anda harus melihat kesalahan untuk beberapa petunjuk tentang masalah tersebut. Biasanya, masalahnya adalah bahwa beberapa file header, yang biasanya memiliki ekstensi .h
atau .hpp
, tidak ada. Dalam kasus kesalahan di atas, jelas (atau seharusnya!) Masalahnya adalah bahwa stfl.h
file header tidak dapat ditemukan. Seperti yang ditunjukkan contoh ini, Anda ingin melihat baris pertama dari pesan kesalahan dan mencari cara untuk menemukan penyebab masalah yang mendasarinya.
Setelah melihat dokumentasi Newsbeuter (yang seharusnya saya lakukan sebelum saya mulai, tapi kemudian bagian tutorial ini tidak akan sangat berarti!), Saya menemukan bahwa itu membutuhkan perpustakaan pihak ke-3 yang disebut STFL. Jadi apa yang kita lakukan dalam kasus ini? Yah, pada dasarnya kami mengulangi proses yang sama persis untuk pustaka yang diperlukan: dapatkan pustaka dan jalankan proses configure-build-install untuk itu dan, kemudian, lanjutkan membangun aplikasi yang diinginkan. Sebagai contoh, dalam kasus STFL, saya harus menginstal libncursesw5-dev
paket agar dapat dibangun dengan benar. (Biasanya, tidak perlu mengulang langkah konfigurasi pada aplikasi asli kami setelah menginstal aplikasi lain yang diperlukan, tetapi tidak ada salahnya juga.)
Setelah berhasil menginstal STFL toolkit, proses make untuk Newsbeuter berjalan dengan sukses. Proses make biasanya mengambil di mana ia pergi (pada titik kesalahan). Dengan demikian, semua file yang telah berhasil dikompilasi tidak akan dikompilasi ulang. Jika Anda ingin mengkompilasi ulang semuanya, Anda dapat menjalankan make clean all untuk menghapus objek yang dikompilasi dan kemudian jalankan make lagi.
Menginstal
Setelah proses build selesai dengan sukses, Anda siap untuk menginstal aplikasi. Dalam kebanyakan kasus, untuk menginstal aplikasi ke area umum sistem file (misalnya, /usr/bin
atau /usr/share/bin
, dll.), Anda harus menjalankan instalasi sebagai root. Instalasi sebenarnya adalah langkah paling sederhana dalam keseluruhan proses. Untuk menginstal, dalam terminal run:
$ make install
Periksa output dari proses ini untuk setiap kesalahan. Jika semuanya berhasil, Anda harus dapat menjalankan nama perintah di terminal dan itu akan diluncurkan. (Tambahkan & ke akhir baris perintah, jika itu adalah aplikasi GUI, atau Anda tidak akan dapat menggunakan sesi terminal sampai aplikasi selesai berjalan.)
Saat Anda membangun aplikasi dari sumber, biasanya tidak akan menambahkan ikon atau pintasan ke menu GUI di Ubuntu. Anda harus menambahkan ini secara manual.
Dan itu pada dasarnya adalah proses, meskipun berpotensi berulang, untuk membangun dan menginstal aplikasi dari sumber di Ubuntu. Setelah Anda melakukan ini hanya beberapa kali, itu akan menjadi kebiasaan Anda!