반응형

가끔씩 flutter 를 사용할때 upgrade를 한 후 시작하는데 그럴때마다 만나는 오류 메세지가 있습니다.

 

오류메시지

Your flutter checkout has local changes that would be erased by upgrading.
If you want to keep these changes, it is recommended that you stash them via "git stash"
or else commit the changes to a local branch.
If it is okay to remove local changes, then re-run this command with "--force".

Flutter에서 flutter upgrade 명령어를 실행할 때 위와 같은 메시지가 나오는 경우는 Flutter SDK 디렉토리 내에 사용자가 수정한 로컬 변경사항이 있어서 업그레이드를 할 수 없다는 의미라고 합니다.

Flutter SDK 디렉토리는 Git 저장소로 관리되고 있기 때문에, 그 안에서 직접 수정한 파일이 있다면 Git이 이를 감지하고 업그레이드를 막는다고 합니다.

그런데 SDK를 수정한적이 없는데 이상하여 일단 검색한 결과입니다.

 

Flutter SDK가 수정되는 주요 원인

1. 사용자가 직접 SDK 내부 파일을 수정한 경우

  • 예: /flutter/packages/flutter/lib/src/widgets/... 같은 경로의 Dart 파일을 직접 열어 수정
  • 테스트용으로 수정했다가 잊어버리는 경우 많음

Flutter SDK는 사실상 하나의 Git 저장소이기 때문에, 어떤 파일이든 수동으로 수정하면 flutter upgrade는 이를 "local change"로 감지합니다.


2. IDE (예: VS Code, Android Studio)가 자동으로 포맷하거나 수정한 경우

  • Flutter SDK 내부 파일을 IDE에서 열 때 auto save, format on save 옵션이 켜져 있다면,
    무심코 엔터나 공백 하나만 삽입해도 "수정됨" 상태가 됩니다.

3. 특정 플러그인이나 툴이 Flutter SDK 파일을 덮어쓴 경우

  • 예: flutterfire configure 또는 flutter doctor --android-licenses 등의 설정 중 SDK 일부 파일이 수정되는 경우 있음
  • 또는 제 3자 도구(Git Hook, 커스텀 빌더 등)가 SDK 내부 코드를 수정하도록 설정된 경우

4. Flutter SDK의 Git 상태가 꼬인 경우

  • 예: Flutter SDK를 수동으로 복사하거나 다른 브랜치/버전으로 전환하다 Git 상태가 불안정해짐
  • .git/index나 .git/config가 충돌 상태로 남아있을 수도 있음

 

수정된 파일 확인 방법

다음 명령어를 Flutter SDK 디렉토리에서 실행하면 무엇이 변경되었는지 확인할 수 있습니다:

cd <flutter SDK 경로>
git status

저의 경우

On branch stable
Your branch is behind 'origin/stable' by 8 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	../flutter/

nothing added to commit but untracked files present (use "git add" to track)

 

해결 방법

방법 1: 변경 사항을 임시 저장 (추천)

cd <flutter SDK 경로>
git stash
flutter upgrade
  • 현재 수정한 내용은 임시로 보관되며 업그레이드 후 git stash pop으로 다시 복원할 수 있습니다.

방법 2: 모든 변경 사항을 제거하고 강제 업그레이드

Flutter SDK를 수정한 적이 없거나 그냥 덮어써도 되는 경우:

flutter upgrade --force
  • 경고 없이 Flutter SDK의 로컬 변경 사항을 모두 제거하고 최신 버전으로 업그레이드합니다.

방법 3: 변경 사항을 로컬 브랜치로 백업

cd <flutter SDK 경로>
git checkout -b my_backup
flutter upgrade
  • 로컬 브랜치로 백업한 후 안정적으로 업그레이드를 수행할 수 있습니다.

Flutter SDK 경로 확인 방법

Flutter SDK가 어디에 설치되어 있는지 모르겠다면:

which flutter

 

저는 제가 수정한 기억이 없어서 강제 업그레이드를 해서 해결했습니다. 물론 매번 그렇게 하고 있습니다.

728x90
반응형
반응형

Unit fluent-bit.service could not be found 에러는 Fluent Bit이 시스템 서비스로 설치되지 않았거나, 서비스 이름이 다를 때 발생할 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따라 문제를 해결할 수 있습니다.

1. 서비스가 올바르게 설치되었는지 확인

Fluent Bit이 제대로 설치되었는지 확인

which fluent-bit

이 명령어는 Fluent Bit의 실행 파일이 어디에 설치되어 있는지 확인합니다. 실행 파일 경로가 반환되지 않으면 Fluent Bit이 설치되지 않았거나 설치 경로가 올바르지 않을 수 있습니다.

2. 올바른 서비스 이름 찾기

Fluent Bit의 서비스 이름이 다를 수 있으므로, 다음 명령어로 서버에 어떤 서비스가 등록되어 있는지 확인 가능합니다.

systemctl list-units --type=service | grep fluent

이 명령어는 Fluent Bit과 관련된 모든 서비스를 나열합니다. 만약 fluent-bit이 아닌 다른 이름(예: td-agent-bit)으로 서비스가 등록되어 있다면, 해당 이름을 사용해 상태를 확인하고 서비스를 정지할 수 있습니다

sudo systemctl status td-agent-bit
sudo systemctl stop td-agent-bit

3. Fluent Bit을 수동으로 실행한 경우

Fluent Bit이 시스템 서비스로 설치되지 않고, 수동으로 실행된 경우에는 수동으로 프로세스를 찾아 종료해야 합니다.

  1. Fluent Bit의 프로세스를 찾습니다
ps aux | grep fluent-bit

 

   2. 실행 중인 Fluent Bit 프로세스의 PID(프로세스 ID)를 확인한 후, 다음 명령어로 종료합니다

sudo kill <PID>

4. Fluent Bit을 서비스로 설정하기

만약 Fluent Bit이 시스템 서비스로 설정되지 않은 경우, 수동으로 Fluent Bit을 서비스로 설정할 수 있습니다. 다음 단계를 통해 설정할 수 있습니다.

 

서비스 파일을 생성합니다

sudo nano /etc/systemd/system/fluent-bit.service

 

위에 생성한 파일에 아래 내용을 추가합니다.

[Unit]
Description=Fluent Bit
After=network.target

[Service]
ExecStart=/usr/local/bin/fluent-bit -c /path/to/your/fluent-bit.conf
Restart=always

[Install]
WantedBy=multi-user.target
  •  ExecStart에 설치된 Fluent Bit의 경로와 설정 파일 경로를 정확히 입력합니다.

서비스 파일을 저장하고 나옵니다. 이후 다음 명령어로 서비스를 리로드하고 시작합니다

sudo systemctl daemon-reload
sudo systemctl enable fluent-bit
sudo systemctl start fluent-bit
728x90
반응형
반응형

docker-compose ps 실행시 발생할 수 있는 오류

Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 670, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1255, in request
  File "http/client.py", line 1301, in _send_request
  File "http/client.py", line 1250, in endheaders
  File "http/client.py", line 1010, in _send_output
  File "http/client.py", line 950, in send
  File "docker/transport/unixconn.py", line 43, in connect
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 439, in send
  File "urllib3/connectionpool.py", line 726, in urlopen
  File "urllib3/util/retry.py", line 410, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 670, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1255, in request
  File "http/client.py", line 1301, in _send_request
  File "http/client.py", line 1250, in endheaders
  File "http/client.py", line 1010, in _send_output
  File "http/client.py", line 950, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(61, 'Connection refused'))

 

 

연결 거부라는 메시지가 포함이 되어 있어 혹시나 싶어 docker ps 명령을 실행하니 

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 

위와 같은 메시지가 출력이 되었네요.

 

이전에 docker desktop을 종료시켜 두었는데 다시 실행시키고 docker ps, docker-compose ps 명령을 실행하니 이상없이 실행이 됐습니다.

 

관련 오류를 검색해보면 환경변수같은 다른 이유도 있는 듯 한데 일단 docker가 실행되고 있는지 확인 필수 인거 같습니다.

728x90
반응형
반응형

어느날 부터인가 intellij에서 종종 뜨는 에러!!

git install하라는 해결책을 제공해주지만 설치해도 문제가 해결되지 않고 동일한 메시지가 계속 노출이 됩니다.

설치해도 계속 나오는 에러 메시지!!! 원인은 intellij에 설정되어 있는 git 설치 주소를 제대로 인식하지 못하여 방생하는 문제라고 하네요. 

해당 문제가 발생하게 되면 수정된 파일이  project file tree에 표시가 제대로 되지 않고 git diff도 제대로 동작하지 않게 됩니다. 

 

해결 방법

  1. 터미널에서 which git 명령어로 위치를 확인
  2. Preference -> Version Control -> Git -> Path to Git executable에 등록되어 있는 주소를 변경해줌
  3.  Path to Git executable 입력 창 옆에 Test를 실행해보면 설정한 경로에 있는 깃의 버전을 알려줌

해결하면서 확인한것 중  터미널에서 확인한 git의 경로와  이전 설정경로의 git 둘다 버전이 출력된다는 것입니다. 버전이 다르긴 하지만 git을 실행하는데는 문제가 없다는것인데 intellij가 제대로 인식하지 못하는 이유는 의문이네요.

 

 

728x90
반응형
반응형

Docker를 사용하여 필요한 container를 실행할때 종종 특정 문제로 자동 종료되는 문제가 발생한다.

 

어제 설정하던 aerospike에서 발생한 문제로 예를 들어보겠다.

$ sudo docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ce-5.7.0.11 --config-file /opt/aerospike/etc/aerospike.conf
c9f7eb263df0b0d0854df535f6dcb70251b3730696629618a4802b8e047daec9
$ sudo docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED      STATUS      PORTS                                                                                                                                                 NAMES
3efd82760b2c   rabbitmq:management   "docker-entrypoint.s…"   3 days ago   Up 3 days   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq

위 내용은 서버 콘솔에 접속하여 aerospike container를 실행하고 실행된 컨테이너를 확인한 것이다.

aerospike가 리스트에 없는것을 확인할 수 있는데 그런경우 -a 옵션을 주면 모든 컨테이너 리스트를 확인 할 수 있다.

$ sudo docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                      PORTS                                                                                                                                                 NAMES
c9f7eb263df0   aerospike:ce-5.7.0.11       "/usr/bin/dumb-init …"   13 seconds ago   Exited (1) 12 seconds ago                                                                                                                                                         aerospike
3efd82760b2c   rabbitmq:management         "docker-entrypoint.s…"   3 days ago       Up 3 days                   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq
f7f362458893   aerospike/amc               "/opt/amc/amc ' -con…"   7 days ago       Exited (2) 5 days ago                                                                                                                                                             aerospike-console
78a6c3b31e60   aerospike/aerospike-tools   "wrapper aql -h"         7 days ago       Exited (255) 7 days ago                                                                                                                                                           dazzling_wright

결과의 첫번째 항목이 실행하고자 하였던 container로 상태를 보면 Exited (1) 로 되어 있는것을 확인할 수 있다.

Exited (1)코드를 찾아보면 응용프로그램 오류로 인한 실패라고 한다. (다른 의견도 있으나 위의 경우와 가장 근접한 답인듯 함)

코드의 의미는 알았으나 정확한 원인은 알 수가 없다.

이런 경우 docker logs {container id} 명령어를 사용하면 컨테이너를 실행하면 발생한 오류 로그를 볼 수가 있다.

$ sudo docker logs c9f7eb263df0
link eth0 state up
link eth0 state up in 0
Mar 21 2022 09:20:06 GMT: CRITICAL (config): (cfg.c:2093) couldn't open configuration file /opt/aerospike/etc/aerospike.conf: No such file or directory
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:166) SIGINT received, shutting down Aerospike Community Edition build 5.7.0.11 os debian10
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:169) startup was not complete, exiting immediately

configuration 파일에 문제가 있어 실행이 되지 않았음을 알 수 있다.

내용을 수정하고 다시 시작하니 문제 없이 잘 동작 하였다.

 

 

728x90
반응형

+ Recent posts