안녕하세요! 오늘은 리눅스(Ubuntu, Debian 등) 환경에서 LLM을 로컬로 실행할 때 자주 쓰는 Ollama(올라마)를 흔적도 없이 완전히 삭제하는 방법을 정리해 보려고 합니다.
Ollama는 편리한 도구이지만, 다운로드한 대용량 AI 모델 파일(llama3, mistral 등)들이 서버나 PC 용량을 엄청나게 차지하곤 합니다. 단순히 실행 파일만 지우면 기가바이트(GB) 단위의 모델 데이터가 그대로 남아 용량 낭비가 심해지므로, 아래 단계를 따라 백그라운드 서비스부터 데이터까지 깔끔하게 지워보세요!
안쓰고 있는 모델들. 보니 용량확보와 ollama도 안쓰게 될테니 삭제 시작.
$ ollama ls
NAME                     ID              SIZE     MODIFIED     
qwen25c32b-dev:latest    2f1f5d205970    19 GB    4 months ago    
qwen2.5-coder:32b        b92d6a0bd47e    19 GB    4 months ago

$ ollama rm qwen2.5-coder:32b
$ ollama rm qwen25c32b-dev:latest

 

1. Ollama 백그라운드 서비스 중지 및 비활성화
리눅스에 Ollama를 설치하면 시스템이 켜질 때마다 백그라운드에서 자동으로 실행되도록 systemd 서비스가 등록됩니다. 먼저 이 서비스를 멈추고 비활성화해 줍니다.
터미널을 열고 아래 명령어를 순서대로 입력하세요.
bash
# 1. 실행 중인 Ollama 서비스 중지
sudo systemctl stop ollama

# 2. 부팅 시 자동 실행 비활성화
sudo systemctl disable ollama
코드를 사용할 때는 주의가 필요합니다.
 

2. 서비스 파일 및 실행 바이너리 제거
이제 시스템에 등록된 서비스 정의 파일과 Ollama 프로그램(바이너리) 자체를 삭제합니다.
bash
# 1. systemd 서비스 파일 삭제
sudo rm /etc/systemd/system/ollama.service

# 2. Ollama 실행 파일 삭제
sudo rm /usr/local/bin/ollama
코드를 사용할 때는 주의가 필요합니다.
 

3. 대용량 모델 파일 및 데이터 디렉토리 삭제
이 단계가 가장 중요합니다! 다운로드받았던 수많은 오픈소스 모델들이 저장된 폴더를 통째로 날려 용량을 확보하는 과정입니다.
bash
# 모델 및 라이브러리 데이터가 저장된 디렉토리 삭제
sudo rm -rf /usr/share/ollama
코드를 사용할 때는 주의가 필요합니다.
(주의: 이 명령어를 실행하면 기존에 다운로드한 모델 데이터가 모두 사라지며 복구할 수 없습니다.)

4. Ollama 전용 사용자 및 그룹 삭제
Ollama 설치 시 보안과 권한 관리를 위해 자동으로 생성되었던 ollama 시스템 계정과 그룹을 정리해 줍니다.
bash
# ollama 사용자 삭제
sudo userdel ollama

# ollama 그룹 삭제
sudo groupdel ollama
코드를 사용할 때는 주의가 필요합니다.
 

💡 보너스 팁: 프로그램은 두고 '특정 모델만' 지우고 싶다면?

전 다 지웠습니다.

Ollama를 계속 사용할 예정인데 특정 모델 때문에 용량이 부족한 경우라면, 프로그램을 아예 지울 필요는 없습니다. 아래 명령어로 특정 모델만 골라서 삭제해 보세요.
bash
# 1. 현재 내 PC에 설치된 모델 목록 확인
ollama list

# 2. 필요 없는 특정 모델 삭제 (예: llama3 삭제 시)
ollama rm llama3
코드를 사용할 때는 주의가 필요합니다.
 

마치며
위의 1~4단계를 모두 마치셨다면 리눅스 시스템에서 Ollama와 관련된 모든 프로세스, 파일, 계정이 완벽하게 제거되었습니다. 디스크 용량이 부족하셨던 분들에게 도움이 되었기를 바랍니다. 궁금한 점이 있다면 댓글로 남겨주세요!

안녕하세요, 리눅스 세계에서 오늘도 평화롭게(?) 삽질을 즐기는 평범한 개발자입니다.

최근 리눅스 민트(Linux Mint 22.2 zara)에서 기분 전환 겸 XFCE에서 Cinnamon(시나몬) 데스크톱 환경으로 세션을 전환해 신나게 코딩을 하고 있었습니다. 그런데 IDE에서 소스 코드를 화려하게 치며 Ctrl + Alt + H 단축키를 누른 순간, 제 시스템에 기이한 저주가 시작되었습니다. 이 키는 Terminator를 실행했던 custom key binding있었는데, 무심코 눌렀죠.

🚨 증상: "너의 포커스를 내가 지배하겠다"

단축키를 누르자마자 화면 우측 상단에 난데없이 검은색 불청객 팝업이 나타났습니다.

"Completion is disabled." (단어 보완 기능이 꺼졌습니다.)

빡치던 알림창 이미지

이 알림창이 뜨는 것까지는 참겠는데, 더 큰 문제는 이때부터 키보드 포커스가 완전히 안드로메다로 가버린다는 것이었습니다. 윈도우(Super) 키를 누르면 메뉴는 열리는데 정작 타이핑 검색이 안 먹히고, 마우스 클릭도 무시당하며, 바탕화면에 대고 키보드를 치면 우측 하단에 이상한 유령 텍스트 박스가 생겨 포커스를 지독하게 움켜쥐고 안 놔주더군요.

시스템이 멈춘 줄 알고 Alt + F2 ➡️ r로 시나몬 셸을 인공호흡해가며 버텼습니다.

🕵️‍♂️ 1차 용의자 검거: 입력기 Spell 모듈인 줄 알았지?

경험상 이런 뜬금없는 단어 보완 알림은 한글 입력기인 Fcitx5의 소행일 확률이 99%였습니다. 개발할 때 오타를 잡아주거나 단어를 추천해 주는 Spell Check(철자 검사) 및 Completion 기능의 단축키가 하필이면 제가 자주 쓰는 코딩 단축키와 겹친 것이죠.

"오냐, 설정 파일로 조져주마." 호기롭게 터미널을 열고 Fcitx5의 개별 모듈 설정 파일들을 난사했습니다.

Bash
 
# spell.conf와 global.conf를 강제로 후려치기!
mkdir -p ~/.config/fcitx5/conf
echo "TriggerKey=" > ~/.config/fcitx5/conf/spell.conf
fcitx5 -r &

결과: 실패. 😂 입력기 로그를 실시간으로 모니터링(fcitx5 -r)해 보니, 이 고집불통 녀석이 켜지면서 유저 설정을 비웃기라도 하듯 뒤늦게 Loaded addon spell을 당당하게 띄우며 단축키를 부활시키더군요.

안 되겠다 싶어 극단적인 대안으로 Fcitx5를 apt purge로 뼈대까지 밀어버리고 공장 초기화 재설치를 감행했습니다. (이때 한글 입력이 잠시 안 되어 영문으로 소통하는 눈물겨운 똥쇼를 벌였습니다.)

🏆 진종결: 범인은 다른 방에 숨어 있었다

재설치 후, 눈을 부릅뜨고 fcitx5-configtool(설정 창)의 모든 구석을 뒤지기 시작했습니다. 그리고 마침내... 진짜 흑막의 목덜미를 잡았습니다.

범인은 Spell 애드온 모듈이 아니라, 대문짝만하게 켜져 있던 Keyboard - English (US) 시스템 기본 입력기 설정 내부에 숨어 있었습니다!

감격의 범인 검거 샷

거기에 Trigger hint mode: Control+Alt+H가 아주 굳건하게 대못으로 박혀 있더군요. 그러니 애드온을 아무리 끄고 설정 파일을 복사해 붙여넣어도 시스템 메인 단축키가 포커스를 중간에서 계속 낚아챘던 것입니다.

🛠️ 해결 방법은 허무할 정도로 간단했습니다.

  1. fcitx5-configtool 실행 ➡️ Addons(부가 기능) 탭 진입
  2. 목록에서 [Keyboard] 혹은 [English (US)] 설정을 찾아 톱니바퀴(설정) 클릭!
  3. 문제의 Trigger hint mode 칸을 클릭한 뒤, 아래 [Clear (지우기)]를 눌러 빈칸(None)으로 전라 노출(?) 상태를 만들기.
  4. (덤으로 옆에 있던 충돌 유망주 Control+Alt+J도 같이 저승으로 보내버렸습니다.)
  5. Apply(적용) 누르고 해방감 만끽하기!

🎯 결론: 단축키가 쫀득하게 돌아왔다

설정을 저장하는 순간, 저를 괴롭히던 유령 텍스트 박스와 포커스 뺏김 현상이 거짓말처럼 완전히 박멸되었습니다. 이제 VS Code든 터미널이든 Ctrl + Alt + H를 아무리 연타해도 부드럽고 쫀득하게 본래 기능만 작동합니다.

멀티 데스크톱 환경(XFCE + Cinnamon)을 쓰다 보니 단축키와 입력기 데몬이 꼬여서 발생한 유쾌한(?) 삽질이었습니다.

혹시 리눅스 환경에서 코딩하다가 난데없이 "Completion is disabled" 팝업을 마주치고 마우스/키보드가 미쳐 날뛴다면, 엉뚱한 데서 파일 지우지 마시고 Fcitx5 키보드 기본 입력기 설정 창으로 직행하시길 바랍니다!

오늘의 삽질 일지 끝! 🐧

 

Goal : lighttpd redirection, http -> https

Meet the error when running lighttpd with lighttpd.conf

content of configuration

$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
    }
}

error

2024-09-24 06:02:21: (data_config.c.176) can't handle '$HTTP["host"] =~ ".*"' as you compiled without pcre support. \n(perhaps just a missing pcre-devel 
package ?) \n

 

1. Download source

https://github.com/PCRE2Project/pcre2/releases/tag/pcre2-10.44

 

Release PCRE2-10.44 · PCRE2Project/pcre2

This is mostly a bug-fix and tidy-up release. An explicit limit can now be set on the size of a compiled pattern.

github.com

 

2. configurre

PREFIX=`pwd`
CROSS_COMPILE=/opt/arm/bin/arm-linux-gnu
HOST=arm-linux-gnu

./configure --host=${HOST} \
CC=${CROSS_COMPILE}-gcc \
AR=${CROSS_COMPILE}-ar \
STRIP=${CROSS_COMPILE}-strip \
RANLIB=${CROSS_COMPILE}-ranlib \
--prefix=${PREFIX}/_install

 

3. make && make install

 

4. lighttpd configure for build

PCRE2DIR=$(pwd)/../pcre/pcre2/_install

...

--with-pcre2=$PCRE2DIR \
--with-pcre2-include=$PCRE2DIR/include \
--with-pcre2-libs=$PCRE2DIR/lib/ \

...

[root@localhost nfs]$ top -h
top: invalid option -- 'h'
BusyBox v1.24.1 (2022-12-08 15:49:07 KST) multi-call binary.

Usage: top [-b] [-nCOUNT] [-dSECONDS] [-m]

Provide a view of process activity in real time.
Read the status of all processes from /proc each SECONDS
and display a screenful of them.
Keys:
        N/M/P/T: show CPU usage, sort by pid/mem/cpu/time
        S: show memory
        R: reverse sort
        H: toggle threads, 1: toggle SMP
        Q,^C: exit

Options:
        -b      Batch mode
        -n N    Exit after N iterations
        -d N    Delay between updates
        -m      Same as 's' key


[root@localhost nfs]$ top --help
BusyBox v1.24.1 (2022-12-08 15:49:07 KST) multi-call binary.

Usage: top [-b] [-nCOUNT] [-dSECONDS] [-m]

Provide a view of process activity in real time.
Read the status of all processes from /proc each SECONDS
and display a screenful of them.
Keys:
        N/M/P/T: show CPU usage, sort by pid/mem/cpu/time
        S: show memory
        R: reverse sort
        H: toggle threads, 1: toggle SMP
        Q,^C: exit

Options:
        -b      Batch mode
        -n N    Exit after N iterations
        -d N    Delay between updates
        -m      Same as 's' key

 

 

 

 

 

1. tar xzvf openssl-1.1.1d.tar.gz; cd openssl-1.1.1d

2. vi mybuild.sh

#!/bin/sh
./Configure linux-generic32 shared -DL_ENDIAN --prefix=/tmp/openssl --openssldir=/tmp/openssl

TOOL_PREFIX=/home/user/bin/arm-arago-linux-gnueabi-
CROSS_COMPILE=${TOOL_PREFIX}

make install CC=${CROSS_COMPILE}gcc RANLIB=${CROSS_COMPILE}ranlib LD=${CROSS_COMPILE}ld MAKEDEPPROG=${CROSS_COMPILE}gcc PROCESSOR=ARM

3. mkdir /tmp/openssl

4. chmod +x mybuild.sh

5. ./mybuild.sh

 

 

 

 

 

 

 

 

 

 

1. sudo vi /etc/resolvconf/resolv.conf.d/base

# 알맞은 DNS 를 입력
nameserver xxx.xxx.xxx.xxx

2. sudo resolvconf -u

3. ping www.google.com  

 

 

 

 

우분트 콘솔만 있는 모드로 부팅하기!!
정식 명칭은 콘솔모드가 아닌가 봅니다. 아무리 수정해도 안되길래 검색해서 해결책을 찾았네요.
제가 필요한건 2번부터~ 2-1까지는 인터넷에 많이 있더라구요.
2-2 해주니까 잘동작합니다~ 감사합니다.  아...전 Mint 18.2 Sonya을 사용하고 있어요..

펌글입니다. 원본 http://ddart.net/xe/board/5094

1. 데스크탑 GUI 종료하는 법

ctrl + alt + f1 을 눌러 로그인 후

sudo service lightdm stop

 

2. GUI 모드대신 CLI모드로 부팅하는 법

 

2-1.  grub 수정

 

vi /etc/default/grub

 

1) GRUB_CMDLINE_LINUX_DEFAULT 라인 #붙여 주석처리

 

2) GRUB_CMDLINE_LINUX="" 라인을 GRUB_CMDLINE_LINUX="text" 로 수정

 

3) 몇줄 아래 '#GRUB_TERMINAL=console' 라인에서 주석처리된 부분을 #제거해서 'GRUB_TERMINAL=console' 로 수정

 

update-grub 명령으로 grub 업데이트

 

 

2-2 systemctl 변경

 

systemctl set-default multi-user.target

 

나중에 원래대로 돌리려면

systemctl set-default graphical.target

 

2 -3 reboot

 


# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         10.0.0.1        0.0.0.0         UG    100    0        0 eth0

10.0.0.0        *               255.255.255.0   U     100    0        0 eth0


#route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0

# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         10.0.0.1        0.0.0.0         UG    100    0        0 eth0

10.0.0.0        *               255.255.255.0   U     100    0        0 eth0

192.168.0.0     *               255.255.255.0   U     0      0        0 eth0


#route del -net 192.168.0.0 netmask 255.255.255.0

# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         10.0.0.1        0.0.0.0         UG    100    0        0 eth0

10.0.0.0        *               255.255.255.0   U     100    0        0 eth0




Got the error because there are space or tab  character at the end of line in Makefile.


#Makefile

...

32 LOCAL_SRCS    := $(LOCAL_PATH)/main.cpp \    

33                                $(LOCAL_PATH)/manager.cpp 


...

공백 있다고 컴파일 에러 뱉음...

그럼 맨뒤에 공백 대신 탭 쓰면 괜찮으려나..

~/work/app/Makefile.inc:32: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.



해보니 안됨..-_-;;;

환경 : Linux xxxx 3.19.0-32-generic #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ARM CC : linaro-armv7ahf-2015.11-gcc5.2/arm-linux-gnueabihf



grep -rwn --exclude-dir=.svn --exclude-dir=.git --exclude=*.o -I PATTERN *


-I : ignore binary files

+ Recent posts