Sobrescrevendo arquivos ao extrair de um arquivo tar

2

Eu jogo o OpenTTD. Existem três versões disponíveis e eu quero ter todas as três; estável, testando e todas as noites. Eu baixei e compilei o código fonte para todos os três sem problemas. A questão é quando eu quero compilar uma nova versão. Quando eu extraio o arquivo tar.xz em /usr/lib/games/openttd-trunk/ , os arquivos antigos não são sobrescritos. Em vez disso, um novo diretório é criado chamado openttd-trunk-r26175 .

Existe alguma maneira de extrair os arquivos do arquivo diretamente para /usr/lib/games/openttd-trunk/ ? Dessa forma, posso simplesmente make sem ter que ./configure todas as vezes.

EDIT: Eu não acho que deixei claro que o arquivo tem os arquivos de origem dentro de uma única pasta chamada openttd-trunk-r26175 . O que eu quero fazer é extrair todos os arquivos dessa pasta, mas não a pasta em si.

    
por Jack Jefferson 24.12.2013 / 13:29

3 respostas

1

Veja esta resposta .

Se o arquivo tiver uma pasta de nível superior, você poderá usar --strip-components 1 , para remover a primeira pasta do caminho completo de arquivos.

Finalmente, isso deve fazer o que você quer:

tar xf openttd-trunk-r26175.tar -C /usr/lib/games/openttd-trunk/ --strip-components 1
    
por c0rp 24.12.2013 / 14:43
1

Você pode usar o argumento --strip-components tar para remover componentes de diretório principais e usar a opção -C para especificar um local de destino para os arquivos resultantes, por exemplo,

tar xvf openttd-trunk.tar.xz --strip-components=1 -C /usr/lib/games/openttd-trunk/
    
por steeldriver 24.12.2013 / 14:43
0
  

Eu não acho que tenha deixado claro que o arquivo tem os arquivos de origem dentro de uma única pasta chamada openttd-trunk-r26175. O que eu quero fazer é extrair todos os arquivos dessa pasta, mas não a pasta em si

Acho que você pode experimentar o dtrx extractor.

sudo apt-get install dtrx

Nessa situação, o que você mencionou dtrx pede que você decida o que fazer? A partir da sua página de mana:

  

Normalmente, se um arquivo contiver apenas um arquivo ou diretório com um nome que não corresponda ao do arquivo, o dtrx perguntará a você como lidar                 isso.

          Extract the file/directory inside another directory named after the archive.  This is the default.

          Extract the file/directory in the current directory, and then rename it to match the name of the archive.

          Extract the file/directory in the current directory.

Ele também tem a opção -o para sobrescrever um diretório atual se você quiser. Então o comando que você precisa é provável:

dtrx -o --one rename openttd-trunk.tar.xz

(É claro que isso pode ser conseguido de outras formas também, mas dtrx é um programa muito útil, então você pode querer testá-lo.)

    
por falconer 24.12.2013 / 16:15