SW개발/우분투 리눅스

우분투 리눅스 proftpd 패키지 업그레이드시 의존성 문제 해결 방법

world class product 2022. 9. 3. 09:50

 

어젯밤에 기존에 사용하던 있던 우분투 20.04를 22.04로 업그레이드하였습니다. 업그레이드 이후에 proftpd 의존성 문제가 발생했습니다. 본 페이지에서는 proftpd 의존성 문제가 발생했을 때 해결하는 방법에 대해서 설명드리겠습니다. 

 

문제의 현상

필자는 우분투 리눅스 20.04를 사용해왔습니다. 어젯밤에 우분투 리눅스 22.04로의 업그레이드를 안내하는 팝업창이 떠서 22.04로 업그레이드를 했습니다. 22.04로 업그레이드 도중에 proftpd 패키지의 설정 파일을 그대로 유지할 것인지 물어보길래, 기존의 설정 파일을 그대로 유지하는 것을 선택했습니다. 

22.04로 업그레이드가 완료된 이후에 apt-get update 명령과 apt-get upgrade 명령으로 모든 패키지의 업그레이드를 시도해봤습니다. 아래와 같은 에러 메시지가 출력되며 의존성 문제가 발생하였습니다. 

$ sudo apt-get update
$ sudo apt-get upgrade

위와 같이 패키지 업데이트 및 업그레이드 명령 시에 아래와 같은 에러가 발생했습니다. 

$ sudo apt-get upgrade
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
업그레이드를 계산하는 중입니다... 완료
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
4개를 완전히 설치하지 못했거나 지움.
이 작업 후 0 바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
proftpd-core (1.3.7c+dfsg-1build1) 설정하는 중입니다 ...
usermod: 바뀐 점이 없음
Synchronizing state of proftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable proftpd
Could not execute systemctl:  at /usr/bin/deb-systemd-invoke line 142.
dpkg: error processing package proftpd-core (--configure):
 installed proftpd-core package post-installation script 서브프로세스가 오류 종료 상태 1를 반환했습니다
dpkg: 종속성 문제로 proftpd-mod-crypto의 구성이 차단되었습니다:
 proftpd-mod-crypto 패키지는 다음 패키지에 의존: proftpd-core (= 1.3.7c+dfsg-1build1): 하지만:
 proftpd-core 패키지는 아직 설정하지 않았습니다.

dpkg: error processing package proftpd-mod-crypto (--configure):
 의존성 문제 - 설정하지 않고 남겨둠
dpkg: 종속성 문제로 proftpd-mod-wrap의 구성이 차단되었습니다:
 proftpd-mod-wrap 패키지는 다음 패키지에 의존: proftpd-core (= 1.3.7c+dfsg-1build1): 하지만:
 proftpd-core 패키지는 아직 설정하지 않았습니다.

dpkg: error processing package proftpd-mod-wrap (--configure):
 의존성 문제 - 설정하지 않고 남겨둠
dpkg: 종속성 문제로 proftpd-basic의 구성이 차단되었습니다:
 proftpd-basic 패키지는 다음 패키지에 의존: proftpd-core: 하지만:
 proftpd-core 패키지는 아직 설정하지 않았습니다.
 proftpd-basic 패키지는 다음 패키지에 의�보고서를 작성하지 않습니다. 오류 메시지에 따르면 예전의 실패 때문에 생긴 부수적인 오류입니다.
                                                      보고서를 작성하지 않습니다. 오류 메시지에 따르면 예전의 실패 때문에 생긴 부수적인 오류입니다.
                                                                   보고서를 작성하지 않습니다. 이미 MaxReports 값에 도달했습니다.
                                                 ��: proftpd-mod-wrap: 하지만:
 proftpd-mod-wrap 패키지는 아직 설정하지 않았습니다.
 proftpd-basic 패키지는 다음 패키지에 의존: proftpd-mod-crypto: 하지만:
 proftpd-mod-crypto 패키지는 아직 설정하지 않았습니다.

dpkg: error processing package proftpd-basic (--configure):
 의존성 문제 - 설정하지 않고 남겨둠
처리하는데 오류가 발생했습니다:
 proftpd-core
 proftpd-mod-crypto
 proftpd-mod-wrap
 proftpd-basic
E: Sub-process /usr/bin/dpkg returned an error code (1)

 

$ sudo apt-get remove proftpd

이 시점에 sudo apt-get remove proftpd 명령을 수행해봐도 비슷한 에러 메시지가 출력되면서 제대로 수행되지 않았습니다. 

 


문제의 원인

일단 이런 에러가 발생하게 되면, 에러 메시지를 매의 눈으로 살펴봐야 합니다. 에러 메시지 도중에 "/usr/bin/deb-systemd-invoke line 142"라는 부분이 눈에 들어옵니다. 해당 파일을 perl로 작성한 스크립트로 systemctl 명령을 실행 도중에 에러가 발생한 것이라는 것을 추정할 수 있습니다. proftpd 서비스를 체크해봤더니 서비스가 제대로 실행되지 못하는 상황이라는 것을 알 수 있었습니다. 

$ sudo systemctl start proftpd
$ sudo systemctl status proftpd

proftpd 서비스를 시작하고, 상태를 살펴보면 아래와 같은 에러가 발생한 것을 알 수 있습니다. 

$ sudo systemctl status proftpd
× proftpd.service - ProFTPD FTP Server
     Loaded: loaded (/lib/systemd/system/proftpd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2022-09-03 08:55:54 KST; 44s ago
    Process: 8678 ExecStartPre=/usr/sbin/proftpd --configtest -c $CONFIG_FILE (code=exited, status=1/FAILURE)
        CPU: 50ms

 9월 03 08:55:54 SamHome systemd[1]: Starting ProFTPD FTP Server...
 9월 03 08:55:54 SamHome proftpd[8678]: Checking syntax of configuration file
 9월 03 08:55:54 SamHome proftpd[8678]: 2022-09-03 08:55:54,847 SamHome proftpd[8678]: fatal: unknown configuration directive 'IdentLookups' on line 13 of '/etc/proftpd/proftpd.conf'
 9월 03 08:55:54 SamHome systemd[1]: proftpd.service: Control process exited, code=exited, status=1/FAILURE
 9월 03 08:55:54 SamHome systemd[1]: proftpd.service: Failed with result 'exit-code'.
 9월 03 08:55:54 SamHome systemd[1]: Failed to start ProFTPD FTP Server.

위의 에러 메시지를 잘 살펴보면 /etc/profptd/proftpd.conf 파일의 13번 라인에서 에러가 발생했다는 것을 알 수 있습니다. 우분투 리눅스를 22.04로 업그레이드할 때 proftpd 설정 파일을 그대로 유지하는 것으로 선택한 결과입니다. 

/etc/proftpd/proftpd.conf 파일을 열어보면 13번 라인에 "IdentLockups off"라는 설정이 있는 것을 확인할 수 있습니다. 해당 부분에서 에러가 발생했고, 구글링을 시작했습니다. 

 


문제의 해결

기존 설정 파일에는 IdentLockups off로 되어 있었는데, 해당 부분을 구문 안에 넣어줬더니 해당 문제가 깔끔하게 해결되었습니다. 

 

1. proftpd.conf 설정 파일 수정

vi 편집기를 이용해서 /etc/proftpd/proftpd.conf 파일을 열어서 편집합니다. 

$ sudo vi /etc/proftpd/proftpd.conf

아래의 같이 수정합니다. 

기존 설정 새로 바꾼 설정
# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         on
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      "Debian"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType                              standalone
DeferWelcome                    off
# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         on
# If set on you can experience a longer connection delay in many cases.
<IfModule mod_ident.c>
  IdentLookups                  off
</IfModule>

ServerName                      "Debian"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType                              standalone
DeferWelcome                    off
   

 

2. proftpd 서비스 재시작

proftpd 설정 파일을 수정했기 때문에 proftpd 서비스를 재시작해봅니다. 

$ sudo systemctl start proftpd
$ sudo systemctl status proftpd

 

아래와 같이 서비스가 제대로 실행되는 것을 확인할 수 있습니다. 

 

3. apt-get upgrade 재실행

다시 처음으로 돌아가서 apt-get upgrade 명령을 재실행해보겠습니다. 

$ sudo apt-get upgrade

아래와 같이 성공적으로 패키지 업그레이드가 완료된 것을 확인할 수 있습니다. 

$ sudo apt-get upgrade
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
업그레이드를 계산하는 중입니다... 완료
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
4개를 완전히 설치하지 못했거나 지움.
이 작업 후 0 바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
proftpd-core (1.3.7c+dfsg-1build1) 설정하는 중입니다 ...
usermod: 바뀐 점이 없음
Synchronizing state of proftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable proftpd
proftpd-mod-crypto (1.3.7c+dfsg-1build1) 설정하는 중입니다 ...
proftpd-mod-wrap (1.3.7c+dfsg-1build1) 설정하는 중입니다 ...
proftpd-basic (1.3.7c+dfsg-1build1) 설정하는 중입니다 ...

 


참고한 문서 (출처)

구글링을 통해서 찾은 아래 페이지가 큰 도움이 되었습니다. 

 

fatal: unknown configuration directive IdentLookups · Issue #1377 · proftpd/proftpd

on FreeBSD 13 (fresh installation) via ports despite http://www.proftpd.org/docs/directives/linked/config_ref_IdentLookups.html stating that IdentLookups is in the core module: # proftpd -t Checkin...

github.com

 

이상입니다.