web-dev-qa-db-fra.com

Listes apt dans / var / lib / apt / listes écrasées par la page HTML pour les termes Wi-Fi de Starbucks

Je me suis assis chez Starbucks cet après-midi pour faire un travail (Ubuntu 12.04 Desktop x64), et l’icône d’erreur "cercle rouge avec ligne blanche" dans le tableau de bord signalant une erreur de paquet. De plus, apt, aptitude, update-manager et synaptic ne pouvaient même pas démarrer, à cause de cela.

A examiné de plus près, et l'erreur était:

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

Donc, ouvrez le coupable, /var/lib/apt/lists/linux.dropbox.com_ubuntu_dists_precise_main_binary-i386_Packages, et voilà, tout le fichier a été écrasé par la source html de la page des termes et conditions ATT wifi de Starbuck, que vous devez accepter en cochant la case la première fois connectez-vous à leur accès wifi gratuit (premières lignes ci-dessous).

Ceci est extrêmement bizarre et un peu déconcertant, car un site Internet aléatoire a réussi à écraser un fichier qui ne devrait être modifiable que par root. Une idée de ce qui s'est passé?

Résolu en supprimant /var/lib/apt/lists et en régénérant avec cette commande :

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

Source de la page d'accueil wifi Starbucks ATT:

<!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>
...
5
Kurtosis

Voici ce qui s'est passé.

  • Un Sudo apt-get update a été exécuté manuellement ou a été déclenché automatiquement (vous vous souvenez des mises à jour automatiques du gestionnaire de mises à jour?) Et a tenté d'actualiser les listes.
  • Vous étiez connecté au wifi, mais vous n’avez pas encore accepté la licence.
  • Le wifi était assez mauvais pour envoyer probablement un statut HTTP 301/302 (redirection) au lieu de quelque chose de plus approprié, et le suivait docilement, vidant la page de réponse dans le fichier de listes.
  • Cela semble tout à fait normal et est dû à une mauvaise configuration du wifi. Idéalement, lorsque l'accès n'est pas encore autorisé, un code d'erreur doit être renvoyé afin d'éviter que des événements similaires ne se produisent. Juste pour une anologie, si vous aviez un script ou une autre configuration pour reprendre un téléchargement à chaque fois que vous vous connectez à Internet, et que cela commence à fonctionner lorsque vous vous connectez à ce réseau wifi et que vous n'avez pas encore accepté le contrat, l'outil videra consciencieusement la même page. et déclarer que le fichier a été téléchargé, en remplaçant éventuellement toute partie précédente du fichier d'origine.

Si vous êtes connecté à Internet, il devrait être parfaitement sûr de supprimer le dossier entier /var/lib/apt/lists et de le mettre à jour. Cela va résoudre ce problème. Pour plus de sécurité, vous pouvez choisir de sauvegarder au lieu de supprimer.

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

devrait faire l'affaire, et si ce n'est pas le cas, revenir en arrière avec Sudo mv ~/lists /var/lib/apt

7
Mahesh