Bazı bağımlılıkları görmezden gelmek için nasıl apt-get alabilirim?


86

Apt-get'i bazı bağımlılıkları görmezden nasıl getirebilirim? Örneğin, mailx'i kurmak istedim, böylece cron komut dosyalarından / rapor oluşturma araçlarından e-posta göndermek için kullanabilirim. Ancak, mailx yüklemeden da yükler Exim4 ve bağımlılıkları bir sürü (Zaten Postfix yüklü) gerçekten ihtiyacım olan ve ben mailx da olmadan yaşayabilir tmiyor.

Bazı bağımlılıkları nasıl görmezden gelebilirim ama güzel bir araç olduğundan hala apt-get kullanıyorum?


postfix nasıl kurulur? debian paketi ile mi? veya postfix'i kaynaktan mı yüklediniz?
güveç

Evet, Postfix kaynağından yüklendi
FrancisV 23.03

3
Debian'ın mailx paketi sadece 'exim4'ü önerir', zorunlu değildir. Önerilen paketleri yüklemek istemiyorsanız, sadece eklemek APT::Install-Recommends "false";adresinden Müşteri apt.conf.
inanç

Unix.stackexchange.com adresinde buna tatmin edici bir cevap buldum; unix.stackexchange.com/a/404449/23542
artfulrobot

Yanıtlar:


45

Basit ve kolay çözüm: İstenmeyen paketleri sadece -her biri için ekstra olarak belirtin .

Anahtarsız örnek -:

root@debian:~# apt-get install bsd-mailx 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
[...]

Yüklemeyi önlemek için düğmeyi kullanarak örnek exim4-base. -Sonunda dikkat edin :

root@debian:~# apt-get install bsd-mailx exim4-base-
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'exim4-base' is not installed, so not removed
The following extra packages will be installed:
  liblockfile-bin liblockfile1 ssmtp
[...]

Gördüğünüz gibi apt-get, exim4-basepaketi yüklemeyi artık denemiyor ve çeşitli bağımlılıklarını ( exim4-configvb.) Yüklemeyi denemiyor .

Ve eğer hatalıysanız ve exim4-basesonuçta bu bağımlılığa ihtiyaç duyduysanız, apt-get installdaha sonra yapabilirsiniz !


5
Belirli bir bağımlılığı yüklemekten kaçınmanın en iyi yolu budur . Diğer cevaplar tüm bağımlılıkları yüklemekten kaçınır, kurulduktan sonra bağımlılıkları kaldırır veya sıkıcı şekilde paketleri düzenlemeyi önerir.
Neil

1
Bu tam ihtiyacım olan şeydi! ( X deps önlemek için yükleme gnupg2olmadan pinentry-gtk2)
lapo 27:16 '

Ancak bu gerçekten harika, benim durumumda apt-get paketi "karşılanmayan bağımlılıklarla" kurmayı reddediyor (ki bu yöntemi kullanarak belirtmiştim). Özellikle umurumda olmayan 100 megabaytlık bir dokümantasyon paketi.
Rolf

3
Sadece isteğe bağlı bağımlılıklarla çalışır, gerekli olanlarla değil. Hata rmessage: Depends: xxx but it is not going to be installed. İsteğe bağlı tüm paketleriapt-get install --no-install-recommends PACKAGE
koppor

Ayrıca sanal paketlerle çalışmaz. Ancak bkz: unix.stackexchange.com/a/404449/23542
artfulrobot

55

Bir deb paketinin bağımlılıklarını şu şekilde değiştirebilirsiniz:

  1. Paketi aç: deb ar x golden-linux.deb(üç dosya yaratacaktır: debian-binary control.tar.gz data.tar.gz)
  2. Kontrol arşivini aç: tar xzf control.tar.gz(yaratacaktır: postrst postrm preerm prerm md5sums kontrolünden önce)
  3. Bağımlılıkları düzelt control(bir metin editörü kullanın)
  4. Control.tar.gz dosyasını tekrar paketleyin: tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
  5. Debi yeniden paketleyin: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz(sipariş önemlidir! Bkz. [Not])

[Not]: dpkg, veri bölümünün bittiği yeri aramak zorunda kalsaydı, bir paketin meta verilerini hızlı bir şekilde okuyamazdı!


2
Güzel, bana "raring8" den "raring6" ye özel bir bağımlılık vakasını çözdü, ancak aynı sürüm = (, çok teşekkürler
Felipe Alcacibar 18:13

1
Benden de teşekkürler; Bunu kullanmak zorunda kaldım, çünkü libmng1.so.1mükemmel bir şekilde ayarlanmış bir sembolik bağlantıyla çalışmasına rağmen bir uygulama gerekliydi libmng1.so.2. apt-getsırılsıklam olamazdı ve karşılanmayan bağımlılıklar konusunda beni rahatsız ediyordu (tamamen ilgisiz bir şey kurarken bile!). Ne kadar da çöp kavramı.
sözdizimi

+1 Bu da benim için mükemmel çalıştı. Paket gnome-settings-daemonistedim gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11ama ben zaten var gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2(<- sonunda ".2" dikkat edin). Bu prosedür paketi düzenlememe ve daha yeni 11.2 sürümünü kullanmaya zorlamama izin verdi. TEŞEKKÜR EDERİM!
Eric Duncan

1
Harika bir çözüm, teşekkürler. 2. ve 4. adımları biraz değiştirdim: 2. FILES=$(tar zxvf control.tar.gz)dosya listesini bir değişkende saklamak için. 4. tar zcf control.tar.gz $FILES- arşivi orijinal dosya listesini kullanarak (değiştirdikten sonra) tek bir adımda boru olmadan veya yönlendirmeden yaratın.
Brett,

2
Başka bir çift önerileri. # 4 için: ekle, --ignore-failed-readböylece tareksik dosyaları komut satırının geri kalanından görmezden gel. (Örneğin, prerm, postrmbirçok paketler bulunmaz.) Ayrıca, tar olabilir .xzziyade .gzDebian arşiv biçimi (örneğin yeni sürümlerinde data.tar.xz).
Dan Lenski

33

Paketi --ignore-depends seçeneği ile yükledikten sonra , /var/lib/dpkg/statusdosyayı gidip düzenleyin ve gerekli olmadığını düşündüğünüz bağımlılığı kaldırın. Sadece çok dikkatli ol. Bir dep. Gerekli olan, bu olasılığı daha fazladır BE gerekli


3
Güncellemeden sonra /var/lib/dpkg/statusyüklemeyi bitirmek gerekebilir sudo apt-get -f install(bir paket belirtmenize gerek yoktur).
Zmicier Zaleznicenka

Ayrıca burada bulundu: superuser.com/a/815371/127024 .
Johann

Bu bana sürüngen verir, ama kusursuz çalıştı!
David Schmitt

25

--nodepsBayrağı ile deneyebilirsiniz apt-get.
Veya paketi indirin ve dpkgseçeneği kullanarak kurun --ignore-depends.

Örneğin, paketi foobağımlılık olmadan yüklemek istiyorsanız bar:

dpkg --ignore-depends=bar -i foo_1.2.3_amd64.deb

52
Hangi APT sürümünüz var? Mine ( 0.8.10 ) böyle bir seçeneğe sahip değil.
tshepang

8
dpkg'a depndenlikleri yoksaymasını söylemek onun için bir seçenek değildir. Dpkg'a yalnızca THIS işleminin bağımlılıklarını yoksaymasını söyler, daha sonra bağımlılıkları sağlamaya çalışır veya bir sonraki yaptığınızda pacakları kaldırmaya çalışır.
güveç

2
Hala APT 0.8.16 BTW ile şans. Çok kötü, çünkü makul alternatifler görünmüyor. Bunun çalışması için 2011'de hangi sürümü kullandınız?
Christian,

2
apt-get download ve daha sonra dpkg kullanabilirsiniz
Frederick Roth,

7
--no-install-recommendsbenim için çalıştı.
Olle Härstedt 13:16

14

Postfix'i kaynaktan yüklediğiniz için, mailx'in (veya bsd-mailx) mail-transport-agent bağımlılığını karşılayacak bir "boş" bir paket kurmanız gerekir. Debian içindeki "equivs" paketi, dpkg'a "bu bağımlılığın tatmin olduğunu" söylemek için yükleyebileceğiniz kukla bir paket oluşturmak için var.

Dpkg'a bağımlılıkları basitçe görmezden gelmesini söylemenin nedeni iyi bir çözüm değildir, dpkg / apt'ye yalnızca tek bir işlem için görmezden gelmenizi söylüyorsunuz, sonsuza kadar bağımlılıkları görmezden gelmesini söyleyemezsiniz. Apt kullandığınız her zaman tüm paketlerdeki bağımlılıkları kontrol eder


2
Ayrıca bir öğreticiye bağlantı veren bu cevaba bakınız (aşırı karmaşık olmasına rağmen) superuser.com/a/416560/128960 . Kısa versiyon: run equivs-control <name>, doğru bağımlılığı sağlamak ve güzel bir isme sahip olmak için üretilen dosyayı düzenleyin, ardından run equivs-build <name>ve nihayetinde dpkg -i.deb dosyasını çalıştırın .
Christian,

1
IMHO bu gerçekten en güzel çözüm. Burada talep edilen diğer tüm çözümler biraz fazla aceleci. Bu işlem sadece bir kez yapılmalı ve sonradan derlenen yazılıma bağlı olarak herhangi bir yazılımı kurabilirsiniz ... Ardından bu cevabı kaldıralım!
Kilim

7

Bu seçeneği Xen çalışan bir Ubuntu 12.04 Sunucusunda aradım. Etki alanlarımda -virtual çekirdeği kullanıyorum ve uygun bir şekilde her çekirdek paketi yükseltmesiyle grub yüklemeye çalıştım. P [yv] grub kullanılırken grub domU içinde gerekli değildir.

Ben de -nodeps seçeneğini apt-get için de aradım, ancak işe yaramadı, bu yüzden her bir çekirdek yükseltme işleminden sonra grub * kaldırarak / tasfiye ederek sona erdi.

Ne de olsa, gerçekten bir man sayfasını okumak bazen yardımcı oluyor - 12.04'te benzer bir apt-get seçeneği çıkıyor gibi görünüyor - grubun 'tavsiye edilenler' listesinde yer aldığından, aslında bu durumda çalışan nono-install-recommended. paket bilgisi (sanırım "gerçek" bir bağımlılık değil mi?).

Bunu buraya ekliyorum çünkü benim durumumda benzer bir sorunu çözdü ve '--no-install-recommend' için ipucu henüz belirtilmedi.


6

Paketi apt-get ile indirebilir ve daha sonra göz ardı etmek istediğiniz bağımlılığı elle listeleyerek dpkg ile yükleyebilirsiniz.

Örneğin eğer paketimi indirmek istersem fakat libperl5.14 sürümüne bağlıysam ve libperl5.14 yazılımını kurmak istemiyorum, çünkü farklı bir sürüme sahip olduğum için şu bağımlılığı görmezden gelebilirim:

apt-get download mypackage
dpkg -i --ignore-depends=libperl5.14 mypackage.deb

Sadece bunun seni "kırılmış" olarak bırakacağını söylemek. Eksik bağımlılığı giderene kadar başka paketler yüklemenize izin vermez.
drpexe

6

Bağımlılıkları manuel olarak ayarlamak için alternatif bir yol:

apt-get download yourpackage
dpkg-deb -x yourpackage.deb PackageFolder
dpkg-deb --control yourpackage.deb PackageFolder/DEBIAN
vim PackageFolder/DEBIAN/control
dpkg -b PackageFolder yourpackage2.deb
apt-get install ./yourpackage2.deb

2

Debian sistemimde, bsd-mailx aslında buna bağlı default-mta | mail-transport-agent(bir paketin apt-cache show <pkg>arşivdeki herhangi bir şey dpkg -s <pkg>için veya kurulu paketler için neye bağlı olduğunu kontrol edebilirsiniz .)

Postfix paketinizin bu Provides: mail-transport-agentkadar uygun olmaması, MTA'nın kurulu olduğunu anlamıyor olabilir. Resmi bir paket ise, bunun için bir hatayı dosyalamaya değer.


1

Bunun amaçları için, sadece bu bağımlılıkların olmadığını düşündüğüm bir çiviyi yerleştirebilirsiniz.

apt-get install nail

-5

Şey - yapma.

Başkalarının çalışmalarını kullanmak başarıya giden yolda çok önemlidir. Kaynaktan (tarball) bir yazılım oluşturduğunuzda, distro'nun paket yöneticisinin çalışmalarını kullanma fırsatını kaçırırsınız.

"Ücretsiz" güncellemeler almayacaksınız. Çoğu zaman hiçbiri kaynaktan yükledikleri paketleri güncellemez. Yazılımı yeni sürümler için izlemeleri gerektiğinden, onu ve tüm bağımlı programları yeniden oluşturun (hatırlamaya çalışın).

Dağıtımınızın depolarındaki diğer paketlerle ilgili sorunlarınız olacaktır. Bu, tam olarak şu sorunda belirtilen durumdur: ubuntu'nun çok iyi bir paket yöneticisi ve paketleri elinde bulunduran çok hoş insanlar var. Ayrıca, mailx programının çalışması için bir MTA'ya ihtiyacınız olduğuna karar verdiler. Yani postfix'i kaynaklardan yüklediyseniz ubuntu sizden exim kurmanızı istemez.

Bir nedenden dolayı sunucunun bakımı başka bir kişiye geçerse (örneğin projeniz çok başarılı olursa ve siz başka işlerle meşgulken sunucuları yönetmek için başka bir kişiyi işe almaya karar verirseniz) doğal olarak çalıştırmayı bekler. dpkg --get-selections tüm hizmetlerden yararlanmak . yüklü paketler.

Distro'nun paket yönetim yazılımını mümkün olduğunca kullanmaya çalışın. Önceden oluşturulmuş bir tane bulamazsanız ve daha iyi bir profesyonel olursanız, kendi paketlerinizi oluşturmayı öğrenin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.