構文エラー /etc/apt/apt.conf.d/listchanges.conf:7: ファイルの末尾に追加のゴミがあります。

構文エラー /etc/apt/apt.conf.d/listchanges.conf:7: ファイルの末尾に追加のゴミがあります。

私のサーバーはOVHでホストされ、debian Busterを実行します。先週、apt-get updateとapt-get Upgradeを問題なく実行しました。ただし、もう一度実行しようとするとエラーメッセージが表示されます。

sudo apt-get update
E: Syntax error /etc/apt/apt.conf.d/listchanges.conf:7: Extra junk at end of file

ファイル自体はきれいに見えます。

[apt]
frontend=pager
email_address="root"
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=both

私も走ってみました。無人アップグレード -v -d --dry-run、これは以下に関する追加情報を返します。簡単構成:

Traceback (most recent call last):
  File "/usr/bin/unattended-upgrade", line 75, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 34, in <module>
    apt_pkg.init_config()
apt_pkg.Error: E:Syntax error /etc/apt/apt.conf.d/listchanges.conf:7: Extra junk at end of file

この状況をどのように解決できますか?

ご協力ありがとうございます!

ベストアンサー1

構成ファイルを使用すると、問題を再現できます。

man apt-listchanges示す:

CONFIGURATION FILE
       apt-listchanges reads its configuration from the /etc/apt/listchanges.conf. The
       file consists of sections with names enclosed in the square brackets. Each section
       should contain lines in the key=value format. Lines starting with the "#" sign are
       treated as comments and ignored.

       Section is a name of profile that can be used as parameter of the --profile
       option.

       The configuration of the "apt" section can be managed by debconf(7), and most of
       the settings there can be changed with the help of the dpkg-reconfigure
       apt-listchanges command.

       Key is a name of some command-line option (except for --apt, --profile, --help)
       with the initial hyphens removed, and the remaining hyphens translated to
       underscores, for example: "email_format" or "save_seen".

       Value represents the value of the corresponding option. For command-line options
       that do not take argument, like "confirm" or "headers", the value should be set
       either to "1", "yes", "true", and "on" in order to enable the option, or to "0",
       "no", "false", and "off" to disable it.

       Additionally key can be one of the following keywords: "browser", "pager" or
       "xterm". The value of such configuration entry should be the name of an
       appropriate command, eventually followed by its arguments, for example:
       "pager=less -R".

       Example 1. Example configuration file

           [cmdline]
           frontend=pager

           [apt]
           frontend=xterm-pager
           email_address=root
           confirm=1

           [custom]
           frontend=browser
           browser=mozilla

       The above configuration file specifies that in command-line mode, the default
       frontend should be "pager". In apt mode, the xterm-pager frontend is default, a
       copy of the changelogs (if any) should be emailed to root, and apt-listchanges
       should ask for confirmation. If apt-listchanges is invoked with --profile=custom,
       the browser frontend will be used, and invoke mozilla.

最も重要なことは、/etc/apt/apt.conf.d/listchanges.conf移動する必要があるということです/etc/apt/listchanges.conf。そうすれば、すべてがうまくいくでしょう。

このバグが適切でない理由が気になった場合apt-listchanges(3.22)、パッケージは/etc/apt/apt.conf.d/20listchanges次のものを配布します。

$ cat 20listchanges 
DPkg::Pre-Install-Pkgs { "/usr/bin/apt-listchanges --apt || test $? -lt 10"; };
DPkg::Tools::Options::/usr/bin/apt-listchanges::Version "2";
DPkg::Tools::Options::/usr/bin/apt-listchanges::InfoFD "20";

ファイルが存在するINI形式ではないことがわかります。 man apt.confapt.conf に必要なファイル形式を記述します。コンテンツの元の翻訳は次のとおりです。

Apt {
  frontend pager;
  email_address "root";
  confirm 0;
  save_seen /var/lib/apt/listchanges.db;
  which both;
};

ファイルをこの形式に変更すると、aptは再び機能します。ファイル形式が尊重されるからです。おそらくこのファイルは何もしないかもしれませんが、(apt.confはこれらのキーを読んでいないので)、少なくともこれがapt.confファイルを書く方法です。

おすすめ記事