Bisakah Apt menghapus paket yang dibutuhkan oleh perangkat lunak yang telah diinstal pengguna dari sumber?

14

Apt menangani dependensi antar paket yang diinstal dari repositori atau *.debfile-nya. Namun, bagaimana dengan perangkat lunak yang telah dikompilasi dan diinstal pengguna dari sumbernya ./configure && make && make installtanpa membuat .debfile terlebih dahulu? Apakah mungkin Apt dapat menghapus paket yang dibutuhkan oleh perangkat lunak tersebut? Apakah menginstal perangkat lunak dari sumber /optatau /usr/localmembuat perbedaan?

Elena
sumber
1
Anda dapat menginstal paket equivs sebagai stand-in untuk paket yang diinstal dari sumber, untuk memaksa dependensi Anda agar tetap diinstal.
Faheem Mitha

Jawaban:

13

APT tidak tahu apa-apa tentang perangkat lunak yang diinstal secara manual. Tidak tahu perpustakaan apa yang dibutuhkan perangkat lunak atau apa pun.

Ketika APT menginstal paket hanya untuk memenuhi dependensi paket lain, paket ini ditandai sebagai diinstal secara otomatis. Jika Anda menghapus semua paket yang bergantung pada paket yang diinstal secara otomatis, paket itu dihapus ketika Anda menjalankan apt-get autoremove; antarmuka tingkat tinggi ke APT biasanya akan menawarkan untuk melakukan hal itu setelah pemeliharaan lainnya. Untuk menghindari penghapusan paket yang diperlukan oleh perangkat lunak yang diinstal secara lokal, tandai paket ini sebagai yang diinstal secara manual:, atau kunci dalam aptitude.apt-mark manual PACKAGE-NAMEm

Untuk menemukan paket perpustakaan apa yang perlu dieksekusi biner, jalankan ldd /path/to/executable. Untuk setiap baris yang berisi , jalankan untuk menampilkan nama paket yang berisi perpustakaan itu. Untuk skrip, tunjukkan interpreter yang digunakan oleh skrip; pastikan bahwa juru bahasa ini tetap diinstal. Menemukan perpustakaan apa yang digunakan oleh skrip bisa sulit, tidak ada cara universal untuk melakukannya./usr/lib/SOMETHINGdpkg -S /usr/lib/SOMETHINGhead -n 1 /path/to/script

Jika Anda secara manual menginstal versi terbaru dari sebuah paket yang ada di distribusi Anda, lihat dependensi dari paket distribusi dan tandai sebagai diinstal secara manual.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
apt-getdi Debian Jessie tidak memiliki manualopsi. Untuk petunjuk pemasangan manual vs. otomatis (matic) ini saya telah menggunakan apt-mark. ( apt-mark manual pkg, apt-mark showmanual pkg, apt-mark auto pkg, Dll)
Lekensteyn
@Lekensteyn maksudku apt-mark, terima kasih.
Gilles 'SO- stop being evil'
14

aptdan dpkgbenar - benar dapat menghapus perangkat lunak yang diperlukan oleh perangkat lunak lain yang diinstal secara lokal yang berada di luar ruang lingkup sistem manajemen paket. Tidak ada cara untuk aptdan dpkgmengetahui bahwa perangkat lunak tersebut mungkin ada.

Lokasi di mana perangkat lunak tersebut diinstal tidak membuat perbedaan: itu bisa /optatau /usr/localatau di direktori home pengguna (dalam hal ini bahkan sysadmin mungkin tidak menyadari keberadaannya), atau di mana saja, sungguh.

Secara teknis aptatau dpkgbahkan dapat menghapus perangkat lunak yang diperlukan oleh perangkat lunak lain yang merupakan bagian dari sistem manajemen paket, jika perangkat lunak yang terakhir gagal menyatakan bahwa itu tergantung pada perangkat lunak sebelumnya. Namun, proses untuk membuat paket deb mencakup otomatisasi untuk membantu mencegah pengelola paket lupa menyatakan ketergantungan seperti itu.

Celada
sumber