Vraag Hoe kan ik apt-get worden om sommige afhankelijkheden te negeren?


Hoe maak ik apt-get sommige afhankelijkheden negeren? Ik wilde bijvoorbeeld installeren mailx dus ik kan het gebruiken om e-mails van cron-scripts / tools voor het genereren van rapporten te verzenden. Het installeren van mailx wordt echter ook geïnstalleerd exim4 en een hele hoop afhankelijkheden (ik heb Postfix al geïnstalleerd) die ik niet echt nodig heb en waarvan ik denk dat mailx ook zonder kan.

Hoe negeer ik sommige afhankelijkheden maar gebruik ik apt-get nog steeds, omdat het een leuke tool is?


66
2018-03-22 08:17


oorsprong


hoe is postfix geïnstalleerd? via het Debian-pakket? of hebt u postfix vanaf de bron geïnstalleerd? - stew
Ja, Postfix is ​​geïnstalleerd vanaf de bron - FrancisV
Het mailx-pakket van Debian 'beveelt' alleen exim4 aan, vereist het niet. Als u geen aanbevolen pakketten wilt installeren, voegt u gewoon toe APT::Install-Recommends "false";aan jouw apt.conf. - ruief


antwoorden:


Je kunt het proberen --nodeps vlag met apt-get.
Of download het pakket en installeer het met dpkg met de optie --ignore-depends.

Bijvoorbeeld als u pakket wilt installeren foo zonder afhankelijkheid bar:

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

22
2018-03-22 08:24



Welke APT-versie heb je? De mijne (0.8.10) heeft zo'n optie niet. - Tshepang
het vertellen van dpkg om dementies te negeren is geen optie voor hem. Het vertelt alleen dpkg om de afhankelijkheden voor DEZE transactie te negeren, het zal dan proberen de afhankelijkheden te bevredigen of de pacakge te verwijderen de volgende keer dat je iets doet. - stew
Nog steeds geen geluk met APT 0.8.16 tussen haakjes. Jammer want er lijken geen redelijke alternatieven te zijn. Welke versie heb je in 2011 gebruikt om dit te laten werken? - Christian
u kunt apt-get download gebruiken en vervolgens dpkg - Frederick Roth
--no-install-recommends werkte voor mij. - Olle Härstedt


U kunt de afhankelijkheden van een deb-pakket als volgt wijzigen:

  1. Deb ontpakken: ar x golden-linux.deb (zal d.w.z. drie bestanden aanmaken: debian-binary control.tar.gz data.tar.gz)
  2. Besturingsarchief uitpakken: tar xzf control.tar.gz (zal aanmaken: postinstance postrm preinst prerm md5sums controle)
  3. Afhankelijkheden in herstellen control (gebruik een teksteditor)
  4. Repack control.tar.gz: tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
  5. Debug herpakken: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz (bestel belangrijk! Zie [Note])

[Opmerking]: dpkg zou de metadata van een pakket niet snel kunnen lezen als het moest zoeken naar waar de gegevenssectie eindigde!


47
2018-04-27 21:29



Leuk, het lost voor mij een speciaal geval van afhankelijkheden op voor "raring8" tot "raring6" maar dezelfde versie = (, heel erg bedankt - Felipe Alcacibar
Dank ook van mij; Ik moest dit gebruiken omdat een applicatie vereist was libmng1.so.1 ook al werkte het perfect met een symlink ingesteld op libmng1.so.2. apt-get kon gewoon niet gemuilkorfd worden en bleef me irriteren over onvervulde afhankelijkheden (zelfs bij het installeren van iets dat totaal niets met elkaar te maken heeft!). Wat een hoop vuilnisconcept. - syntaxerror
+1 Dit werkte ook perfect voor mij. Pakket gnome-settings-daemon gezocht gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11 maar ik heb het al gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2 (<- let op de ".2" aan het einde). Met deze procedure kon ik het pakket bewerken en dwingen om de nieuwere 11.2-versie te gebruiken. DANK JE! - Eric Duncan
Geweldige oplossing, bedankt. Ik heb stap 2 en 4 een beetje gewijzigd: 2. FILES=$(tar zxvf control.tar.gz) om de bestandslijst op te slaan in een variabele. 4. tar zcf control.tar.gz $FILES - maak het archief in één stap zonder leidingen of omleidingen met behulp van de originele bestandslijst (na wijziging). - Brett
Nog een paar suggesties. Voor # 4: toevoegen --ignore-failed-read zodat tar negeert ontbrekende bestanden van de rest van de opdrachtregel. (Bijvoorbeeld, prerm,postrm zijn afwezig in veel pakketten.) Ook kunnen de tarballs zijn .xz liever dan .gz in nieuwere versies van het Debian-archiefformaat (bijv. data.tar.xz). - Dan Lenski


Eenvoudige en eenvoudige oplossing: geef gewoon de ongewenste pakketten op met een extra - na elk van hen.

Voorbeeld zonder de - schakelaar:

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
[...]

Voorbeeld met de schakelaar naar vermijd installatie  exim4-base. Let op de - aan het einde:

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
[...]

Zoals je kunt zien, apt-get probeert niet meer het exim4-base pakket, en het probeert niet zijn verschillende afhankelijkheden te installeren (exim4-config enz).

En als je ongelijk had en dat nodig had exim4-base afhankelijkheid immers, je kunt gewoon apt-get install het later!


32
2018-01-30 19:43



Dit is de beste manier om vermijd installatie elke specifieke afhankelijkheid. De andere antwoorden voorkomen ofwel dat alle afhankelijkheden worden geïnstalleerd, afhankelijkheden worden verwijderd nadat ze zijn geïnstalleerd, of stellen voor dat je langzamer pakketten bewerkt. - Neil
Dit was precies wat ik nodig had! (installeren gnupg2 zonder pinentry-gtk2 om X-deps te vermijden) - lapo
Dat is echt geweldig, maar in mijn geval weigert apt-get het pakket te installeren met "onvervulde afhankelijkheden" (die ik met deze methode heb gespecificeerd). Specifiek een documentatiepakket van 100 megabyte waar ik niet om geef. - Rolf
Werkt alleen met optionele afhankelijkheden, niet met vereiste afhankelijkheden. Foutmelding: Depends: xxx but it is not going to be installed. U kunt alle optionele pakketten overslaan met apt-get install --no-install-recommends PACKAGE - koppor


Nadat u het pakket met de --ignore-depends  optie, ga en bewerk de /var/lib/dpkg/status bestand en verwijder elke afhankelijkheid waarvan u denkt dat die niet nodig is. Wees gewoon heel voorzichtig. Om een ​​dep. vereist zijn, is het meer dan waarschijnlijk WORDEN verplicht


29
2018-05-11 21:33



Na het updaten /var/lib/dpkg/status het kan nodig zijn om de installatie af te maken met sudo apt-get -f install (geen behoefte om een ​​pakket te specificeren). - Zmicier Zaleznicenka
Ook hier te vinden: superuser.com/a/815371/127024. - Johann


Aangezien u postfix vanaf de bron hebt geïnstalleerd, moet u een "dummy" -pakket installeren dat voldoet aan de mail-transport-agentafhankelijkheid van mailx (of bsd-mailx). Het "equivs" -pakket in debian bestaat om zo'n dummy-pakket te maken dat je kunt installeren om dpkg te laten weten "deze afhankelijkheid is tevreden"

De reden dat het vertellen van dpkg om afhankelijkheden simpelweg te negeren geen goede oplossing is, is dat je dpkg / apt alleen vertelt om het te negeren voor een enkele transactie, je kunt niet zeggen dat het dependencies voor altijd negeert. Telkens wanneer u apt gebruikt, worden de afhankelijkheden gecontroleerd allemaal pakketjes


12
2018-03-23 22:40



Zie ook dit antwoord dat linkt naar een tutorial (hoewel het te ingewikkeld is) superuser.com/a/416560/128960. Korte versie is: uitvoeren equivs-control <name>, bewerk het geproduceerde bestand om de juiste afhankelijkheid te bieden en een mooie naam te hebben, en voer dan uit equivs-build <name> en tenslotte dpkg -ihet resulterende .deb-bestand. - Christian
IMHO dit is echt de mooiste oplossing. Alle andere oplossingen die hier worden aangevraagd, zijn een beetje te hackish. Deze hoeft maar één keer te worden gedaan en je kunt elke software installeren, afhankelijk van de zelf-gecompileerde software achteraf ... Dus laten we dit antwoord goed vinden! - rugk


Ik was op zoek naar deze optie op een Ubuntu 12.04 Server met Xen. In mijn domeinen gebruik ik de -virtual kernel en apt probeerde permanent grub te installeren bij elke upgrade van het kernelpakket. Grub is echter niet nodig in de domU bij het gebruik van p [yv] grub.

Ik was op zoek naar de -nodeps optie om ook apt-get te gebruiken, maar het werkte niet, dus eindigde met het verwijderen / zuiveren van grub * na elke kernel-upgrade.

Tenslotte, echt lezing een man-pagina helpt soms - het blijkt dat een soortgelijke apt-get-optie op 12.04 lijkt te --no-install-adviseert, wat in dit geval echt werkt, omdat grub wordt vermeld als 'aanbevolen' in de pakketinformatie (ik vermoed dus het is geen "echte" afhankelijkheid?).

Ik voeg dit hier toe omdat in mijn geval een soortgelijk probleem is opgelost en de hint voor '--no-install-adviss' nog niet is genoemd.


7
2017-11-14 12:18





U kunt het pakket downloaden met apt-get en het vervolgens met dpkg installeren, waarbij u handmatig de afhankelijkheid opsomt die u wilt negeren.

Als ik bijvoorbeeld mypackage wil downloaden maar het is afhankelijk van libperl5.14 en ik wil libperl5.14 niet installeren omdat ik een andere versie heb, kan ik deze afhankelijkheid als volgt negeren:

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

6
2017-08-21 11:16



Om maar te zwijgen over het feit dat dit je apt "gebroken" laat. U kunt pas andere pakketten installeren als u de ontbrekende afhankelijkheid hebt hersteld. - drpexe


Een alternatieve manier om de afhankelijkheden handmatig aan te passen is:

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

3
2017-07-05 04:14





Voor de doeleinden hiervan kunt u gewoon installeren nagel waarvan ik niet denk dat deze afhankelijkheden zijn?

apt-get install nail

1
2018-03-22 08:30





Op mijn debian-systeem is bsd-mailx eigenlijk afhankelijk default-mta | mail-transport-agent (u kunt controleren waar een pakket van afhankelijk is apt-cache show <pkg> voor alles in het archief of dpkg -s <pkg> voor geïnstalleerde pakketten.

Het kan zijn dat uw postfix-pakket geen Provides: mail-transport-agent zo apt beseft niet dat je een MTA hebt geïnstalleerd. Het zou de moeite waard zijn om daar een fout in te maken als het een officieel pakket is.


1
2018-03-22 15:22





Nou - niet doen.

Het gebruik van andermans werk is erg belangrijk op weg naar enig succes. Wanneer je wat software bouwt van broncode (tarball), mis je de kans om het werk van de distro's pakketmanager te gebruiken.

U krijgt geen "gratis" updates. Meestal worden de pakketten die ze van de bron hebben geïnstalleerd, nooit bijgewerkt. Omdat ze de software moeten volgen voor nieuwe versies, het opnieuw moeten opbouwen en alle afhankelijke programma's (probeer ze te onthouden).

U zult problemen hebben met andere pakketten uit de repo's van uw distributie. Dit is precies het geval in de vraag: ubuntu heeft een geweldige pakketbeheerder en een paar hele aardige mensen die de pakketten onderhouden. En ze hebben besloten dat voor het werken met het mailx-programma je een MTA nodig hebt. Dus als u postfix vanaf bronnen hebt geïnstalleerd, zou ubuntu u niet vragen om exim te installeren.

Als om welke reden dan ook het onderhoud van de server aan een andere persoon wordt doorgegeven (bijvoorbeeld uw project wordt zeer succesvol en u besluit een andere persoon in dienst te nemen om de servers te beheren terwijl u met andere dingen bezig bent), zal hij natuurlijk verwachten te lopen dpkg --get-selections om alle geïnstalleerde pakketten te krijgen.

Probeer de pakketbeheersoftware van distro zoveel mogelijk te gebruiken. Leer om je eigen pakketten te bouwen als je er geen kunt vinden en je zult een betere professional worden.


-5
2018-05-11 22:01