Recentemente, tive que compilar uma versão 2010 de qemu
, o que era difícil no sistema operacional Ubuntu 16.04
moderno devido a problemas de dependência. Então, eu fui forçado a fazer um make (compilação) em um Ubuntu 10.04
, e então um make install no Ubuntu 16.04.
make
usa timestamps
para decidir quais ações precisam ser tomadas. Portanto, desde que os registros de data e hora sejam preservados quando os arquivos compilados forem transferidos do computador no qual a compilação foi feita para o computador no qual a instalação deve ser feita, ele deverá funcionar.
Existem várias ferramentas para salvar e restaurar meta-data
de arquivos em uma árvore de diretórios, como metastore e git-cache-meta . O último é para uso com repositórios git, pois o git não preserva os timestamps. Outras ferramentas como rsync e cp permite que você transfira arquivos enquanto preserva os timestamps, e não exige que você os salve e restaure explicitamente, como nas duas ferramentas anteriores .
Se, como eu, você estiver usando um servidor git
para transferir arquivos entre os dois computadores (git push e git pull). Aqui estão os passos necessários para isso.
#Computer 1 (where compilation is to be done)
make
git-cache-meta --store #this will create a .git_cache_meta file in the current directory
git add .
git commit -m "installed binaries; preserving timestamps"
git push origin master #or whatever may be your remote repository, and branch
#Computer 2 (where install is to be done)
git pull origin master #or use git clone <remote repository URL> <branch name>
git-cache-meta --apply
make install
No seu caso, rsync
parece uma solução mais simples, já que pode copiar arquivos, ao mesmo tempo preservando timestamps ( -t option
), sem se preocupar com repositórios git remotos, etc.
Veja como você fará isso com rsync
.
rsync -a <source> <destination>
Da mesma forma, com o comando cp
.
cp -a <source> <destination>
Nota: Embora no seu caso o computador e o SO sejam os mesmos, pode não ser assim para outra pessoa e, nesse caso, as dependências dinâmicas (dependências de tempo de execução) devem ser atendidas. . Por exemplo, no meu caso eu tive que instalar libz.so.1
, na minha máquina Ubuntu 16.04 ( sudo apt-get install lib32z1
).