Comment faire en sorte qu'apt-get ignore certaines dépendances? Par exemple, je voulais installer mailx afin de pouvoir l'utiliser pour envoyer des courriers électroniques à partir de scripts cron / d'outils générant des rapports. Cependant, installer mailx installe également exim4 et tout un tas de dépendances (Postfix est déjà installé), ce dont je n’ai pas vraiment besoin et dont mailx peut aussi vivre sans.
Comment ignorer certaines dépendances mais utiliser quand même apt-get car c'est un bel outil?
APT::Install-Recommends "false";
à votre fichierapt.conf
.Réponses:
Solution simple et facile: il suffit de spécifier les paquets indésirables avec un extra
-
après chacun d’eux.Exemple sans le
-
commutateur:Exemple d'utilisation du commutateur pour éviter l'installation
exim4-base
. Notez le-
à la fin:Comme vous pouvez le constater,
apt-get
n’essaye plus d’installer leexim4-base
paquet, ni d’installer ses différentes dépendances (exim4-config
etc).Et si vous aviez tort et que vous aviez besoin de cette
exim4-base
dépendance, vous pourrez le faireapt-get install
plus tard!la source
gnupg2
sanspinentry-gtk2
pour éviter X deps)Depends: xxx but it is not going to be installed
. Vous pouvez ignorer tous les forfaits optionnels avecapt-get install --no-install-recommends PACKAGE
Vous pouvez changer les dépendances d'un paquet deb comme ceci:
ar x golden-linux.deb
(créera trois fichiers: debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz
(créera: postinst postrm preinst prerm md5sums control)control
(utilise un éditeur de texte)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
(ordre important! Voir [Note])[Note]: dpkg ne serait pas capable de lire rapidement les métadonnées d'un paquet s'il devait chercher où finissait la section de données!
la source
libmng1.so.1
même si elle fonctionnait parfaitement avec un lien symbolique défini surlibmng1.so.2
.apt-get
ne pouvais tout simplement pas être muselé et continuait à m'agacer à propos de dépendances non satisfaites (même lors de l'installation de quelque chose de totalement indépendant!). Quel concept de charge de déchets.gnome-settings-daemon
voulugnome-settings-daemon-schemas=3.8.6.1-0ubuntu11
mais j’ai déjàgnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2
(<- remarquez le ".2" à la fin). Cette procédure m'a permis d'éditer le package et de le forcer à utiliser la version 11.2 la plus récente. MERCI!FILES=$(tar zxvf control.tar.gz)
pour stocker la liste de fichiers dans une variable. 4.tar zcf control.tar.gz $FILES
- Créez l'archive en une seule étape sans canal ou redirection à l'aide de la liste de fichiers d'origine (après modification).--ignore-failed-read
pourtar
ignorer les fichiers manquants du reste de la ligne de commande. (Par exemple,prerm
,postrm
sont absents de nombreux paquets.) En outre, les tarballs peuvent être.xz
plutôt que.gz
dans les versions plus récentes du format de l' archive Debian (par exempledata.tar.xz
).Après avoir installé le paquet avec l'
--ignore-depends
option, allez éditer le/var/lib/dpkg/status
fichier et supprimez toute dépendance que vous jugez inutile. Sois juste très prudent. Dans l'ordre un dep. être requis, il est plus que probable d' être requisla source
/var/lib/dpkg/status
à jour, il peut être nécessaire de terminer l'installation avecsudo apt-get -f install
(pas besoin de spécifier un package).Vous pouvez essayer le
--nodeps
drapeau avecapt-get
.Ou téléchargez le package et installez-le
dpkg
avec l'option--ignore-depends
.Par exemple, si vous souhaitez installer un package
foo
sans dépendancebar
:la source
--no-install-recommends
a travaillé pour moi.Puisque vous avez installé postfix à partir des sources, vous devez installer un paquet "factice" qui satisfera à la dépendance mail-transport-agent de mailx (ou bsd-mailx). Le paquet "equivs" dans debian existe pour créer un paquet factice que vous pouvez installer pour dire à dpkg que "cette dépendance est satisfaite"
Dire que simplement ignorer les dépendances n’est pas une bonne solution, c’est que vous ne dites qu’à dpkg / apt de l’ignorer pour une seule transaction. Vous ne pouvez pas lui dire d’ignorer les dépendances pour toujours. Chaque fois que vous utilisez apt, il vérifie les dépendances de tous les paquets
la source
equivs-control <name>
, éditez le fichier produit pour fournir la bonne dépendance et un bon nom, puis exécutezequivs-build <name>
et enfindpkg -i
le fichier .deb obtenu.Je cherchais cette option sur un serveur Ubuntu 12.04 exécutant Xen. Dans mes domaines, j'utilise le noyau -virtual et apt a essayé d'installer grub à chaque mise à jour du paquet du noyau. Cependant, grub n’est pas nécessaire à l’intérieur de la domU lorsqu’on utilise p [yv] grub.
Je recherchais également l'option -nodeps pour apt-get, mais cela ne fonctionnait pas et j'ai donc fini par désinstaller / purger grub * après chaque mise à niveau du noyau.
Après tout, il est parfois utile de lire une page de manuel - il s'avère qu'une option similaire d'apt-get sur 12.04 semble être --no-install-recommend, ce qui fonctionne réellement dans ce cas, puisque grub est répertorié comme "recommandé" dans la liste déroulante. informations sur le paquet (je suppose donc que ce n'est pas une "vraie" dépendance?).
J'ajoute ceci ici parce que dans mon cas, cela résolvait un problème similaire, et l'indice pour '--no-install-recommend' n'était pas encore mentionné.
la source
Vous pouvez télécharger le paquet avec apt-get puis l’installer avec dpkg, en listant manuellement la dépendance que vous souhaitez ignorer.
Par exemple, si je veux télécharger mypackage mais que cela dépend de libperl5.14 et que je ne veux pas installer libperl5.14 car j'ai une version différente, je peux ignorer cette dépendance comme suit:
la source
Une autre façon de modifier manuellement les dépendances est la suivante:
la source
Sur mon système Debian, bsd-mailx dépend en fait
default-mta | mail-transport-agent
(vous pouvez vérifier en quoi un paquet dépendapt-cache show <pkg>
de quoi que ce soit dans l’archive oudpkg -s <pkg>
pour les paquets installés.Il se peut que votre paquet postfix ne l’ait pas,
Provides: mail-transport-agent
donc apt ne se rend pas compte qu’un MTA est installé. Il vaudrait la peine de signaler un bogue pour cela si c'est un paquet officiel.la source
Pour ce faire, vous pourriez simplement installer un clou qui, je pense, n’a pas ces dépendances?
la source
Eh bien, non.
Utiliser le travail des autres est très important pour réussir. Lorsque vous construisez un logiciel à partir du code source (tarball), vous manquez l'occasion d'utiliser le travail du gestionnaire de paquets de la distribution.
Vous n'obtiendrez pas de mises à jour "gratuites". La plupart du temps, personne ne met à jour les paquets qu'ils ont installés à partir des sources. Parce qu'ils ont besoin de suivre le logiciel pour les nouvelles versions, reconstruisez-le et tous les programmes dépendants (essayez de les mémoriser).
Vous aurez des problèmes avec d’autres paquets issus du dépôt de votre distribution. C’est exactement le cas indiqué dans la question: Ubuntu a un excellent gestionnaire de paquets et de très bonnes personnes qui gèrent les paquets. Et ils ont décidé que, pour que le programme mailx fonctionne, vous avez besoin d'un MTA. Donc, si vous avez installé postfix à partir de sources, Ubuntu ne vous demandera pas d’installer exim.
Si, pour une raison quelconque, la maintenance du serveur est confiée à une autre personne (par exemple, votre projet rencontre un franc succès et vous décidez de confier la gestion d’un serveur à un autre utilisateur), il s’attendra naturellement à courir
dpkg --get-selections
pour obtenir tous les paquets installés.Essayez d'utiliser le logiciel de gestion de paquets de la distribution autant que possible. Apprenez à construire vos propres packages si vous ne trouvez pas un logiciel pré-construit et vous deviendrez un meilleur professionnel.
la source