새 플러그인 설치 불가: 구조 정리 필요

반응(Reactions) 플러그인이나 번역 플러그인을 containers/app.yml 파일에 추가한 뒤 앱을 다시 빌드하면 다음과 같은 출력이 나타납니다. 이상하게도 오류 메시지에 네덜란드어 문구가 포함되어 있습니다.

Ensuring launcher is up to date
Fetching origin
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
Updating Launcher...
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
Updating 333b879..f982cc4
warning: unable to access '.git/info/attributes': Structure moet worden opgeschoond
warning: unable to access '.git/info/exclude': Structure moet worden opgeschoond
error: Your local changes to the following files would be overwritten by merge:
        image/base/Dockerfile
        image/base/install-gifsicle
        image/base/install-imagemagick
        image/base/install-nginx
        image/base/install-pngcrush
        image/base/install-pngquant
        image/base/install-redis
Please commit your changes or stash them before you merge.
Aborting
failed to update
Launcher updated, restarting...

그리고 이 과정이 CTRL+C를 누를 때까지 무한히 반복됩니다.

아마 제가 뭔가 잘못하고 있는 것 같습니다. 모든 것을 최신 버전으로 업데이트해 보았지만 효과는 없었습니다.

더 제공할 수 있는 정보가 있나요? 클린업 절차를 시도한 후 다시 플러그인을 설치해 볼 수 있을까요?

두 줄을 추가하여 해당 플러그인을 클론하고

 ./launcher rebuild app

을 실행하셨나요?

안녕하세요, 이 절차를 따랐습니다.

containers/app.yml 파일의 플러그인 부분:

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
- exec:
    cd: $home/plugins
    cmd:
      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/paviliondev/discourse-locations.git
      - git clone https://github.com/discourse/discourse-sitemap.git
#          - git clone https://github.com/discourse/discourse-reactions.git
      - git clone https://github.com/discourse/discourse-translator.git

방금 다시 시도했는데, 동일한 출력 사이클이 계속 반복되고 있습니다.

제이, 이거 혹시 아는 거 있어? 더 많은 정보를 제공하려면 뭘 하면 될까?

죄송합니다. 눈에 띄는 문제는 없었습니다. - exec 앞에 두 칸의 공백이 필요할 수 있습니다(혹은 복사/붙여넣기 과정에서 형식이 깨진 건가요?). 제가 익숙하거나 그런 오류를 유발할 것으로 예상되는 오류는 아닙니다. 음. - exec 앞에 4칸, 나머지 줄 앞에 2칸의 공백이 필요할 수도 있습니다. app.yml 파일을 (이름을 변경하거나) 복사한 뒤 discourse-setup을 다시 실행하고, discourse_docker 줄을 주의 깊게 복사/붙여넣은 후 추가 플러그인을 위해 편집해 볼 수 있습니다.

이 문제에 돈을 투자하고 싶으시다면 Redirecting… 또는 https://www.literatecomputing.com/discourse-support/를 참고해 주세요. 제가 살펴볼 수 있습니다.

제안하신 방법을 시도해 봤는데, discourse-setup를 실행할 때 뭔가 나오더라고요. 다음과 같은 메시지가 표시되었습니다:

WARNING: Discourse requires at least 2GB of swap when running with 2GB of RAM
or less. This system does not appear to have sufficient swap space.

Without sufficient swap space, your site may not work properly, and future
upgrades of Discourse may not complete successfully.

Ctrl+C to exit or wait 5 seconds to have a 2GB swapfile created.
install: kan geen toegang krijgen tot '/swapfile': Structure moet worden opgeschoond
fallocate: cannot open /swapfile: Structure moet worden opgeschoond
mkswap: cannot open /swapfile: Structure moet worden opgeschoond
swapon: cannot open /swapfile: Structure moet worden opgeschoond
/swapfile       swap    swap    auto      0       0
vm.swappiness = 10
Failed to create swap: are you root? Are you running on real hardware, or a fully virtualized server?

free 명령어를 확인해 보니 VPS에 스왑이 사용 가능하지 않다고 나옵니다. 이상한 점은 이전에도 스왑이 없었는데 사이트는 잘 돌아가고 있었습니다. 플러그인 설치도 성공적으로 마쳤습니다.

스왑을 설정해야 하는지, 아니면 할 수 있는 정리 작업이 있는지 알려주세요.

./launcher cleanup을 실행했습니다. 도움이 되지 않았습니다.

흥미로운 점은 이 네덜란드어 오류 메시지입니다:

Structure moet worden opgeschoond

discourse-setup을 실행할 때와 스왑을 시도할 때 발생하며, .git/info/grafts에 접근하려고 할 때 발생합니다.

그래서 app.yml을 삭제/이름을 변경하고 Discourse 설치를 다시 실행했는데도 여전히 오류가 발생합니까? 기이하군요.

./launcher cleanup이 도움이 될 것이라고 기대하지는 않습니다. 그것은 (대부분) docker 관련 항목을 정리하는 것(을 시도하는 것)이기 때문입니다.

Failed to create swap: are you root? Are you running on real hardware, or a fully virtualized server?

안녕하세요. 질문이 하나 있습니다: 루트 권한으로 실행 중입니까? 완전 가상화 서버를 사용 중입니까?

오래전에 설치한 것입니까?

하지만 이 문제에 대해서는 아이디어가 거의 없습니다.

음, 파일시스템 문제인 것 같습니다. 이거 좀 보세요: ‘info’ 디렉터리로 cd조차 못 합니다:

root@skrzat:/var/discourse/.git# ls -al
ls: 'info'에 접근할 수 없음: 구조를 정리해야 합니다
총 32
drwxr-xr-x   8 root root  198 3월 26 21:54 .
drwxr-xr-x  11 root root  246 1월  7 22:18 ..
drwxr-xr-x   2 root root    6 11월 13 11:43 branches
-rw-r--r--   1 root root  274 11월 13 11:43 config
-rw-r--r--   1 root root   73 11월 13 11:43 description
-rw-r--r--   1 root root    0 3월 26 21:53 FETCH_HEAD
-rw-r--r--   1 root root   23 11월 13 11:43 HEAD
drwxr-xr-x   2 root root  301 11월 13 11:43 hooks
-rw-r--r--   1 root root 7395 1월  7 22:18 index
d?????????   ? ?    ?       ?            ? info
drwxr-xr-x   3 root root   30 11월 13 11:43 logs
drwxr-xr-x 155 root root 4096 3월 24 15:13 objects
-rw-r--r--   1 root root   41 3월 26 21:52 ORIG_HEAD
-rw-r--r--   1 root root 1572 11월 13 11:43 packed-refs

drwxr-xr-x 5 root root 46 11월 13 11:43 refs

그 물음표들이 제일 이상합니다.

직접 조사해 볼게요. 아마 Discourse와는 전혀 관련이 없을 것 같습니다.

여러분, 안녕하세요. 문제 해결 방법을 공유드리려고 합니다.

실제로 손상된 파일 시스템은 XFS였습니다. 이를 복구하려면 XFSprogs를 설치해야 했는데, apt-get으로 설치를 시도했을 때 동일한 오류가 발생하여 설치가 불가능했습니다.

플러그인 설치와 앱 재구성은 메모리 집약적인 작업이라는 점을 깨달았습니다. 그런데 제 작은 포럼은 2GB 미만의 RAM과 15GB의 디스크 공간을 가진 동일한 하드웨어를 사용하고 있었습니다. 스왑이 비활성화되어 있었고, 플러그인 설치 과정에서 여러 번 재부팅을 해야 했기 때문에 메모리 문제가 발생했다고 추정합니다. 이는 파일 시스템에 좋지 않았고, XFS는 GIT 폴더를 포함한 일부 영역에 안전 장치를 적용한 것으로 보입니다.

결국 백업(다행히 S3에 저장되어 있어 문제가 없었습니다)을 가져오고, app.yml 파일의 백업을 만든 뒤 VPS를 다시 시작하고 이 가이드를 참고하여 스왑을 설정했습니다(Debian VPS). 1시간도 안 돼 모든 것이 다시 정상 작동했습니다. 몇 땀 흘렸지만요. :sweat_smile:

그리고 제가 설치하려던 리액션 플러그인도 완벽하게 작동하고 있습니다!