Primeiro, você pode descobrir qual pacote fornece o arquivo:
dpkg -S /path/to/file
Então você pode baixar a versão atual do pacote.
apt-get download package-name
Se, por alguma razão, você precisar da versão do pacote que instalou inicialmente, terá que consultá-lo nos registros do APT em /var/log/apt/
ou /var/log/dpkg.log*
(se eles não tiverem envelhecido) . Depois de determinar o número da versão ou a data, você pode procurá-la em snapshot.debian.org (Debian) ou < um href="https://launchpad.net/ubuntu"> Launchpad (Ubuntu).
Depois de baixar o pacote .deb
, você pode extraí-lo em um diretório temporário com
dpkg-deb -x package_name-1.42.deb
Se você quiser imprimir o conteúdo de apenas um arquivo, use
dpkg-deb --fsys-tarfile package_name-1.42.deb | tar xO ./path/to/file
Você pode copiar o conteúdo no lugar, mas cuidado com o fato de que alguns arquivos precisam ter permissões específicas. Para extrair um arquivo com as permissões corretas, você precisará extraí-lo como root. Você pode usar dpkg-deb -x
e copiar o arquivo:
# as root
dpkg-deb -x package_name-1.42.deb
cp -p path/to/file /path/to/file
Ou você pode extrair o tarball (substitua sudo
por su
ou qualquer método que você use para ganhar raiz):
dpkg-deb --fsys-tarfile package_name-1.42.deb | sudo tar x -C / ./path/to/file
Como alternativa, você pode reinstalar todo o pacote. Se o arquivo for um arquivo de configuração (ou seja, se ele estiver marcado como um arquivo de configuração a ser preservado em atualizações), você precisará instruir o dpkg a restaurar o arquivo modificado ou ausente. É um pouco mais fácil lidar com um conffile perdido, porque você pode querer preservar modificações em outros arquivos de configuração. Portanto, se o arquivo for um arquivo de configuração que você modificou o arquivo e deseja restaurar para seu estado original, renomeie sua versão primeiro para que o arquivo de configuração não exista. Então corra
dpkg -i --force-confmiss package_name-1.42.deb
Você pode usar apt-get
para baixar e reinstalar o pacote de uma só vez. Se você deseja restaurar um conffile, instrua apt-get
para passar a opção extra para dpkg
.
apt-get --reinstall -o 'DPkg::options="--force-confmiss"' install package_name
Para evitar essa e outras dificuldades no futuro, instale etckeeper ( apt-get install etckeeper
), edite /etc/etckeeper/etckeeper.conf
para selecionar seu sistema de controle de versão compatível favorito e execute etckeeper init
. Modificações em /etc
serão salvas no controle de versão. Execute etckeeper commit
com uma mensagem de log significativa quando você alterar os arquivos de configuração. Então, se você quiser desfazer uma modificação em /etc
, poderá restaurar uma revisão antiga do arquivo afetado.