instala um pacote movido para / var / cache / apt / archives manualmente?

4

Eu instalei wkhtmltopdf , por sudo apt-get install wkhtmltopdf . Sua versão é 0.9.9.

O

link diz que sua última versão estável é 0.12.2.1. Então eu baixei o deb para o Ubuntu 14.04.

Eu quero usar apt para instalar o deb baixado por razões declaradas no link e respostas relacionadas, então eu movo para /var/cache/apt/archives , mas ainda como posso instalá-lo usando apt ?

$ mv /tmp/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb /var/cache/apt/archives

$ sudo apt-get install wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
E: Couldn't find any package by regex 'wkhtmltox-0.12.2.1_linux-trusty-amd64.deb'

$ sudo apt-get install wkhtmltox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package wkhtmltox

$ sudo apt-get install wkhtmltopdf ainda instala a versão mais antiga. Obrigado.

    
por Tim 06.05.2015 / 14:46

3 respostas

6

Resumo rápido

Para instalar um pacote .deb baixado manualmente, baixe e instale automaticamente os pacotes dos quais ele depende dos repositórios configurados:

  • Você pode executar sudo apt-get -f install após instalar seu .deb com dpkg -i .
  • Ou use gdebi para instalar um pacote .deb e resolver automaticamente suas dependências ( apt-get não fará isso, mas gdebi e suas interfaces gráficas irão).

Veja abaixo os detalhes.

Por que apt-get não fará isso

apt-get verifica suas fontes de software configuradas (repositórios) e automaticamente baixa e instala pacotes. Exceto no caso em que um repositório configurado está inacessível, isso não permite que um comando apt-get install seja bem-sucedido, caso contrário não seria bem-sucedido. Se o pacote não estiver em um de seus repositórios, apt-get não saberá instalá-lo mesmo que o arquivo .deb esteja em /var/cache/apt/archives .

Assim:

  • Se você já tiver um pacote baixado e ele for o mesmo pacote apt-get será automaticamente baixado e instalado, então você pode colocar /var/cache/apt/archives e apt-get não tem que baixá-lo.

  • Se você já tiver um pacote baixado que não o mesmo pacote apt-get escolheria automaticamente, mas que está disponível em um repositório configurado, então você pode coloque-o em /var/cache/apt/archives e force apt-get para tentar instalá-lo em vez do pacote que preferir. Por exemplo:

    sudo apt-get install abiword=3.0.1-1
    
  • Nenhuma dessas situações se aplica ao seu caso. A versão específica do pacote não é fornecida por nenhum dos repositórios configurados, porque é uma versão de teste alfa do página de download . Como você não possui um repositório que forneça essa versão de esse pacote , não é possível instalar o arquivo .deb transferido manualmente com apt-get .

Caminho 1: instale com dpkg e resolva dependências com apt-get

Felizmente, não parece que você precise instalar este pacote com apt-get . Parece que seu objetivo real é

  1. para instalar o pacote .deb transferido manualmente, que não é fornecido pelos seus repositórios (que dpkg pode fazer, mas apt-get não pode) e também
  2. para instalar suas dependências que são fornecidas por seus repositórios (o que dpkg não pode fazer, mas apt-get pode).

Você pode fazer isso em duas etapas separadas:

  1. Instale o pacote com dpkg .

    sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    
  2. Isso criou dependências ausentes. apt-get pode corrigir dependências ausentes automaticamente.

    sudo apt-get -f install
    

    Isso também deve terminar automaticamente a configuração do pacote original. (Então você provavelmente não precisará executar sudo dpkg --configure -a ).

Caminho 2: use gdebi para instalar e resolver dependências

Enquanto apt-get não tenta instalar automaticamente um arquivo .deb arbitrário e suas dependências, existe uma ferramenta feita para este propósito: gdebi . De man gdebi :

% bl0ck_qu0te%

Para usar o gdebi em um terminal, execute gdebi package.deb como root, por exemplo:

sudo gdebi wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

O gdebi também possui front ends gráficos. Você provavelmente vai querer usar gdebi-gtk , o frontend do GTK + :

gksudo gdebi-gtk wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

Mas se você estiver executando o Kubuntu (ou usando o KDE), você pode preferir gdebi-kde , o frontend do KDE (fornecido pelo gdebi-kde pacote):

kdesudogdebi-kdewkhtmltox-0.12.2.1_linux-trusty-amd64.deb

Asfrontendsgráficastambémpodemserchamadassemargumentos(porexemplo,gksudogdebi-gtk),casoemquevocêpodeclicaremArquivo>Abraparaprocurareselecionaroarquivo.debdentrodaGUI.

    
por Eliah Kagan 06.05.2015 / 16:02
5

Para instalar um pacote de .deb armazenado localmente, use dpkg . Experimente:

sudo dpkg -i /path/to/your/package.deb

apt cuida dos problemas de dependência que dpkg não consegue.

Existe um projeto interessante dpkg-offline que está atualmente em desenvolvimento. Para citar o README do projeto,

This tool will download a set of .deb packages needed to install all of the given <packages-to-download>, with their dependencies satisfied, on an installation done from <base-iso>.

Você pode conferir a versão de desenvolvimento da ferramenta aqui . Eu não tentei, então não sei quão (un) estável ele é.

Aqui é um tutorial do ramo dev em Barra de lançamento sobre como instalar e usar dpkg-offline .

Bônus Haverá um show and tell event neste pacote no Ubuntu Online Summit em 2015-05-06 às 15:00.

    
por Ron 06.05.2015 / 14:52
3

apt-get não pode instalar um pacote deb , use dpkg :

sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    
por A.B. 06.05.2015 / 14:51

Tags