web-dev-qa-db-ja.com

/ var / lib / apt / lists内のaptリストは、Starbucks wifi用語のHTMLページで上書きされます

今日の午後、スターバックスに座って作業を行い(Ubuntu 12.04 Desktop x64)、パッケージエラーを通知するシステムトレイに赤丸の付いたエラーアイコンが表示されました。また、apt、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、loを開いて、見よ、ファイル全体がStarbuckのATT wifi利用規約ページのhtmlソースによって上書きされました。無料のwifiにログオンします(最初の数行)。

いくつかのランダムなインターネットサイトが、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

スターバックス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>
...
5
Kurtosis

これが何が起こったのかです。

  • Sudo apt-get updateが手動で実行されたか、自動的にトリガーされ(更新マネージャーからの自動更新を覚えていますか?)、リストを更新しようとしました。
  • あなたはたまたまwifiに接続していましたが、ライセンスやまだ何も受け入れませんでした。
  • Wifiは、おそらくより適切なものの代わりにHTTP 301/302ステータス(リダイレクト)を送信するのに十分に悪かったため、リストファイルに応答ページをダンプし、素直にそれに従いました。
  • それは完全に正常に見えますが、これはwifiの設定ミスが原因です。理想的には、まだアクセスが許可されていない場合は、同様のことが起こらないようにエラーコードが返されます。ちょうどアナロジーのために、インターネットに接続するたびにダウンロードを再開するスクリプトまたは代替セットアップがあり、このwifiに接続して動作し始め、まだ契約に同意していない場合、ツールは同じページを忠実にダンプしますファイルがダウンロードされたことを宣言し、元のファイルの以前の部分を上書きする可能性があります。

インターネットに接続している場合は、フォルダ[/var/lib/apt/lists]全体を削除して更新することは完全に安全です。これで修正されます。安全のために、削除する代わりにバックアップすることもできます。

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

トリックを実行する必要があり、そうでない場合は、Sudo mv ~/lists /var/lib/aptで元に戻します

7
Mahesh