Saya melihat semua tautan ini menjelaskan paket dan. Deb ... Saya tahu itu ... dan ada banyak kludges untuk membuat file tar.gz berfungsi (mis: pembaruan-alternatif untuk Java atau menjatuhkan file secara manual di / usr / local / bin (atau di tempat lain, yang saya simpulkan dari pencarian selama berjam-jam)). Jika paket sangat cerdas, bagaimana sedikitnya aplikasi Linux yang tersedia dalam paket atau .debs / rpms?
Saya berbicara sebagai pengguna baru; Saya tahu para ahli mungkin tahu lebih baik (saya pikir saya bisa mengunduh versi kompilasi Eclipse?). Seperti halnya netbeans dan chrome .sh
, eclipse adalah direktori yang sederhana dan dapat diluncurkan, Java membutuhkan update-alternatives
bisnis ini tetapi saya tidak berpikir itu mendaftar sendiri ke "daftar program" Ubuntu / Debian (hanya mendaftar sebagai perintah), dll. (Saya tahu ini adalah terkadang tersedia di repositori, tetapi saya hanya bingung mengapa halaman unduh tidak memiliki penjelasan yang tepat).
Singkat cerita: Jika mengunduh atau mengompilasi file tar.gz, bagaimana cara mendaftarkannya ke sistem? update-alternatives
tampaknya mendaftarkannya sebagai perintah, di Ubuntu, itu tidak muncul di bilah pencarian. Di Debian, saya bisa menambahkan pintasan secara manual ke peluncur GNOME 2. Tetapi apa yang harus saya lakukan?
Edit:
Jadi setelah bermain-main sedikit lebih banyak dengan solusi baru, saya dapat memperbaiki "masalah" saya:
Bagaimana saya mengelola program yang diinstal secara manual? Firefox dan Eclipse adalah satu-satunya contoh saya sejauh ini (saya tidak mengunduh banyak hal). Mereka berdua bisa kehabisan kotak, yang saya suka. Kecuali, di mana saya harus menginstalnya? Saya melihat Eclipse memiliki instruksi sendiri, tetapi saya lebih suka melakukan semua "paket manual" dengan cara yang sama.
- Setelah beberapa penelitian, saya memutuskan untuk memasukkan program-program ini
/usr/local/bin
. - Dari cara menginstal gerhana , saya pikir untuk mendapatkan sesuatu untuk muncul di peluncur, saya harus meletakkan
xxx.desktop
file~/.local/share/applications/
. Apakah nama file .desktop ini penting? - Barang-barang dengan autotool (Saya mencari
configure
atauunix/configure
file) akan bekerja dengan baik. Beberapa poin penelitian yang harus saya gunakanCheckInstall
untuk melacak semua ini. - Saya harus menggunakan
update-alternatives
untuk mendaftarkan jalur. Dari utas java ini , sepertinya saya membuat tautan dari/usr/bin/java
ke/usr/lib/jvm/jdk...
. Ketika saya menginstal aplikasi "mandiri" ini seperti Eclipse atau Firefox, haruskah saya selalu menautkannya/usr/bin/[app]
? Dan jika pernyataan 1 itu benar, saya akan melakukan hal-hal sepertisudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1
Apakah petunjuk ini benar / cara yang baik untuk mengelola instalasi manual? Apakah ada langkah lain yang harus saya ikuti? Saran lain?
sumber
*.deb
paket saja?*.tar.gz
perangkat lunak adalah untuk membuat paket yang sesuai:*.rpm
,*.deb
dll.desktop
file untuk menampilkan sesuatu di menu.update-alternatives
hanya berfungsi untuk memprioritaskanPATH
.Jawaban:
Mengapa banyak aplikasi tidak tersedia dalam paket repo?
Mungkin ada banyak alasan:
Tidak ada satu alasan pun. Jika Anda ingin melihat aplikasi favorit Anda di manajer paket distro Anda, Anda harus memperlakukan setiap kasing secara terpisah. Cobalah untuk menghubungi para devs (di saluran IRC atau milis misalnya) dan tanyakan bagaimana Anda bisa membantu mengemas.
Bagaimana cara menginstal tarball?
Tarball (paket .tar.gz) dapat berisi apa saja. Sampai Anda benar-benar membukanya, Anda tidak memiliki cara untuk berasumsi bagaimana cara menginstalnya. Sekali lagi, setiap paket harus didekati secara berbeda.
Cari dokumentasi! Paket apa pun (semi-) yang layak akan memberikan instruksi tentang cara menginstal aplikasi. Refleks pertama Anda harus selalu mencari file teks yang disebut README, INSTALL atau sesuatu seperti ini. Memeriksa situs web penerbit mungkin juga membantu.
Karena setiap paket berbeda, tidak ada cara universal untuk memproses setiap tarball di dunia. Itu seperti meminta resep yang bisa digunakan untuk semua bahan di dunia. Tidak terjadi.
Pengetahuan yang baik tentang sistem Anda, distro Anda dan lingkungan desktop Anda akan membantu, jadi, jika ini meyakinkan, hal-hal akan terlihat lebih dan lebih dapat diprediksi saat Anda menghabiskan waktu di dunia linux.
Kasus khusus: Autotools
Ketika proyek tumbuh lebih besar, mereka perlu menyediakan cara mudah untuk berpindah dari kode sumber ke biner ke instalasi penuh pada sistem. Inilah sebabnya mengapa mereka mengirim dengan sistem build tertanam, kumpulan skrip untuk melakukan yang diperlukan.
Di dunia Linux / Open Source / Perangkat Lunak Bebas, sistem one build mendapat adopsi yang lebih luas: GNU Autotools . Jika Anda pernah berurusan dengan paket sumber (n terbuka), ada kemungkinan besar bahwa Anda akan menggunakan Autotools.
Dalam kasus paling sederhana, inilah cara memasang aplikasi yang dikemas dengan autotool:
./configure
: Sebuah skrip yang akan menghasilkan Makefiles yang sesuai dengan sistem Anda (juga sering memeriksa ketersediaan dependensi).make
: Mengkompilasi kode sumber sesuai dengan Makefiles yang dihasilkan sebelumnya.make install
: Menyalin binari ke lokasi yang sesuai, membuat symlink, dan langkah lain apa pun yang ditentukan oleh pengembang.Catatan
configure
skrip biasanya memiliki banyak opsi, seperti kompiler yang akan digunakan atau cara mendefinisikan direktori target. Jika Anda membutuhkan fleksibilitas, ada baiknya melihat./configure --help
.Jawab pembaruan dalam pertanyaan
Apa yang Anda minta tidak memiliki jawaban yang pasti. Semua orang di sini mungkin memiliki pendapat tentang apa yang merupakan "praktik yang baik", tetapi pada akhirnya, hanya Anda yang dapat menemukan apa yang cocok untuk Anda . Jika ada jawaban yang mudah, Anda tidak akan mengajukan pertanyaan. Distro Anda akan menjawabnya untuk Anda.
Ini dikatakan, inilah beberapa komentar pribadi.
Di sistem saya, saya memesan
/usr/local/bin
paket yang diinstal oleh manajer paket saya. Semua yang saya kompilasi / instal dengan tangan masuk/opt
. Ini adalah detail tetapi membantu menghindari sakit kepala besar ketika berhadapan dengan beberapa versi dari program yang sama.xxx.desktop
, dan masalah GUI secara umum, khusus untuk lingkungan desktop yang Anda gunakan. Jika berhasil untuk sistem Anda, bagus. Tapi itu tidak bisa digeneralisasi ke semua lingkungan yang tersedia di Unix./usr/local/bin
memiliki keuntungan karena sudah berada di PATH Anda . Jika Anda ingin menggunakan direktori lain (seperti yang/opt
saya sarankan), pastikan untuk memasukkannya dalam PATH Anda. Jika Anda tidak tahu cara melakukannya, buka terminal dan laksanakan yang berikut di terminal (bukan cara tercantik untuk melakukannya, tetapi tanpa mengetahui apa pun tentang sistem Anda, saya tidak dapat menyarankan hal lain):echo 'export PATH=$PATH:/opt' >> ~/.bashrc
sumber
emacs
pengguna). Anda harus melalui percobaan dan kesalahan untuk belajar, dengan waktu, manfaat dan kelemahan dari masing-masing pendekatan yang berbeda.xxx.desktop
umumnya berfungsi untuk GNome. Apa yang Anda ketahui tentang menggunakanupdate-alternatives
untuk mengatur jalur?Saya pikir Anda harus mengklarifikasi dengan diri sendiri apa yang Anda inginkan untuk "mendaftar" itu dengan .
Untuk menjelaskan - dan saya tidak mencoba untuk menjadi pintar - alecky - "linux" tentu saja adalah kernel, dan kernel tidak tahu tentang atau tidak memiliki minat pada perangkat lunak userspace pada sistem Anda di luar init. Jadi apa yang kita bicarakan di sini?
Anda menyebutkan sejumlah distro yang berbeda. Saya kadang-kadang membangun perangkat lunak dari sumber meskipun itu tersedia di repositori karena saya ingin beberapa set opsi konfigurasi yang tidak diatur dalam biner distro. Satu-satunya masalah yang saya miliki dengan ini adalah bahwa jika paket merupakan prasyarat untuk hal lain, saya memang harus mendaftarkan ini ke sistem pengemasan untuk menghindari menginstal paket distro secara tidak sengaja di atas paket yang saya buat. Pada sistem berbasis fedora / rpm, ini dilakukan dengan
rpm -i --justdb <package>
. Saya tidak melakukan ini pada sistem berbasis debian / apt; alih-alih saya hanya memaksakan instal sesuai kebutuhan, yang mungkin malas - sepertinya ada cara yang lebih baik untuk melakukannya, dengan membuat paket boneka yang berpura-pura memenuhi prereq apa pun. Itu semacam semacam saran dari m0nhawk untuk benar-benar membuat paket dari sumber .tar.gz - kecuali sedikit lebih sederhana (saya akan jujur dan mengatakan bahwa saya sama sekali tidak menyukai saran m0nhawk).Tampaknya Anda memiliki beberapa masalah lain selain masalah dengan sistem pengemasan. Tidak jelas bagi saya apa itu, meskipun Anda menyebutkan lingkungan desktop (misalnya, Gnome). Ini heterogen, jadi tidak ada jawaban untuk pertanyaan, "bagaimana saya melakukan ini di linux" - bahkan bukan pertanyaan "bagaimana saya melakukan ini di ubuntu" atau "bagaimana saya melakukan ini pada gentoo "- ini pertanyaan" bagaimana saya melakukan ini untuk desktop gnome "atau" bagaimana melakukan ini pada desktop XFCE ", dll. Menurut saya, satu-satunya masalah ada masalah peluncur yang Anda sebutkan, yang saya ingin percaya bahwa setiap DE menyediakan cara sederhana untuk melakukan ini (tetapi tidak akan persis sama, karena mereka berbeda).
Lalu ada layanan, yang dikelola oleh sistem init (misalnya, systemd atau pemula). Jadi pertanyaan ini sebenarnya adalah serangkaian pertanyaan terkait yang berpotensi:
Sebagian alasan mengapa tidak ada satu solusi terpadu yang sederhana (walaupun standar XDG dapat menyediakan beberapa bagian seperti itu) adalah bahwa "linux" bukan satu sistem operasi terpadu yang sederhana dan saya membayangkan sebagian besar penggunanya lebih suka dengan cara itu. Saya sering tidak menggunakan DE sama sekali, dan saya tidak pernah menggunakan file browser yang mereka gunakan, dll.
Sekali lagi, saya benar-benar berusaha membantu dengan ini dan bukan hanya kepausan: jika ada masalah yang ingin Anda selesaikan di sini, Anda harus mempertimbangkan lebih tepat apa masalah itu dan perangkat lunak apa yang sebenarnya terlibat dengan mereka (lebih dari sekadar "linux" ") jika Anda ingin menyelesaikannya.
sumber
.desktop
file mereka , untuk tugas-tugas semacam ini diperlukan.configure
, Andamake install
. Itu dia, sudah selesai. Apa pun setelah itu adalah masalah preferensi pribadi.Saya pikir alasan dasar untuk masalah keseluruhan Anda adalah bahwa sistem Linux itu sendiri tidak mengandung "registri" seperti itu. File yang dapat dieksekusi adalah yang Anda perlukan untuk menjalankan sesuatu. Jika Anda tidak ingin menentukan path lengkap ke executable maka kebanyakan shell akan mencarinya di direktori yang tercantum di lingkungan Anda $ variabel PATH. Ini bisa menjadi sedikit lebih kompleks dengan pustaka yang ditautkan dan sebagainya, tetapi biasanya Anda tidak perlu mempelajari sejauh itu.
Distribusi Linux yang berbeda telah distandarisasi pada berbagai tata letak sistem file dan sistem manajemen paket, di situlah masalahnya. Redhats menggunakan rpm , Debians / Ubuntu menggunakan paket deb. Arch pergi dengan caranya sendiri juga. Dari perspektif proyek perangkat lunak, kecuali jika Anda ingin dimasukkan dalam distribusi, basis pengguna Anda sepenuhnya dalam satu distro, atau produk komersial yang bertujuan untuk kemudahan instalasi untuk semua orang, mereka mungkin satu-satunya poin yang Anda mulai cari untuk membangun berbagai paket.
Pada kenyataannya, source tar.gz yang dibangun dengan
gcc
mungkin adalah definisi terbaik dari "paket Linux" yang umum. Kernel Linux dengan beberapa utilitas GNU dan GCC hanya tentang penyebut umum antara semua rasa berbeda dari sistem operasi berbasis Linux yang bisa Anda dapatkan.Saya tidak akan mengatakan "begitu sedikit" barang tersedia sebagai paket karena sesuatu yang spesifik yang Anda cari tidak. (atau mungkin distributor telah memilih untuk tidak repot dengan semua paket ini ribut? Seperti Chrome dan ini proses pembaruan sendiri). Ada begitu banyak paket di sekitar untuk begitu banyak sistem paket yang berbeda untuk begitu banyak arsitektur untuk perangkat lunak bebas begitu tidak lucu .
Jika Anda telah membangun sesuatu yang tidak disediakan sebagai paket untuk distribusi linux Anda, atau mendukung opsi untuk membangun sebagai paket, cara terbaik untuk "mendaftar" sebagai paket nyata adalah dengan membangun paket untuk itu, menentukan di mana semua file-file tersebut harus berdasarkan pada sistem paket yang Anda pilih dan menginstalnya seperti itu. Jadilah jiwa dan sumbangkan pekerjaan pengemasan Anda kembali ke proyek sehingga orang lain dapat memperoleh manfaat darinya.
Ada berbagai panduan web tentang membangun paket . Debian menjadi salah satunya .
Jika semua yang ingin Anda lakukan adalah menjalankan paket yang dikompilasi, mungkin menambahkan path biner ke Anda
$PATH
?Jika Anda melakukan sesuatu yang lain, apa itu?
sumber
make install
atau sejenisnya) paling tidak akan menginstal symlink di bawah/usr/bin/
, jika tidak menginstal semuanya di bawah/
)--prefix=/elsewhere
untuk menjaga kebiasaan membangun jauh dari pohon normal.make install
akan menginstal ke/usr/local/bin
Saya ingin menambahkan bahwa Anda juga dapat symlink untuk
~/bin/
bukan/usr/bin
.*.desktop
file dapat ditempatkan di~/.local/share/applications/
atau/usr/share/applications/
. Hanya saya menggunakan komputer saya, dan saya ingin menghindari menyentuh file sistem (apa pun di luar direktori rumah saya) sebanyak mungkin.Tentu saja, ketika Anda meletakkan barang di rekan "direktori rumah", mereka tidak akan muncul untuk pengguna lain.
Inilah yang termasuk dalam default
~/.profile
untuk debian wheezy:sumber