내 서버는 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.conf
apt.conf에 필요한 파일 형식을 설명합니다. 콘텐츠의 원본 번역은 다음과 같습니다.
Apt {
frontend pager;
email_address "root";
confirm 0;
save_seen /var/lib/apt/listchanges.db;
which both;
};
파일을 이 형식으로 변경하면 apt가 다시 작동합니다. 파일 형식이 존중되기 때문입니다. 어쩌면 이 파일은 아무 것도 하지 않을 수도 있지만(apt.conf는 이러한 키를 읽지 않기 때문에) 적어도 이것이 apt.conf 파일을 작성하는 방법입니다.