apt listas em / var / lib / apt / lists sobrescritas com a página html para termos de internet da Starbucks

5

Eu sentei na Starbucks esta tarde para fazer algum trabalho (Ubuntu 12.04 Desktop x64), e peguei o ícone de erro de círculo vermelho com a linha branca na bandeja do sistema notificando um erro de pacote. Além disso, apt, aptitude, update-manager e synaptic não estavam conseguindo nem mesmo inicializar por causa disso.

Analisamos mais de perto e o erro foi:

> sudo aptitude install mmv
[sudo] password for kurtosis: 
[ ERR] Reading package lists
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/linux.dropbox.com_ubuntu_dists_precise_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.
[ ERR] Reading package lists
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/linux.dropbox.com_ubuntu_dists_precise_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Então, abri o culpado, /var/lib/apt/lists/linux.dropbox.com_ubuntu_dists_precise_main_binary-i386_Packages , e eis que o arquivo inteiro foi substituído pela fonte html da página de termos e condições do Starbuck ATT, que você deve concordar marcando a caixa de seleção na primeira vez você acessa o wi-fi gratuito deles (as primeiras linhas abaixo).

Isso é extremamente bizarro e um pouco desconcertante, já que alguns sites aleatórios conseguiram substituir um arquivo que só deveria ser modificado pelo root. Alguma ideia do que aconteceu?

Resolvido excluindo /var/lib/apt/lists e regenerando com este comando :

$ sudo -i
# apt-get clean
# cd /var/lib/apt
# mv lists lists.old
# mkdir -p lists/partial
# apt-get clean
# apt-get update

Fonte da página inicial da Starbucks ATT wifi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
  <title>AT&T Wi-Fi Service @ Starbucks</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
  <script type="text/javascript" language="javascript" src="/dhtml/master.js"></script>
  <script type="text/javascript" language="javascript" src="/dhtml/x_core.js"></script>
  <script type="text/javascript" language="javascript" src="/dhtml/x_event.js"></script>
  <script type="text/javascript" language="javascript" src="/dhtml/x_xhr.js"></script>
  <script type="text/javascript" src="/dhtml/aws/dhtml.js"></script>
  <script type="text/javascript" src="/dhtml/jquery/jquery-1.3.2.js"></script>
  <script type="text/javascript" language="javascript" src="/dhtml/jquery/aws_jclock_2.2.0.js"></script>
  <script type="text/javascript" language="javascript">
$(function($) {
        var options = {
                format: '%i:%M<span class="clock_ampm">%P</span>'
        }
        $('.jclock').jclock(options);
});
  </script> 

  <link rel="stylesheet" type="text/css" href="/css/att/themes/sbux/laptop_free_v3.css"/>
  <link rel="stylesheet" type="text/css" href="/css/att/themes/sbux/sbux_auto_addl_v2.css"/>

 </head>
 <body>
  <div id="free_wrap">
   <div id="topblock">
  <div id="topmid">
         <div id="free_sbux_mainform">
          <div id="iframe_free">
          <iframe id="sbux_iframe" src="http://www.starbucks.com/coffeehouse/wi-fi-landing" scrolling="no">
                                </iframe>
          </div id="iframe_free">
          <div id="free_sbux_logo"><a href="http://www.starbucks.com"></a></div id="free_sbux_logo">
         <div id="free_sbux_location"><div id="location_city">PALO ALTO, CA</div id="id="location_city"></div id="free_sbux_location">
          <div id="inline_free_form">
          <div id="free_text_line">Starbucks is pleased to offer complimentary Wi-Fi <b>including the premium content of the Starbucks Digital Network</b> to customers who are enjoying our food and beverages.</div>
...
    
por Kurtosis 27.08.2012 / 05:27

1 resposta

7

Veja o que aconteceu.

  • Um sudo apt-get update foi executado manualmente ou foi acionado automaticamente (Lembre-se das atualizações automáticas do gerenciador de atualização?) e tentou atualizar as listas.
  • Você estava conectado ao Wi-Fi, mas não aceitou a licença ou o que quer que seja.
  • O wifi era ruim o suficiente para enviar provavelmente um status HTTP 301/302 (redirecionado) em vez de algo mais apropriado, e segui-lo obedientemente, descarregando a página de resposta no arquivo de listas.
  • Parece perfeitamente normal, e é devido a uma configuração incorreta do wifi. Idealmente, quando você ainda não tiver acesso permitido, um código de erro deve ser retornado para que coisas semelhantes não aconteçam. Apenas para uma anologia, se você tivesse um script ou uma configuração alternativa para retomar um download sempre que se conectasse à internet, e ele começasse a funcionar quando você se conectasse a esse wifi e você ainda não aceitasse o acordo, a ferramenta descartaria a mesma página. e declare que o arquivo foi baixado, potencialmente sobrescrevendo qualquer parte anterior do arquivo original.

Se você estiver conectado à Internet, será perfeitamente seguro excluir a pasta inteira /var/lib/apt/lists e fazer uma atualização. Isso vai consertar isso. Para estar no lado seguro, você pode escolher fazer backup em vez de excluir.

sudo mv /var/lib/apt/lists ~;sudo apt-get update

deve fazer o truque, e se isso não acontecer, reverta com sudo mv ~/lists /var/lib/apt

    
por Mahesh 27.08.2012 / 06:06