패키지를 설치하는 동안 dpkg-preconfigure에서 구문이 발생하고 찾을 수 없는 오류가 발생합니다.

패키지를 설치하는 동안 dpkg-preconfigure에서 구문이 발생하고 찾을 수 없는 오류가 발생합니다.

나는 수정된 rootfs(내가 만든 것이 아님)가 있는 Debian Stretch 9.3 이미지를 가지고 있으며 그래픽 환경 증가를 방지하기 위해 평소보다 적은 수의 패키지를 가지고 있습니다.

새 패키지 설치를 방해하는 요인이 무엇인지 알아보려고 합니다.

다음은 샘플 출력입니다.

root@var-som-mx7:~# apt-get install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ca-certificates libcurl3 libidn2-0 libnghttp2-14 libpsl5 librtmp1
  libunistring0 openssl publicsuffix
The following NEW packages will be installed:
  ca-certificates curl libcurl3 libidn2-0 libnghttp2-14 libpsl5 librtmp1
  libunistring0 openssl publicsuffix
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,956 kB of archives.
After this operation, 4,052 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://ftp.ch.debian.org/debian stretch/main armhf openssl armhf 1.1.0f-3+deb9u2 [703 kB]
Get:2 http://ftp.ch.debian.org/debian stretch/main armhf ca-certificates all 20161130+nmu1+deb9u1 [182 kB]
Get:3 http://ftp.ch.debian.org/debian stretch/main armhf libunistring0 armhf 0.9.6+really0.9.3-0.1 [255 kB]
Get:4 http://ftp.ch.debian.org/debian stretch/main armhf libidn2-0 armhf 0.16-1+deb9u1 [58.8 kB]
Get:5 http://ftp.ch.debian.org/debian stretch/main armhf libnghttp2-14 armhf 1.18.1-1 [69.1 kB]
Get:6 http://ftp.ch.debian.org/debian stretch/main armhf libpsl5 armhf 0.17.0-3 [40.7 kB]
Get:7 http://ftp.ch.debian.org/debian stretch/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-1+b1 [55.1 kB]
Get:8 http://ftp.ch.debian.org/debian stretch/main armhf libcurl3 armhf 7.52.1-5+deb9u8 [264 kB]
Get:9 http://ftp.ch.debian.org/debian stretch/main armhf curl armhf 7.52.1-5+deb9u8 [223 kB]
Get:10 http://ftp.ch.debian.org/debian stretch/main armhf publicsuffix all 20181003.1334-0+deb9u1 [104 kB]
Fetched 1,956 kB in 1min 2s (31.2 kB/s)
/usr/sbin/dpkg-preconfigure: 6: /usr/sbin/dpkg-preconfigure: BEGIN: not found
/usr/sbin/dpkg-preconfigure: 1: eval: qq{: not found
/usr/sbin/dpkg-preconfigure: 8: /usr/sbin/dpkg-preconfigure: use: not found
/usr/sbin/dpkg-preconfigure: 9: /usr/sbin/dpkg-preconfigure: use: not found
/usr/sbin/dpkg-preconfigure: 10: /usr/sbin/dpkg-preconfigure: Syntax error: "(" unexpected
Selecting previously unselected package openssl.
(Reading database ... 18795 files and directories currently installed.)
Preparing to unpack .../0-openssl_1.1.0f-3+deb9u2_armhf.deb ...
Unpacking openssl (1.1.0f-3+deb9u2) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../1-ca-certificates_20161130+nmu1+deb9u1_all.deb ...
Unpacking ca-certificates (20161130+nmu1+deb9u1) ...
Selecting previously unselected package libunistring0:armhf.
Preparing to unpack .../2-libunistring0_0.9.6+really0.9.3-0.1_armhf.deb ...
Unpacking libunistring0:armhf (0.9.6+really0.9.3-0.1) ...
Selecting previously unselected package libidn2-0:armhf.
Preparing to unpack .../3-libidn2-0_0.16-1+deb9u1_armhf.deb ...
Unpacking libidn2-0:armhf (0.16-1+deb9u1) ...
Selecting previously unselected package libnghttp2-14:armhf.
Preparing to unpack .../4-libnghttp2-14_1.18.1-1_armhf.deb ...
Unpacking libnghttp2-14:armhf (1.18.1-1) ...
Selecting previously unselected package libpsl5:armhf.
Preparing to unpack .../5-libpsl5_0.17.0-3_armhf.deb ...
Unpacking libpsl5:armhf (0.17.0-3) ...
Selecting previously unselected package librtmp1:armhf.
Preparing to unpack .../6-librtmp1_2.4+20151223.gitfa8646d.1-1+b1_armhf.deb ...
Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-1+b1) ...
Selecting previously unselected package libcurl3:armhf.
Preparing to unpack .../7-libcurl3_7.52.1-5+deb9u8_armhf.deb ...
Unpacking libcurl3:armhf (7.52.1-5+deb9u8) ...
Selecting previously unselected package curl.
Preparing to unpack .../8-curl_7.52.1-5+deb9u8_armhf.deb ...
Unpacking curl (7.52.1-5+deb9u8) ...
Selecting previously unselected package publicsuffix.
Preparing to unpack .../9-publicsuffix_20181003.1334-0+deb9u1_all.deb ...
Unpacking publicsuffix (20181003.1334-0+deb9u1) ...
Setting up libnghttp2-14:armhf (1.18.1-1) ...
Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-1+b1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Setting up publicsuffix (20181003.1334-0+deb9u1) ...
Setting up libunistring0:armhf (0.9.6+really0.9.3-0.1) ...
Setting up openssl (1.1.0f-3+deb9u2) ...
Setting up ca-certificates (20161130+nmu1+deb9u1) ...
/usr/share/debconf/frontend: 5: /usr/share/debconf/frontend: use: not found
/usr/share/debconf/frontend: 6: /usr/share/debconf/frontend: use: not found
/usr/share/debconf/frontend: 7: /usr/share/debconf/frontend: use: not found
/usr/share/debconf/frontend: 8: /usr/share/debconf/frontend: Syntax error: "(" unexpected
dpkg: error processing package ca-certificates (--configure):
 subprocess installed post-installation script returned error exit status 2
Setting up libidn2-0:armhf (0.16-1+deb9u1) ...
Setting up libpsl5:armhf (0.17.0-3) ...
Setting up libcurl3:armhf (7.52.1-5+deb9u8) ...
Setting up curl (7.52.1-5+deb9u8) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Errors were encountered while processing:
 ca-certificates
E: Sub-process /usr/bin/dpkg returned an error code (1)

어떤 패키지를 설치하려고 해도 BEGIN: not found및 와 같은 오류가 발생합니다.Syntax error: "(" unexpected

systemd-analyze blame와 작업 이미지의 출력을 비교해 보았 systemd-analyze critical-chain으나 지금까지 이상한 점은 보이지 않습니다.

답변1

/usr/bin/perl시스템이 어떤 식으로든 손상되었습니다. 이는 "필수"로 표시된 perl-base 패키지에서 제공됩니다. 이러한 도구는 의도적으로 "기본" 패키지를 제거하기 어렵게 만듭니다. 누군가가 "그래픽" 패키지이기 때문에 "기본" 패키지를 제거하는 데 어려움을 겪는다면 xem에 설명할 수 있습니다.이것이렇게 하는 것이 잘못된 이유는 다음과 같습니다.

답변2

설정에 문제가 있습니다. 그래서 이 문제는 해결하기 어렵습니다.

라이브 배포(배포와 동일한 버전 및 아키텍처 [및 비트])를 사용하고 거기에서 시작할 수 있습니다. 일부 파일을 파일 시스템에 복사해야 할 수도 있습니다(따라서 동일한 배포판을 찾아야 함).

아니면 세 번째 줄을 넣을 수도 있습니다./usr/sbin/dpkg-preconfigure

exit 0;

이렇게 하면 사전 구성이 중지됩니다(이는 허용됩니다. 예를 들어 Perl에 문제가 있는 경우 다음 블록을 참조하세요).

이 경우에는 dpkg대신 직접 사용하는 것이 좋습니다 apt(및 기타 상위 수준 인터페이스). 이동하세요 /var/cache/apt/archives/(최근에 다운로드한 패키지가 표시됩니다.

가장 먼저 해야 할 일: 시도해 보세요 dpkg --configure --pending.

필요한 패키지를 다시 설치해 보십시오(다음을 aptitude search ~E사용하여 목록을 얻을 수 있습니다).apt를 사용하여 "필수" 패키지를 모두 찾으세요.). 1단계를 다시 시도하세요. 모든 것이 괜찮다면 삭제하세요 exit 0;.

올바른 패키지를 설치해 보십시오(최근에 패키지가 있거나 다른 기본 및 필수 패키지가 있으면 Perl을 사용해 볼 수 있습니다(packages.debian.org 사이트를 확인할 수 있습니다). 쉽지 않고 엄격하고 빠른 규칙이 없습니다. 또는 다음을 수행할 수 있습니다. 해당 디렉토리를 사용해보십시오 dpkg dpkg -BOGiE *(그러나 패키지가 적고 확실한 증거가 보이지 않으므로 필수 부분이 가장 중요한 포인트라고 생각합니다)

참고: 서버에는 일반적으로 그래픽 인터페이스가 없습니다. 나는 항상 내 서버에 X 없이(일반적으로 간단한 방법으로) 데비안을 설치합니다. 따라서 파일을 삭제하거나 필요한 패키지를 제거하지 않고도 이 작업을 수행할 수 있어야 합니다. 최소값을 찾으려면 두 개의 시스템이 있어야 하며 그 중 하나에서 패키지를 제거해야 합니다. 에반. 다시 추가합니다.

답변3

귀하의 답변에 감사드립니다. 더 깊이 이해하는 데 도움이되었습니다.

Perl 및 Bash 스크립트를 실행하려고 하면 오류가 발생합니다.

cannot execute binary file: Exec format error

그럼에도 불구하고 파일 검사를 통해 올바른 아키텍처가 확인되었습니다.

커널 구성 파일에 들어가서 사용자 공간 바이너리 형식 아래의 일부 행이 주석 처리된 것을 발견했습니다. 내 최선의 추측은 주석을 제거하는 것이었고 행복하게도 작동했습니다. 현재 작업 프로필은 다음과 같습니다.

Userspace binary formats
CONFIG_BINFMT_ELF=y
CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_BINFMT_FLAT is not set
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y

관련 정보