web-dev-qa-db-fra.com

Ignorer des dépendances non satisfaites spécifiques avec aptitude?

Voici ma situation: j'ai installé un programme appelé ipe "forcablement" via un paquet deb; la raison en est que ipe dépend de texlive-latex-base, cependant, je gère déjà une installation séparée de latex via tlmgr. Ce type d’installation de ipe ne pose aucun problème, du moment que je me souviens de l’exécuter depuis un terminal, ce qui me convient parfaitement.

Le problème est que cette dépendance cassée ne me permet pas maintenant d'installer des paquets qui ne sont absolument pas liés - dans ce cas, dropbox:

$ Sudo apt-get install dropbox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 ipe : Depends: texlive-latex-base but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Maintenant, si j'essaie -f install, cela va essayer de réparer l'installation de ipe, ce que je fais pas je veux.

Il s'avère que aptitude pourrait offrir un moyen d'ignorer/ignorer cette dépendance:

$ Sudo aptitude install dropbox
The following NEW packages will be installed:
  dropbox 
The following partially installed packages will be configured:
  ipe{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 93,0 kB of archives. After unpacking 410 kB will be used.
The following packages have unmet dependencies:
  ipe: Depends: texlive-latex-base but it is not going to be installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     ipe                         



Accept this solution? [Y/n/q/?] 1
Action "1": Removing ipe

Package: ipe
State: unpacked
Automatically installed: no
Version: 7.0.10-2
Priority: optional
...

This action was selected because ipe depends upon texlive-latex-base.

Enter "r 1" to prevent this action from appearing in new solutions.
Enter "a 1" to require that new solutions include this action if possible.

Accept this solution? [Y/n/q/?] r 1
Rejecting the removal of ipe
The following actions will resolve these dependencies:

     Remove the following packages:
1) R   ipe                         



Accept this solution? [Y/n/q/?] y
The following NEW packages will be installed:
  dropbox 
The following packages will be REMOVED:
  ipe{a} 
0 packages upgraded, 1 newly installed, 1 to remove and 1 not upgraded.
Need to get 93,0 kB of archives. After unpacking 5.034 kB will be freed.
Do you want to continue? [Y/n/?] n
Abort.

La chose étrange est: même si je spécifie r 1 - et le programme le confirme avec "Rejecting the removal of ipe" - I toujours obtenir "The following packages will be REMOVED" à la fin , quel est ce que je fais spécifiquement pas veut faire? (Btw, j'ai aussi essayé a 1, et les résultats finaux sont complètement les mêmes, "... seront supprimés", bien que ce soit l'action que j'attendrais pour ce choix).

Où vais-je mal? Est-ce que je comprends mal ce qu'ils entendent par "nouvelles solutions"? Et y a-t-il un moyen de faire savoir au système apt/aptitude que je préférerais qu'il ignore les dépendances non satisfaites de (dans ce cas) ipe?

1
sdaau

EDIT: Ok, comme indiqué ci-dessous, le "rejet de la suppression ..." dans aptitude ne fonctionne pas - c’est ce qui a réussi à fonctionner pour moi, bien que ...

En cherchant, par exemple, Package: ipe, on peut frapper des fichiers tels que:

$ grep -r 'Package: ipe' /var/lib/apt/lists/
...
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_universe_binary-i386_Packages:Package: ipe
...
/var/lib/apt/lists/old-releases.ubuntu.com_ubuntu_dists_natty_universe_binary-i386_Packages:Package: ipe
...

... cependant, ils ne sont pas corrects - apparemment, les informations d'exécution de apt-get etc. sont stockées dans /var/lib/dpkg/status (via Comment puis-je résoudre un "Problème avec MergeList" ou "status Le fichier n'a pas pu être analysé "erreur lors d'une tentative de mise à jour? ).

Donc, j'ai ouvert ce fichier via Sudo nano /var/lib/dpkg/status, et j'ai cherché "Package: ipe", puis j'ai essayé de commenter la partie texlive-latex-base de "Depends:" - d'abord en la mettant dans une ligne séparée, à en le commentant avec un signe dièse/hachage #. Notez que cela fonctionne not ​​fonctionne - vous obtiendrez tout d'abord des erreurs telles que:

dpkg: error: parsing file '/var/lib/dpkg/status' near line 8140 package 'ipe':
 field name `#,' must be followed by colon
E: Sub-process /usr/bin/dpkg returned an error code (2)

... alors si vous essayez d'ajouter ces deux points, comme dans #:, vous obtiendrez:

dpkg: error: parsing file '/var/lib/dpkg/status' near line 8141 package 'ipe':
 user-defined field name `#' too short
E: Sub-process /usr/bin/dpkg returned an error code (2)

Apparemment, ces fichiers n'utilisent pas de commentaires. et ils semblent être documentés dans Manuel de la politique Debian - Les fichiers de contrôle et leurs champs . Puis j'ai trouvé:

# 353040 DPKG-DEB] ne soyez pas si bruyant sur les champs définis par l'utilisateur dans DEBIAN/control - Les journaux de rapports de bogues Debian

La bonne façon d'inclure un champ dans le fichier .deb consiste à utiliser des champs nommés "XB- *".

... donc, fondamentalement, au lieu d'utiliser un caractère de commentaire pour "commenter" - je viens d'utiliser un champ défini par l'utilisateur, que j'ai appelé arbitrairement XB-Ignore:; donc cette partie de /var/lib/dpkg/status a fini par ressembler à ceci:

Package: ipe
...
Depends: libc6 (>= 2.4), libcairo2 (>= 1.2.4), libgcc1 (>= 1:4.1.1), libipe7.0.10, liblua5.1-0, libqtcore4 (>= 4:4.6.$
XB-Ignore: , texlive-latex-base, gsfonts
...

Avec cette modification enregistrée, je pouvais effectuer l’installation à l’aide de apt-get directement, sans problème:

$ Sudo apt-get install dropbox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  python-gpgme
The following NEW packages will be installed:
  dropbox
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
1 not fully installed or removed.
Need to get 0 B/93,0 kB of archives.
After this operation, 410 kB of additional disk space will be used.
Selecting previously deselected package dropbox.
...
Setting up dropbox (1.6.1) ...
Processing triggers for menu ...

Je noterai simplement que /var/lib/dpkg/status n’est pas un fichier persistant - en fait, juste après le apt-get install, si vous vérifiez à nouveau le fichier, Depends: et XB-Ignore: ne le seront plus. soyez sur les lignes voisines (comme elles étaient à l'origine, comme indiqué sur l'extrait ci-dessus)!


Alors que la question sur l’ignorance de la dépendance non satisfaite est toujours ouvert Comme indiqué ci-dessus - il s’avère que je --- [ai mal interprété ce que sont ces "nouvelles solutions": ce sont les choix que vous offre aptitude si vous répondez "non" à la "Accepter cette solution" ? " question:

...
The following packages have unmet dependencies:
  ipe: Depends: texlive-latex-base but it is not going to be installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     ipe                         


Accept this solution? [Y/n/q/?] r 1
Rejecting the removal of ipe
The following actions will resolve these dependencies:

     Remove the following packages:
1) R   ipe                         


Accept this solution? [Y/n/q/?] n                      # <==== here not accepting above solution
The following actions will resolve these dependencies: # <==== new solution offered here:

      Install the following packages:           
1)      lmodern [2.004.1-3 (natty)]             
2)      luatex [0.65.0-1ubuntu3 (natty)]        
3)      tex-common [2.09 (natty)]               
4)      texlive-base [2009-11 (natty)]          
5)      texlive-binaries [2009-8ubuntu2 (natty)]
6)      texlive-common [2009-11 (natty)]        
7)      texlive-doc-base [2009-2 (natty)]       
8)      texlive-latex-base [2009-11 (natty)]    
9)      texlive-latex-base-doc [2009-11 (natty)]
10)     texlive-luatex [2009-11 (natty)]        

Accept this solution? [Y/n/q/?] r 1
Rejecting the installation of lmodern version 2.004.1-3 (natty)
The following actions will resolve these dependencies:

      Install the following packages:           
1)  R   lmodern [2.004.1-3 (natty)]             
2)      luatex [0.65.0-1ubuntu3 (natty)]        
...

Accept this solution? [Y/n/q/?] r 10
Rejecting the installation of texlive-luatex version 2009-11 (natty)
The following actions will resolve these dependencies:

      Install the following packages:           
1)  R   lmodern [2.004.1-3 (natty)]             
2)  R   luatex [0.65.0-1ubuntu3 (natty)]        
3)  R   tex-common [2.09 (natty)]               
4)  R   texlive-base [2009-11 (natty)]          
5)  R   texlive-binaries [2009-8ubuntu2 (natty)]
6)  R   texlive-common [2009-11 (natty)]        
7)  R   texlive-doc-base [2009-2 (natty)]       
8)  R   texlive-latex-base [2009-11 (natty)]    
9)  R   texlive-latex-base-doc [2009-11 (natty)]
10) R   texlive-luatex [2009-11 (natty)]        


Accept this solution? [Y/n/q/?] n
*** No more solutions available ***

The following actions will resolve these dependencies:

      Install the following packages:           
1)  R   lmodern [2.004.1-3 (natty)]             
2)  R   luatex [0.65.0-1ubuntu3 (natty)]        
3)  R   tex-common [2.09 (natty)]               
4)  R   texlive-base [2009-11 (natty)]          
5)  R   texlive-binaries [2009-8ubuntu2 (natty)]
6)  R   texlive-common [2009-11 (natty)]        
7)  R   texlive-doc-base [2009-2 (natty)]       
8)  R   texlive-latex-base [2009-11 (natty)]    
9)  R   texlive-latex-base-doc [2009-11 (natty)]
10) R   texlive-luatex [2009-11 (natty)]        


Accept this solution? [Y/n/q/?] y
The following NEW packages will be installed:
  dropbox lmodern{a} luatex{a} tex-common{a} texlive-base{a} texlive-binaries{a} texlive-common{a} 
  texlive-doc-base{a} texlive-latex-base{a} texlive-latex-base-doc{a} texlive-luatex{a} 
The following partially installed packages will be configured:
  ipe 
0 packages upgraded, 11 newly installed, 0 to remove and 1 not upgraded.
Need to get 87,4 MB of archives. After unpacking 181 MB will be used.
Do you want to continue? [Y/n/?] n
Abort.

Donc oui - si je continue à rejeter toutes les solutions, à la fin, j'obtiendrai "*** Plus de solutions disponibles ***", et aptitude pourra soit aller avec ces solutions, soit abandonner - mais malheureusement, il ne peut pas ignorez-les avec cette technique ...

1
sdaau