Instal hanya dependensi dari paket yang diberikan dalam Debian atau Ubuntu (apt)

18

Apakah ada cara yang lebih baik untuk menginstal hanya dependensi yang diperlukan dari suatu paket, daripada menginstalnya langsung dengan apt-get (atau antarmuka dpkg lainnya) dan kemudian segera menghapusnya, meninggalkan dependensinya?

Vinícius Ferrão
sumber

Jawaban:

22

apt-cache depends pkgname akan menunjukkan dependensi suatu paket.

Jika Anda ingin semuanya dalam satu perintah, Anda bisa melakukan lebih buruk daripada:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
sumber
16

apt-get menyediakan perintah untuk itu ...

apt-get build-dep <package name>

Dari halaman manual yang Anda dapatkan

build-dep menyebabkan apt-get untuk menginstal / menghapus paket-paket dalam upaya untuk memenuhi dependensi build untuk paket source. Secara default, dependensi puas untuk membangun paket secara asli. Jika diinginkan, arsitektur host dapat ditentukan dengan opsi --host-architecture.

Nathan Crock
sumber
9
Tidak bisakah ada perbedaan antara build dependenciesdan dependencies? Seperti pada, jika Anda biasanya menginstal sebuah program Anda mendapatkan dependensi yang benar-benar harus dijalankan, dan dengan build-dependencies saya lebih memikirkan perpustakaan, kompiler, hal-hal seperti itu. Jadi karena saya tidak yakin (jawaban ini memang memiliki upvotes) tetapi bagi saya sepertinya tidak sepele bahwa mendapatkan dependensi build sama dengan mendapatkan dependensi (run) yang dimiliki paket?
Nanne
1
Anda benar. Pada saat menjawab ini, sudah sangat lama, saya tidak memiliki pemahaman yang lengkap tentang perbedaan antara dependensi build (waktu pembangunan) dan dependensi (waktu berjalan). Terima kasih telah mengklarifikasi Nanne!
Nathan Crock
4

aptitude akan memungkinkan Anda menentukan kueri alih-alih nama paket saat menginstal. Jika Anda ingin menginstal dependensi paket yang bernama foo, Anda dapat menginstal paket yang memiliki dependensi terbalik pada foo:

aptitude install '?reverse-depends(foo)'

atau

aptitude install '~Rfoo'

Masalah dengan menginstal paket kemudian menghapusnya, adalah bahwa semua paket yang diinstal sebagai dependensi akan ditandai sebagai "terinstal secara otomatis", dan akan dihapus oleh tindakan instal / hapus / perbarui dengan bakat atau ketika Anda menjalankan apt-get autocleankecuali Anda tandai sebagai diinstal secara manual menggunakan aptitude markatau apt-markperintah.

Namun, ini menimbulkan pertanyaan mengapa Anda ingin melakukan ini tebakan terbaik saya adalah bahwa Anda mencoba menginstal dependensi untuk beberapa perangkat lunak yang akan Anda kompilasi dengan tangan. Jika demikian, Anda harus menginstal dependensi build terlebih dahulu apt-get build-dep packagename, tetapi kemudian Anda harus membuat paket dummy yang memiliki dependensi runtime (yang umumnya berbeda dari dependensi build) dengan menggunakan equivpaket untuk membangun paket dummy dengan dependensi yang benar untuk program yang Anda susun secara manual. Lihat informasi tentang equivsdi APT HOWTO

rebus
sumber
3

Dalam kasus membangun pkgname dari sumber

apt-get build-dep pkgname
eri
sumber
1
build dependency bukan dependensi runtime
sehe
>> Dalam hal membangun pkgname dari sumber
eri
Saya tidak tahu di mana itu dijamin / didokumentasikan. Juga, masih tidak membuatnya sama untuk tujuan apa pun. Saya menggunakan build-dep sepanjang waktu, tetapi saya ingin jawaban yang lebih baik untuk pertanyaan saat ini. Saya juga butuh itu.
lihat