Sebagian besar .deb
paket, apakah disediakan oleh repositori resmi, dipasang dengan awalan /usr
.
Artinya adalah bahwa executable yang dimaksudkan untuk dijalankan oleh pengguna masuk /usr/bin
atau /usr/sbin
(atau /usr/games
jika itu adalah permainan), pustaka bersama masuk /usr/lib
, data bersama platform-independen masuk /usr/share
, file header masuk /usr/include
, dan kode sumber yang dipasang secara otomatis masuk /usr/src
.
Sebagian kecil dari paket digunakan /
sebagai awalan. Sebagai contoh, bash
paket menempatkan bash
executable /bin
, bukan /usr/bin
. Ini adalah untuk paket-paket yang menyediakan esensi telanjang untuk dijalankan dalam mode pengguna tunggal (seperti mode pemulihan) dan untuk memulai mode multi-pengguna (tapi ingat, yang sering menyertakan fungsionalitas untuk me-mount beberapa jenis jaringan yang dibagikan ... kalau /usr
- kalau ada sistem file jarak jauh).
Sebagian kecil dari .deb
paket, kebanyakan dibuat dengan Quickly , membuat folder khusus paket di dalam /opt
dan meletakkan semua file mereka di sana. Selain itu, sebagian besar waktu /opt
adalah lokasi yang digunakan oleh perangkat lunak yang diinstal dari installer yang dapat dieksekusi yang tidak menggunakan manajer paket sistem tetapi tidak melibatkan kompilasi dari sumber. (Misalnya, jika Anda menginstal program berpemilik seperti MATLAB, kemungkinan Anda akan memasukkannya /opt
.)
Berbeda dengan semua ini, ketika Anda mengunduh arsip sumber (atau mendapatkan kode sumber dari sistem kontrol revisi seperti Bazaar atau git), membangunnya, dan memasangnya, biasanya memasang ke awalan /usr/local
(kecuali jika Anda menyuruhnya melakukan jika tidak). Ini berarti executable Anda pergi /usr/local/bin
, /usr/local/lib
atau /usr/local/games
, perpustakaan Anda di /usr/local/lib
, dan sebagainya.
Ada beberapa pengecualian untuk ini - beberapa program, secara default, menginstal ke /usr
awalan dan dengan demikian akan menimpa instalasi dari program yang sama dari .deb
paket. Biasanya Anda dapat mencegah ini dengan menjalankan ./configure --prefix=/usr/local
alih-alih ./configure
saat Anda membangunnya. Saya kembali menekankan bahwa biasanya ini tidak perlu.
(Karena alasan inilah masuk akal bagi Anda untuk memasukkan kode sumber yang sedang Anda bangun dan akan dipasang untuk penggunaan di seluruh sistem /usr/local/src
, yang ada untuk tujuan itu.)
Dengan asumsi versi paket sudah diinstal /usr
dan versi yang Anda instal dari sumber ada di /usr/local
:
File dari paket yang diinstal tidak akan ditimpa.
Biasanya versi yang lebih baru akan berjalan ketika Anda menjalankan program secara manual dari command-line (dengan asumsi /usr/local/bin
atau di mana pun executable diinstal berada dalam PATH
variabel lingkungan Anda dan muncul sebelum /usr
direktori -prefixed yang sesuai , seperti /usr/bin
).
Tetapi mungkin ada beberapa masalah dengan peluncur apa yang dibuat dan dapat diakses melalui menu atau pencarian. Selain itu, jika Anda telah menginstal lebih dari satu versi perpustakaan di tempat yang berbeda, itu bisa menjadi sedikit lebih rumit untuk menentukan mana yang akan digunakan oleh perangkat lunak apa.
Jika Anda tidak benar - benar menggunakan kedua versi program atau pustaka, maka seringkali Anda harus menghapus versi yang tidak Anda gunakan, meskipun dalam situasi terbatas Anda mungkin ingin tetap menginstal paket untuk memenuhi dependensi.
Namun, jika karena alasan apa pun file ditimpa (misalnya, jika kode sumber dipasang /usr
bukan /usr/local
):
- Manajer paket tidak akan tahu apa pun tentang bagaimana perangkat lunak yang diinstalnya diubah. Itu akan berpikir versi lama diinstal. Masalah buruk dapat terjadi. Anda harus menghindari ini. Jika Anda telah membuat situasi ini, Anda harus menghapus instalasi perangkat lunak yang Anda instal dari sumber (biasanya dengan
sudo make uninstall
di direktori), dan kemudian menghapus paket atau paket yang menyediakan file yang ditimpa (karena mereka tidak akan dikembalikan dengan menghapus instalasi versi yang diinstal dari sumber). Kemudian instal ulang versi apa pun yang Anda inginkan./usr/local/src/program-or-library-name
Adapun memenuhi dependensi:
Jika ada .deb
paket yang tergantung pada perangkat lunak yang Anda instal dari sumber, dan membutuhkan versi yang Anda instal dari sumber (atau lebih tinggi), paket itu tidak akan berhasil diinstal. (Atau, lebih tepatnya, Anda mungkin dapat "menginstal" tetapi itu tidak akan pernah "dikonfigurasi" sehingga Anda tidak akan dapat menggunakannya.) Ketergantungan diselesaikan dengan versi paket apa yang diinstal, bukan oleh perangkat lunak apa yang sebenarnya Anda miliki.
Demikian pula, perangkat lunak setidaknya akan mencoba untuk menginstal sepenuhnya bahkan jika Anda telah secara manual menghapus file yang disediakan oleh paket-paket tempat perangkat lunak yang diinstal tergantung. (Anda seharusnya tidak mencoba memanfaatkannya untuk tujuan apa pun. Manajer paket yang beroperasi berdasarkan informasi palsu hampir selalu merupakan hal yang buruk.)
Oleh karena itu, jika Anda tidak dapat menemukan paket yang menyediakan versi perangkat lunak yang Anda butuhkan, Anda mungkin perlu membuat .deb
paket Anda sendiri dari perangkat lunak yang Anda kompilasi, dan instal dari paket itu. Kemudian manajer paket akan tahu apa yang sedang terjadi. Membuat paket untuk Anda gunakan sendiri, yang tidak perlu Anda lakukan dengan baik di komputer orang lain, sebenarnya tidak terlalu sulit. (Tapi saya merasa itu mungkin berada di luar ruang lingkup pertanyaan Anda, seperti yang saat ini dinyatakan.)