apt списки в / var / lib / apt / списках, переписанных с html-страницей для терминов Starbucks wifi

5

Я сел в Starbucks сегодня днем, чтобы выполнить некоторую работу (Ubuntu 12.04 Desktop x64), и получил значок ошибки красного круга с белой строкой в ​​systray, уведомляющем о ошибке пакета. Из-за этого aptitude, aptitude, update-manager и synaptic не смогли даже запустить.

Присмотрелся, и ошибка была:

> 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.

Итак, открыл виновника /var/lib/apt/lists/linux.dropbox.com_ubuntu_dists_precise_main_binary-i386_Packages , и вот, весь файл был перезаписан html-источником для страницы условий и условий WTT-сайта Starbuck's ATT, на которую вы должны согласиться, установив флажок в первый раз вы входите в их бесплатный Wi-Fi (первые несколько строк ниже).

Это чрезвычайно странно и немного сбивает с толку, так как некоторым случайным интернет-сайтам удалось переписать файл, который должен быть модифицирован только root. Любая идея, что произошло?

Решено, удалив /var/lib/apt/lists и регенерируя с помощью этой команды :

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

Стартовая страница 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>
...
    
задан Kurtosis 27.08.2012 в 05:27
источник

1 ответ

7

Вот что произошло.

  • A sudo apt-get update либо выполнялось вручную, либо автоматически запускалось (помните автоматические обновления из диспетчера обновлений?) и пыталось обновить списки.
  • Вы случайно подключились к Wi-Fi, но не приняли лицензию или что-то еще.
  • Wi-Fi был достаточно плохим, чтобы отправить, вероятно, статус HTTP 301/302 (перенаправление) вместо чего-то более подходящего, и apt послушно последовал за ним, сбросив страницу ответов в файле списков.
  • Это выглядит совершенно нормально, и это связано с неправильной конфигурацией Wi-Fi. В идеале, когда вам еще не разрешен доступ, код ошибки должен быть возвращен, чтобы подобные вещи не произошли. Для анологии, если у вас есть сценарий или альтернативная настройка, чтобы возобновить загрузку, когда вы подключаетесь к Интернету, и он начинает работать, когда вы подключаетесь к этому Wi-Fi, и вы еще не приняли соглашение, инструмент будет послушно сбрасывать одну и ту же страницу и объявить, что файл был загружен, что потенциально может перезаписать предыдущую часть исходного файла.

Если вы подключены к Интернету, должно быть совершенно безопасно удалить всю папку /var/lib/apt/lists и выполнить обновление. Это исправит это. Чтобы быть в безопасности, вы можете выбрать резервное копирование вместо удаления.

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

должен сделать трюк, а если нет, вернитесь назад с sudo mv ~/lists /var/lib/apt

    
ответ дан Mahesh 27.08.2012 в 06:06
источник