O que significa a aptidão 'por que' e 'por que não'?

4

Nos manuais:

The command why finds a dependency chain that installs the package named on the command line, as above. Note that the dependency that aptitude produced in this case is only a suggestion. This is because no package currently installed on this computer depends on or recommends the kdepim package; if a stronger dependency were available, aptitude would have displayed it.

In contrast, why-not finds a dependency chain leading to a conflict with the target package:

No meu caso ( Ubuntu 14.04.2 LTS \n \l ), estou tentando instalar libdbus-1-3:i386

$ sudo apt-get install libdbus-1-3:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libdbus-1-3:i386 : Depends: libc6:i386 (>= 2.10) but it is not going to be installed
 unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
                        Depends: libcheese7 (>= 3.0.1) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Eu tentei aptitude why e aptitude why-not , esperando obter mais informações sobre o motivo da falha na instalação.

$ sudo aptitude why libdbus-1-3:i386
p   upstart:i386 Provides upstart                     
p   upstart:i386 Depends  libdbus-1-3:i386 (>= 1.2.16)

$ sudo aptitude why-not libdbus-1-3:i386
Unable to find a reason to remove libdbus-1-3:i386.

$ sudo aptitude why libc6:i386
p   sqlite3:i386 Provides sqlite3            
p   sqlite3:i386 Depends  libc6:i386 (>= 2.4)

$ sudo aptitude why-not libc6:i386
p   sqlite3:i386 Provides  sqlite3            
p   sqlite3:i386 Depends   libc6:i386 (>= 2.4)
p   libc6:i386   Conflicts libc6-xen:i386     
p   libc6:i386   Provides  libc6-xen:i386

Mas não consigo entender o significado da saída. Alguém pode me ajudar?

    
por zjk 19.05.2016 / 07:40

1 resposta

3

% dewhy do aptitude

Em suma, o comando aptitude ' why tenta dizer por que um pacote deve ser instalado ou já está instalado no sistema. Por exemplo, no meu sistema (Ubuntu 16.04) quando eu corri aptitude why nautilus-data , diz

i   unity-settings-daemon Depends nautilus-data (>= 2.91.3-1)

O que significa que unity-settings-daemon depende de nautilus-data e é por isso que é instalado, indicado pelo i na coluna mais à esquerda.

Novamente, quando eu executei aptitude why edubuntu-desktop , diz

Unable to find a reason to install edubuntu-desktop.

Porque nenhum dos meus pacotes instalados depende ou recomenda ( depende e recomenda o termo interno do apt) edubuntu-desktop

% dewhy-not do aptitude

why-not é o oposto de why . Ele tenta encontrar um motivo pelo qual um determinado pacote não deve ser instalado ou deve ser removido se já estiver instalado.

Por exemplo, quando digito aptitude why-not mate-power-manager:i386 , diz

i   mate-power-manager Conflicts mate-power-manager:i386

que significa que meu mate-power-manager:amd64 instalado irá entrar em conflito com mate-power-manager:i386 (Como meu sistema é uma instalação amd64, é por isso que ele não mencionou explicitamente amd64 ).

A parte relevante da página de manual é muito clara. Mas, inclusive, isso tornará a resposta muito longa. Aqui está o manual do aptitude

Sobre o seu problema

Quando você tentou instalar o libdbus-1-3:i386 , as mensagens aqui dizem

The following packages have unmet dependencies:
 libdbus-1-3:i386 : Depends: libc6:i386 (>= 2.10) but it is not going to be installed
 unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
                        Depends: libcheese7 (>= 3.0.1) but it is not going to be installed

o pacote libdbus-1-3:i386 requer libc6:i386 (>= 2.10) , mas não pode ser instalado. Também o pacote unity-control-center dependendo do libcheese-gtk23 (>= 3.4.0) e libcheese7 (>= 3.0.1) não pode ser instalado.

O motivo pelo qual não pode ser instalado pode ser muitos, incluindo a versão específica necessária para os pacotes que estão faltando ou entrará em conflito com a versão existente instalada, etc.

    
por Anwar 27.08.2016 / 18:23