Apt-get update falha dentro do contêiner yarn repo não assinado

Tenho uma ação do GitHub que compila imagens e ela falha ao tentar fazer um apt-get update. Ainda estou investigando o que está acontecendo, mas em uma instalação que fiz há 2 horas, recebo este erro se fizer um apt-get update dentro do contêiner.

root@monstera-web-only:/# apt-get update
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:3 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:4 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:5 http://deb.debian.org/debian bullseye-backports InRelease [49.0 kB]
Get:6 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease [91.7 kB]
Get:7 http://deb.debian.org/debian bullseye/main amd64 Packages [8,183 kB]
Err:2 https://dl.yarnpkg.com/debian stable InRelease
  As seguintes assinaturas são inválidas: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Get:9 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [14.6 kB]
Get:10 http://deb.debian.org/debian bullseye-backports/main amd64 Packages [384 kB]
Get:11 https://deb.nodesource.com/node_18.x bullseye InRelease [4,586 B]
Get:12 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Get:13 https://deb.nodesource.com/node_18.x bullseye/main amd64 Packages [774 B]
Reading package lists... Done
W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: As seguintes assinaturas são inválidas: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
E: O repositório 'https://dl.yarnpkg.com/debian stable InRelease' não é assinado.
N: Atualizar a partir de um repositório desses não pode ser feito com segurança e, portanto, é desativado por padrão.
N: Veja a página man apt-secure(8) para detalhes sobre criação de repositório e configuração do usuário.
1 curtida

Não vejo nenhum erro na nossa CI de construção de imagens diárias. Você pode compartilhar a saída de cat /VERSION de dentro do contêiner?

Juro que esta é uma instalação padrão. . .

# cat /VERSION
2.0.20230116

Ainda estou verificando meu CI para ver se tenho algo estúpido lá (o que é totalmente possível). Não está claro para mim o que está fazendo um apt-get update.

EDIT: Meu CI tem um template que instala vim. Ele faz um apt-get update. Nada em uma instalação normal faz um apt-get update que eu possa ver, então isso explica por que seu CI não está falhando.

Muitos dos templates de importação e os templates de upgrade do postgres (listados abaixo) fazem um apt-get update, então isso será um problema em algum momento.

root@monstera:/var/discourse# grep -lr 'apt-get update'
templates/postgres.9.5.template.yml
templates/postgres.13.template.yml
templates/postgres.template.yml
templates/import/mbox.template.yml
templates/import/mysql-dep.template.yml
templates/import/vanilla.template.yml
templates/import/chrome-dep.template.yml
templates/import/phpbb3.template.yml
templates/postgres.10.template.yml
templates/postgres.12.template.yml
image/base/slim.Dockerfile
1 curtida

Sim, essa seria minha próxima pergunta, pois executar uma atualização como essa não é o padrão e introduzirá uma variação difícil de rastrear, porque a maioria dos sites usa um sistema operacional estático e depende de uma nova imagem para atualizar coisas no nível do sistema operacional.

Se o repositório apt do yarn quebrar, presumo que também quebrará nosso CI.

Posso verificar isso na próxima semana. Talvez precisemos lançar uma nova imagem base para isso.

1 curtida

Parece bom. Só para confirmar, preciso construir um novo contêiner de importação phpbb3 e não consigo. Veja como corrigir.

Aqui está isto:

Mas recomenda-se usar curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -, mas apt-key está obsoleto.

Se eu fizer isso no contêiner:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc \
    && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

Então eu posso fazer isso:

root@monstera-web-only:/# apt-get update
Hit:1 https://deb.nodesource.com/node_18.x bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Get:3 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:4 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Hit:5 http://deb.debian.org/debian bullseye-updates InRelease
Hit:6 http://deb.debian.org/debian bullseye-backports InRelease
Get:7 https://dl.yarnpkg.com/debian stable/main all Packages [10.9 kB]
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Hit:9 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease
Get:10 https://dl.yarnpkg.com/debian stable/main amd64 Packages [10.9 kB]
Fetched 286 kB in 0s (849 kB/s)
Reading package lists... Done

Da mesma forma, se eu adicionar

          - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

antes do apt-get update em templates/import/phpbb3.template.yml, consigo construir um novo contêiner.

3 curtidas

@Falco Desculpe pela minha postagem duplicada!

@pfaffman Muito obrigado! Confirmo que esta solução alternativa também funciona com o mysql-dep.template.yml.

2 curtidas

Estou recebendo o que parecem ser erros semelhantes em uma atualização.

Err:7 https://dl.yarnpkg.com/debian stable InRelease
  As seguintes assinaturas foram inválidas: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:13 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Reading package lists...
FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev failed with return #<Process::Status: pid 532 exit 100>

Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'

exec failed with the params {"cd"=>"$home", "cmd"=>["apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev", "echo \"gem 'sqlite3'\" >> Gemfile", "su discourse -`Preformatted text`c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'"]}

Do discourse-doctor, recebo:

Checking your domain name . . .

Connection to xxx succeeded.

You should probably remove any non-standard plugins and rebuild.

Attempting to restart existing container. . .

x86_64 arch detected.

WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml

starting up existing container

+ /usr/bin/docker start app

Error response from daemon: driver failed programming external connectivity on endpoint app (c143632e34e1ae05e48759bdf163b4bbe5dc9aaf895f1fb7521f7e3784c26577): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

Error: failed to start containers: app

Failed to restart the container.

Há algo que eu possa fazer além de uma nova instalação?

Eu movi isso para este tópico @fidelio para manter os relatórios agrupados. :+1:

2 curtidas

Como sou um ‘amador ambicioso’, uma pergunta rápida:
Como executo o comando Curl ‘dentro do contêiner’?

Em uma postagem anterior, incluí que o comando curl pode ser incluído no template que faz o apt-get. Apt-get update fails inside container yarn repo not signed - #6 by rahim123

@fidelio Olá, você precisa se conectar a outro banco de dados como o SQLite de dentro da sua instância do Discourse, ou seja, você está realizando uma importação de dados de outro fórum? Caso contrário, você pode desativar essa funcionalidade e o contêiner normal do aplicativo Discourse será reconstruído sem problemas.

Minha suposição é que ele não atualizou para o PG 13 e está usando o modelo pg12? Esse é um problema que deve ser resolvido de qualquer maneira. E é uma boa aposta que o sistema operacional precise ser atualizado e a mudança para uma nova VM é o que fazer.

1 curtida

Olá @rahim123. Não, eu não preciso fazer nenhuma das duas coisas neste momento. Como desabilito a funcionalidade?

@pfaffman Ah, pareceu estranho que o log de erro dele estivesse reclamando sobre tentar instalar libsqlite3-dev, ou o Discourse normalmente usa isso para alguma coisa?

@fidelio Você poderia colar aqui a seção templates: do seu arquivo /var/discourse/containers/app.yml? Certifique-se de não incluir nenhuma senha que esteja mais abaixo no arquivo. Você também pode executar /var/discourse/discourse-doctor e ele o ajudará a gerar um relatório publicamente compartilhável de como seu sistema está configurado.

1 curtida

@rahim123 Com certeza, aqui está o relatório do discourse-doctor:

Found containers/app.yml
==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=community.bfs-filmeditor.de
SMTP_ADDRESS=in-v3.mailjet.com
DEVELOPER_EMAILS=xxx
SMTP_PASSWORD=xxx
SMTP_PORT=25
SMTP_USER_NAME=xxx
LETSENCRYPT_ACCOUNT_EMAIL=xxx

==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 18.06.1-ce, build e68fc7a

DOCKER PROCESSES (docker ps -a)

CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                                      NAMES
ce58652241d9        local_discourse/app             “/sbin/boot”        2 weeks ago         Up 14 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
8e6b8ec432b4        local_discourse/mail-receiver   “/sbin/boot”        11 months ago       Up 11 months        0.0.0.0:25->25/tcp                         mail-receiver

ce58652241d9        local_discourse/app             “/sbin/boot”        2 weeks ago         Up 14 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app

Discourse container app is running

==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone  https://github.com/davidtaylorhq/discourse-whos-online.git
          - git clone https://github.com/gdpelican/babble.git
          - git clone https://github.com/angusmcleod/discourse-quick-messages.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/davidtaylorhq/discourse-telegram-notifications.git

WARNING:
You have what appear to be non-official plugins.
If you are having trouble, you should disable them and try rebuilding again.

See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.

========================================
Discourse version at community.bfs-filmeditor.de: TYPO3 CMS
Discourse version at localhost: TYPO3 CMS

==================== MEMORY INFORMATION ====================
RAM (MB): 4039

              total        used        free      shared  buff/cache   available
Mem:           3944        1272        1236        1067        1436        1364
Swap:             0           0           0

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        78G   60G   18G  78% /

---------- Container Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
overlay          78G   60G   18G  78% /
/dev/vda1        78G   60G   18G  78% /shared
/dev/vda1        78G   60G   18G  78% /var/log

==================== DISK INFORMATION ====================
Disk /dev/vda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C1F9A1FE-534C-4DAC-9299-5CC180C29DCE

Device      Start       End   Sectors  Size Type
/dev/vda1  227328 167772126 167544799 79.9G Linux filesystem
/dev/vda14   2048     10239      8192    4M BIOS boot
/dev/vda15  10240    227327    217088  106M Microsoft basic data

Partition table entries are not in disk order.

==================== END DISK INFORMATION ====================

Eu desativei as mensagens rápidas, mas ainda não as removi.

Para constar, acho que o babble está quebrado há algum tempo:

3 curtidas

Pensei que discourse-doctor mostrava quais modelos estavam habilitados, mas acho que não. Você poderia postar isso também?

1 curtida

Ele não mostra. Embora pareça uma boa ideia, esta é a primeira vez que me lembro que isso foi importante.

1 curtida

Aqui está:

 GNU nano 2.9.3                                                                         containers/app.yml                                                                                   
 

 

 ## este é o modelo de contêiner Docker Discourse autônomo e tudo-em-um
 ##
 ## Após fazer alterações neste arquivo, você DEVE reconstruir
 ## /var/discourse/launcher rebuild app
 ##
 ## TENHA *MUITO CUIDADO AO EDITAR!
 ## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
 ## visite http://www.yamllint.com/ para validar este arquivo conforme necessário
 

 templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
 ## Descomente estas duas linhas se desejar adicionar Let's Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/mbox.template.yml"
 ## quais portas TCP/IP este contêiner deve expor?
 ## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
 ## veja https://meta.discourse.org/t/17247 para detalhes
 expose:
  - "80:80"   # http
  - "443:443" # https
 

 params:
  db_default_text_search_config: "pg_catalog.english"
 

  ## Defina db_shared_buffers para um máximo de 25% da memória total.
  ## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
  db_shared_buffers: "1024MB"
 

  ## pode melhorar o desempenho da classificação, mas adiciona uso de memória por conexão
  #db_work_mem: "40MB"
 

  ## Qual revisão do Git este contêiner deve usar? (padrão: tests-passed)
  #version: tests-passed
 

 env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
 

  ## Quantas requisições web simultâneas são suportadas? Depende da memória e dos núcleos da CPU.
  ## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
  UNICORN_WORKERS: 4

Este é o problema, eu acho, tente colocar um # na frente dele e executar um ./launcher rebuild app.

2 curtidas