🚀 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 dorestore
já 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.lock
ou noDESCRIPTION
. Isto é, e um pacote estiver instalado, mas não registrado norenv.lock
, ele ainda será atualizado. -
renv::snapshot()
Atualiza o
renv.lock
com 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: