Eu quero baixar todas as dependências de compilação (recursivas) para poder compilar o pacote apt (debian) da fonte. No entanto, quando eu apt-get install path/*.debs
com debs que obtive pelo apt build-dep --download-only --assume-yes <package>
apt encontra pacotes adicionais para serem instalados e falha, mesmo com --no-install-recommends --ignore-missing
. Meu problema específico não obteve resposta no SO . Então eu investiguei mais e não vi esses pacotes adicionais na saída de run com sucesso apt build-dep <package>
, portanto, percebi (obviamente) que as dependências de compilação devem ser rastreadas de maneira diferente. Como?
Quero dizer, existem Depends/Suggests/Recommends
campos em um arquivo deb, mas não vi campos adicionais relacionados ao fornecimento. build-dep
resultou em ~150 arquivos deb encontrados, mas durante a instalação deles como pacotes, apt
encontrou dependências adicionais.
Eu tentei ler Packaging/SourcePackage - Debian Wiki
Os pacotes de origem fornecem todos os arquivos necessários para compilar
ou, de outra forma, construir o software desejado. Ele consiste, em sua
forma mais simples, de três arquivos:
O tarball upstream com finalização .tar.gz
Um arquivo de descrição com finalização .dsc.
apt source cinnamon-settings-daemon
Obteve cinnamon-settings-daemon_5.0.4+uma.tar.xz.
, a pesquisa não encontrou .dsc
o arquivo dentro, talvez o Linux Mint (SO que eu uso) implementou a implementação modificada do Debian?
BuildingTutorial - Debian Wiki
O apt fornece uma maneira de instalar facilmente todas as dependências necessárias:
Exemplo 1: node-pretty-ms
sudo apt build-dep node-pretty-ms No entanto, não encontrei uma descrição de como o sistema acompanha essas.
Dentro de um dos arquivos deb baixados que recebi apt build-dep
, não vejo seção adicional com dependências para construção/fonte:
$ apt show /media/ramdrive/debs/cinnamon-settings-daemon/autoconf_2.69-11.1_all.deb
Package: autoconf
Version: 2.69-11.1
Priority: optional
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Ben Pfaff <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1905 kB
Depends: perl (>> 5.005), m4 (>= 1.4.13), debianutils (>= 1.8)
Recommends: automake | automaken
Suggests: autoconf-archive, gnu-standards, autoconf-doc, libtool, gettext
Breaks: gettext (<< 0.10.39), pkg-config (<< 0.25-1.1)
Homepage: http://www.gnu.org/software/autoconf/
Task: ubuntustudio-video
Download-Size: 321 kB
APT-Sources: http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
Description: automatic configure script builder
The standard for FSF source packages. This is only useful if you
write your own programs or if you extensively modify other people's
programs.
.
For an extensive library of additional Autoconf macros, install the
`autoconf-archive' package.
.
This version of autoconf is not compatible with scripts meant for
Autoconf 2.13 or earlier.
Adicionado 1:
Um dos dois pacotes ainda listados como "adicionais" durante apt-get install --no-install-recommends
é libpulse0:i386
. Fazendo
~$ apt-cache rdepends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances libpulse0:i386 # got ~ 1000 lines
find /path_to_debs/cinnamon-settings-daemon -name *.deb | xargs apt-cache show | grep Package | awk '{print $2}' # ~ 160 debs
e usando vlookup
no LibreOffice Calc descobri que o reverso depende de ser instalado pulseaudio
e, pulseaudio-module-bluetooth
por exemplo, em cerca de ~ 300ª linha de rdepends:
libcanberra-pulse:i386
ReverseDepends:
pulseaudio
Adicionado 2022/01/06:
Eu entendi a causa do problema inicial, se estiver interessado, consulte https://stackoverflow.com/a/70601238/14557599 e https://unix.stackexchange.com/a/684975/446998 . Não consegui reproduzir minha afirmação nesta pergunta (não vi esses pacotes adicionais na saída de run com sucesso apt build-dep <package>
), talvez eu execute o comando em outro sistema cego pela minha suposição incorreta de perceber as diferenças entre eles importantes.
As dependências de compilação são definidas pelo mantenedor do pacote com uma configuração
Build-Depends:
(e às vezesBuild-Depends-Indep:
) no arquivo debian/control do pacote fonte.Depends
,Recommends
, eSuggestions
são necessários quando um pacote é instalado (ou prestes a ser instalado), para que os dados estejam no arquivo Packages.Build-Depends*
são necessários apenas quando o pacote está sendo construído, então não é.BTW, como você pode ver baixando o pacote de origem ou usando o rastreador de pacotes (por exemplo , https://tracker.debian.org/media/packages/a/autoconf/control-2.71-2 ), as
Build-Depends*
configuraçõesautoconf
são:Também BTW, esta é uma simplificação. É suficiente para a maioria dos pacotes, mas alguns pacotes também possuem
Build-Conflicts*:
configurações para pacotes que não podem ser instalados para que a compilação seja bem-sucedida.Se você ainda não leu, eu sugiro que você leia o Guia de Novos Mantenedores Debian - parte disso é específico para mantenedores de pacotes Debian, mas a maioria é genérica sobre "como eu construo um pacote .deb".