O apt-get build-dep não consegue encontrar um pacote de origem

16

Eu já segui este guia para desativar a colagem do botão do meio do mouse no meu Ubuntu 12.04.

Funciona como um encanto.

Agora estou tentando conseguir o mesmo no meu Linux Mint 17. Quando tento

sudo apt-get build-dep libgtk2.0-0

isso me dá a seguinte saída:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'
E: Unable to find a source package for gtk+2.0

Para mim parece que o apt-get é de alguma forma "resolver" 'libgtk2.0-0'a 'gtk+2.0', mas depois não encontrar nenhum pacote chamado assim.

EDIT: embora agora eu possa compilar o programa (veja minha resposta), ainda não sei o que Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'deve significar. Qualquer visão sobre isso seria apreciada, obrigado!

panepeter
fonte
Você ativou o deb-srcrepositório relevante em seu /etc/apt/sources.list?
steeldriver

Respostas:

18

Como outros já observaram, verifique se, para cada deb …entrada em /etc/apt/sources.liste /etc/apt/sources.list.d/*, você tem uma deb-src …entrada correspondente . O restante da linha deve ser idêntico. A debentrada é para pacotes binários (por exemplo, prontos para instalar), e deb-srcé para pacotes de origem (por exemplo, prontos para compilar). A razão pela qual os dois tipos de fontes são separados é que eles são gerenciados de maneira muito diferente: os pacotes binários têm um mecanismo de rastreamento de dependências e uma lista atualmente instalada, enquanto os pacotes de fontes são rastreados apenas para que possam ser baixados de maneira conveniente. Observe que, ao discutir repositórios de pacotes, a palavra source significa duas coisas não relacionadas: uma fonte como um local para o download de pacotes e uma fonte em oposição a um pacote binário.

libgtk2.0-0é o nome de um pacote binário. Ele é construído a partir de um pacote de origem chamado gtk+2.0. O motivo pelo qual os nomes de pacotes binários e de origem nem sempre correspondem é que a criação de um pacote de origem pode produzir vários pacotes binários; por exemplo, gtk+2.0é a fonte de 14 pacotes, pois é dividido em duas bibliotecas ( libgtk2.0libgail ), corresponding packages to build programs using these libraries (… -dev ), documentation for developers (… -doc ), companion programs (libgtk2.0-bin`), etc.

Você pode ver o nome do pacote de origem correspondente a um pacote binário, verificando a Source: …linha na saída de dpkg -s BINARY_PACKAGE_NAME(se o pacote estiver instalado) ou apt-cache show BINARY_PACKAGE_NAME. Você pode listar os pacotes binários produzidos por um pacote de origem com aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

O comando apt-get sourcebaixa um pacote de origem. Se você der um argumento que não seja um pacote de origem conhecido, ele o pesquisará no banco de dados de pacotes binários instaláveis ​​e tentará fazer o download do pacote de origem correspondente. O comando apt-get build-depsegue a mesma abordagem para deduzir o nome de um pacote de origem, depois consulta o banco de dados do pacote de origem para obter uma lista de pacotes binários (a lista no Build-Dep:campo) e instala esses pacotes binários.

A GUI de fontes de software possui uma caixa de seleção "ativar repositórios com código-fonte" para repositórios oficiais, verifique se está marcada. Se você adicionar repositórios de terceiros manualmente, certifique-se de adicionar ambos deb-srce deblinhas.

Gilles 'SO- parar de ser mau'
fonte
6

Graças a @steeldriver, eu descobri o que fazer.

Só tive que adicionar o seguinte ling ao meu /etc/apt/sources.list:

deb-src ftp://ftp.de.debian.org/debian/ stable main contrib

Os repositórios deb-src contêm pacotes fontes (em oposição aos pacotes binários prontos para instalar) necessários para a compilação.

Edit: Depois de adicionar isso, você deve executar sudo apt-get update

panepeter
fonte
5

Método CLI

sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update

Testado na imagem do Ubuntu 18.04 Docker. Após essa alteração, posso fazer com êxito, por exemplo:

sudo apt-get build-dep hello

e antes da alteração, falhava com o erro:

E: You must put some 'source' URIs in your sources.list

software-properties-gtk opção "Código fonte"

Na GUI, você pode executar:

software-properties-gtk

depois, na guia "Ubuntu Software", clique em "Código-fonte":

insira a descrição da imagem aqui

Isso adicionou algumas deb-srclinhas abaixo /etc/apt/sources.list, e agora eu posso fazer sudo apt-get build-dep <package>.

Testado no Ubuntu 16.04 a 18.04.

Ciro Santilli adicionou uma nova foto
fonte