Como posso impedir que o apt baixe todas as arquiteturas binárias, mas continuar baixando os pacotes disponíveis para todas as arquiteturas? Sabemos como limitá-lo a uma arquitetura , mas como bloqueamos todos os binários?
Por exemplo, eu preferiria não confiar nestes pacotes estranhos da Microsoft:
$ cat /etc/apt/sources.list.d/microsoft-prod.list
deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/ubuntu/24.10/prod oracular main
$ grep '^Package' /var/lib/apt/lists/packages.microsoft.com_ubuntu_24.10_prod_dists_oracular_main_binary-amd64_Packages
Package: mssql-tools18
Package: msodbcsql18
Eu tentei arch=none
, mas isso dá:
Notice: Skipping acquire of configured file 'main/binary-none/Packages' as repository 'https://packages.microsoft.com/ubuntu/24.10/prod oracular InRelease' doesn't support architecture 'none'
Esvaziar arch=
é pior porque o apt para de funcionar completamente:
Error: Malformed entry 1 in list file /etc/apt/sources.list.d/microsoft-prod.list ([option] no value)
Error: The list of sources could not be read.
Para usar com outros aplicativos, ainda quero instalar packages-microsoft-prod
o /usr/share/doc/packages-microsoft-prod/microsoft-prod.gpg
. Certamente, deve ser possível configurar um filtro para permitir apenas este pacote exclusivo?
$ grep-aptavail -P packages-microsoft-prod -s Package,Architecture
Package: packages-microsoft-prod
Architecture: all
Basta definir
arch=all
. Sim, é contraintuitivo, mas funciona:Funciona porque, no esquema de nomenclatura, "all" substitui o nome da arquitetura para especificar os pacotes universais para todas as arquiteturas. Ao especificar "all", ele quer baixar o mesmo arquivo duas vezes, mas não faz isso nem baixa a arquitetura indesejada. Então, quando
apt install
executado, ele não encontrará o arquivo indesejado em/var/lib/apt/lists
.Em deb822: