Wie kann ich apt-get dazu bringen, einige Abhängigkeiten zu ignorieren? Ich wollte zum Beispiel mailx installieren, damit ich damit E-Mails von Cron-Skripten / Tools zur Berichterstellung senden kann. Die Installation von mailx installiert jedoch auch exim4 und eine ganze Reihe von Abhängigkeiten (ich habe bereits Postfix installiert), die ich nicht wirklich brauche und auf die mailx vermutlich auch verzichten kann.
Wie kann ich einige Abhängigkeiten ignorieren und trotzdem apt-get verwenden, da es ein gutes Tool ist?
APT::Install-Recommends "false";
Sie sie einfach zu Ihren hinzuapt.conf
.Antworten:
Einfache und unkomplizierte Lösung: Geben Sie
-
nach jedem unerwünschten Paket ein zusätzliches an.Beispiel ohne den
-
Schalter:Beispiel mit dem Schalter, um die Installation zu vermeiden
exim4-base
. Beachten Sie die-
am Ende:Wie Sie sehen,
apt-get
wird nicht mehr versucht, dasexim4-base
Paket zu installieren , und es wird nicht versucht, die verschiedenen Abhängigkeiten (exim4-config
usw.) zu installieren .Und wenn Sie sich geirrt haben und diese
exim4-base
Abhängigkeit doch gebraucht haben, können Sie es einfachapt-get install
später tun!quelle
gnupg2
ohnepinentry-gtk2
X Deps zu vermeiden)Depends: xxx but it is not going to be installed
. Sie können alle optionalen Pakete mitapt-get install --no-install-recommends PACKAGE
Sie können die Abhängigkeiten eines Deb-Pakets folgendermaßen ändern:
ar x golden-linux.deb
(erzeugt zB drei Dateien: debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz
(wird erstellen: postinst postrm preinst prerm md5sums control)control
(Texteditor verwenden)tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
(Reihenfolge wichtig! Siehe [Anmerkung])[Anmerkung]: dpkg wäre nicht in der Lage, die Metadaten eines Pakets schnell zu lesen, wenn es danach suchen müsste, wo der Datenabschnitt endet!
quelle
libmng1.so.1
, obwohl sie mit einem auf gesetzten Symlink perfekt funktioniertelibmng1.so.2
.apt-get
Ich konnte mich einfach nicht täuschen lassen und nervte mich immer wieder über unerfüllte Abhängigkeiten (selbst wenn ich etwas installierte, das absolut nichts damit zu tun hatte!). Was für ein Müllkonzept.gnome-settings-daemon
wolltegnome-settings-daemon-schemas=3.8.6.1-0ubuntu11
ich aber schon habengnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2
(<- beachte die ".2" am Ende). Mit diesem Verfahren konnte ich das Paket bearbeiten und die Verwendung der neueren Version 11.2 erzwingen. DANKESCHÖN!FILES=$(tar zxvf control.tar.gz)
um die Dateiliste in einer Variablen zu speichern. 4.tar zcf control.tar.gz $FILES
- Erstellen Sie das Archiv in einem einzigen Schritt ohne Pipes oder Redirects unter Verwendung der ursprünglichen Dateiliste (nach der Änderung).--ignore-failed-read
damittar
fehlende Dateien in der restlichen Befehlszeile ignoriert werden. (Zum Beispielprerm
,postrm
sind aus vielen Paketen fehlen.) Auch kann der tarballs sein ,.xz
anstatt.gz
in neueren Versionen des Debian - Archiv - Formats (zBdata.tar.xz
).Nachdem Sie das Paket mit der
--ignore-depends
Option installiert haben , bearbeiten Sie die/var/lib/dpkg/status
Datei und entfernen Sie alle Abhängigkeiten, die Ihrer Meinung nach nicht benötigt werden. Sei einfach sehr vorsichtig. Um eine dep. erforderlich ist, ist es mehr als wahrscheinlich BE erforderlichquelle
/var/lib/dpkg/status
kann es erforderlich sein, die Installation mitsudo apt-get -f install
(ohne Angabe eines Pakets) abzuschließen.Sie können die
--nodeps
Flagge mit probierenapt-get
.Oder laden Sie das Paket herunter und installieren Sie es
dpkg
mit der Option--ignore-depends
.Wenn Sie beispielsweise ein Paket
foo
ohne Abhängigkeit installieren möchtenbar
:quelle
--no-install-recommends
arbeitete für mich.Da Sie Postfix aus dem Quellcode installiert haben, müssen Sie ein "Dummy" -Paket installieren, das die Mail-Transport-Agent-Abhängigkeit von mailx (oder bsd-mailx) erfüllt. Das Paket "equivs" in debian existiert, um ein solches Dummy-Paket zu erstellen, das Sie installieren können, um dpkg mitzuteilen, dass "diese Abhängigkeit erfüllt ist".
Der Grund dafür, dass dpkg angewiesen wird, Abhängigkeiten einfach zu ignorieren, ist keine gute Lösung, da Sie dpkg / apt nur anweisen, sie für eine einzelne Transaktion zu ignorieren. Sie können dpkg nicht anweisen, Abhängigkeiten für immer zu ignorieren. Jedes Mal, wenn Sie apt verwenden, werden die Abhängigkeiten aller Pakete überprüft
quelle
equivs-control <name>
, die erzeugte Datei bearbeiten, um die richtige Abhängigkeit bereitzustellen und einen schönen Namen zu haben, dann ausführenequivs-build <name>
und schließlichdpkg -i
die resultierende .deb-Datei.Ich habe nach dieser Option auf einem Ubuntu 12.04-Server gesucht, auf dem Xen ausgeführt wird. In meinen Domains verwende ich den -virtuellen Kernel und versuche beharrlich, grub mit jedem Kernel-Paket-Upgrade zu installieren. Grub wird jedoch nicht in der domU benötigt, wenn p [yv] grub verwendet wird.
Ich habe auch nach der Option -nodeps gesucht, um apt-get zu verwenden, aber es hat nicht funktioniert. Daher wurde grub * nach jedem Kernel-Upgrade deinstalliert / gelöscht.
Schließlich hilft es manchmal , eine Manpage wirklich zu lesen - es stellt sich heraus, dass eine ähnliche apt-get-Option für 12.04 zu sein scheint - no-install-recommends, was in diesem Fall tatsächlich funktioniert, da grub in der Liste als 'Recommended' aufgeführt ist Paketinformationen (Ich denke, es ist also keine "echte" Abhängigkeit?).
Ich füge dies hier hinzu, weil in meinem Fall ein ähnliches Problem behoben wurde und der Hinweis für '--no-install-recommends' noch nicht erwähnt wurde.
quelle
Sie können das Paket mit apt-get herunterladen und dann mit dpkg installieren, wobei Sie die Abhängigkeit, die Sie ignorieren möchten, manuell auflisten.
Wenn ich zum Beispiel mein Paket herunterladen möchte, es aber von libperl5.14 abhängt und ich libperl5.14 nicht installieren möchte, da ich eine andere Version habe, kann ich diese Abhängigkeit wie folgt ignorieren:
quelle
Eine alternative Möglichkeit, die Abhängigkeiten manuell zu optimieren, ist:
quelle
Auf meinem Debian-System ist bsd-mailx tatsächlich abhängig von
default-mta | mail-transport-agent
(Sie können überprüfen, wovon ein Paketapt-cache show <pkg>
für alles im Archiv oderdpkg -s <pkg>
für installierte Pakete abhängt .Es kann sein, dass Ihr Postfix-Paket nicht über
Provides: mail-transport-agent
Folgendes verfügt: apt merkt nicht, dass Sie einen MTA installiert haben. Wenn es sich um ein offizielles Paket handelt, lohnt es sich, dafür einen Bug einzureichen.quelle
Zu diesem Zweck können Sie einfach einen Nagel installieren, von dem ich glaube, dass er diese Abhängigkeiten nicht hat.
quelle
Nun - tu es nicht.
Die Arbeit anderer zu nutzen ist sehr wichtig, um erfolgreich zu sein. Wenn Sie Software aus dem Quellcode (Tarball) erstellen, verpassen Sie die Gelegenheit, die Arbeit des Paketmanagers der Distribution zu nutzen.
Sie erhalten keine "kostenlosen" Updates. In den meisten Fällen werden die von ihnen aus dem Quellcode installierten Pakete nie aktualisiert. Da sie die Software für neue Versionen nachverfolgen müssen, müssen sie und alle abhängigen Programme neu erstellt werden (versuchen Sie, sich an sie zu erinnern).
Sie haben Probleme mit anderen Paketen aus den Repos Ihrer Distribution. Dies ist genau der Fall, der in der Frage angegeben ist: Ubuntu hat einen großartigen Paketmanager und einige sehr nette Leute, die die Pakete warten. Und sie haben entschieden, dass für das Mailx-Programm ein MTA benötigt wird. Wenn Sie also Postfix aus Quellen installiert hätten, würde Ubuntu Sie nicht bitten, exim zu installieren.
Wenn aus irgendeinem Grund die Wartung des Servers an eine andere Person weitergegeben wird (z. B. Ihr Projekt wird sehr erfolgreich und Sie entscheiden sich, einen anderen Mitarbeiter einzustellen, der die Server verwaltet, während Sie mit anderen
dpkg --get-selections
Dingen beschäftigt sind), wird er natürlich damit rechnen, die gesamte Wartung zu übernehmen installierte Pakete.Versuchen Sie, die Paketverwaltungssoftware der Distribution so oft wie möglich zu verwenden. Erfahren Sie, wie Sie Ihre eigenen Pakete erstellen, wenn Sie keine vorgefertigte finden und ein besserer Profi werden.
quelle