🚀 Live Code - Volumes LOA - Encontro 2025-03-10⚓︎
O projeto de live code envolvendo os volumes da LOA tem como objetivos a revisão e reestruturação do projeto, além da disseminação e documentação dos conhecimentos gerados.
No encontro do dia 10/03 revisamos alguns conceitos centrais, conforme documentação, a saber:
-
renv::restore()Instala os pacotes no ambiente do projeto a partir do
renv.lock, garantindo que as versões sejam exatamente as registradas no lockfile. Se um pacote já estiver instalado na versão correta, ele não será reinstalado. Esse comando é útil para reproduzir o ambiente de um projeto em outro sistema ou para reverter atualizações. -
renv::install()Instala um ou mais pacotes no ambiente do projeto, podendo buscar de fontes como CRAN, GitHub, Bioconductor, entre outros. Utiliza um cache global para evitar downloads repetidos e otimizar a instalação. Não altera automaticamente o
renv.lock, sendo necessário umrenv::snapshot()para registrar a mudança. Diferencia-se dorestorejá que não consulta o lockfile (renv.lock) diretamente, apesar de poder impactá-lo ao adicionar pacotes que não estavam registrados. Ele também instala dependências definidas no arquivoDESCRIPTION. -
renv::update()Atualiza os pacotes do ambiente do projeto para suas versões mais recentes disponíveis nos repositórios configurados. Isso pode incluir pacotes de CRAN, GitHub e outras fontes. Também pode atualizar o próprio renv. Após a atualização, recomenda-se testar o código e, caso esteja funcionando, é necessário executar
renv::snapshot()para registrar as novas versões norenv.lock. Esse comando verifica a atualização de todos os pacotes instalados no ambiente, independentemente de estarem norenv.lockou noDESCRIPTION. Isto é, e um pacote estiver instalado, mas não registrado norenv.lock, ele ainda será atualizado. -
renv::snapshot()Atualiza o
renv.lockcom metadados sobre os pacotes instalados no ambiente do projeto, garantindo que o estado atual possa ser reproduzido posteriormente comrenv::restore(). Esse comando é essencial para controle de versões e colaboração, pois permite que outros usuários reconstruam o ambiente do projeto com as versões exatas dos pacotes.
Por fim, identificamos uma dependência no pacote readxl, o cpp11, que é incompatível com a versão fixada do R (3.6.3). A versão 1.4.0 do readxl foi a que fez a transição do Rcpp para o cpp11.
Uma das razões pelas quais a criação da imagem Docker não enfrentava esse problema anteriormente é a ausência de um gerenciamento de dependências mais robusto. Além disso, o cpp11 é uma dependência do pacote readxl, o qual não era listado como dependência direta do datapackage volumes-docker. Isso permitia que o ambiente funcionasse sem conflitos, já que o readxl e suas dependências não eram explicitamente gerenciados ou verificados.
🔍 Confira a gravação do encontro: