소개
Ubuntu에서 앱 메뉴에 나타난 아이콘 중 일부를 삭제하고 싶을 때, 다음과 같은 두 가지 경우를 고려할 수 있습니다:
- 앱과 함께 아이콘을 모두 삭제하는 경우 — 별도로 설명합니다.
- 앱은 유지하면서 단지 아이콘만 삭제하는 경우 — 이 문서에서 다룹니다.
이 예제에서는 Telegram 또는 Telegram Desktop의 아이콘만 삭제하고, 실제 앱은 유지하고 싶습니다.
설치 방법
설치 방법을 기억하지 못할 경우, 다음과 같은 방법 중 하나일 수 있습니다:
| 번호 | 설치 방법 | 어떻게 확인할 수 있는지 | 어떻게 삭제할 수 있는지 (터미널) | 특징 / 위험 |
|---|---|---|---|---|
| 1 | 내장 저장소 | apt policy 앱명 → archive.ubuntu.com |
sudo apt remove --purge 앱명 && sudo apt autoremove |
안전하지만 autoremove는 다른 패키지도 영향을 줄 수 있으므로 확인 필요. |
| 2 | 추가 저장소 (PPA 등) | apt policy 앱명 → 외부 URL파일이 /etc/apt/sources.list.d/에 있음 |
1. sudo apt remove 앱명2. .list 파일과 키 삭제3. sudo apt update |
저장소를 먼저 삭제해야 합니다 — 그렇지 않으면 apt 오류 발생. |
| 3 | .deb 패키지 |
`dpkg -l | grep 앱명` | sudo apt remove --purge 앱명 (dpkg -P보다 더 좋음) |
| 4 | Snap | `snap list | grep 앱명<br>which 앱명→/snap/bin/앱명` |
sudo snap remove 앱명 |
| 5 | Flatpak | `flatpak list | grep 앱명` | flatpak uninstall 앱명 && flatpak remove --unused |
| 6 | 준비된 바이너리 (AppImage, .tar.gz) |
apt/dpkg/snap에 없음바이너리는 ~/Apps/, /opt/, ~/.local/bin/에 있음 |
rm -rf /경로/프로그램 ~/.local/share/applications/앱.desktop ~/.config/앱/ |
중앙 관리 없음 — 어떤 것을 삭제했는지 잊을 수 있음. |
| 7 | .run 설치기 |
sudo ./앱.run으로 실행됨/opt/앱/에 있음, uninstall.sh 파일 있음 |
1. sudo /opt/앱/uninstall.sh2. 그렇지 않으면 수동으로 — /opt/, /usr/bin/, .desktop, systemd, ~/.config/ |
가장 “더럽게” 설치된 방식. 종종 uninstall 스크립트가 남지 않음. |
| 8 | 컴파일 (make install) |
which 앱명 → /usr/local/bin/ |
1. make uninstall (있으면)2. 없으면 수동으로 삭제 |
삭제 또는 checkinstall을 미래에 사용하는 경우 |
| 9 | 관리자 도구 (pipx, cargo, npm -g) |
which 명령어 → ~/.local/bin/, ~/.cargo/bin/ |
pipx uninstall 명령어, cargo uninstall 명령어, npm uninstall -g 명령어 |
시스템을 깨뜨리지 않지만, apt 버전과 충돌할 수 있음 (예: node). |
이것은 완전한 목록이 아닙니다. 다른 방법을 사용하지 않기를 바랍니다 ![]()
go install,gem install- Docker / Podman GUI 이미지
- linuxbrew / nix / guix를 통한 설치
설치 방법으로 간주되지 않는 항목
apt install ./file.deb→ 이는apt를 통해.deb패키지를 설치하는 것일 뿐,dpkg를 사용하지 않는 것이 아닙니다.- GUI 설치 프로그램 (Software Center, Discover) →
apt/snap/flatpak의 프론트엔드입니다. - 자동 실행 추가 /
systemd --user→ 이는 설치 후 설정이지, 설치 방법이 아닙니다.
알려지지 않은 프로그램의 설치 방법을 빠르게 확인하는 방법
# 1. 실행 파일이 어디에 있는지 확인
which 명령어
# 2. 패키지 출처 (apt/dpkg에서 온 경우)
dpkg -S $(which 명령어) 2>/dev/null || echo "Not in dpkg"
# 3. snap/flatpak 확인
snap list | grep -i 명령어
flatpak list | grep -i 명령어
# 4. ~/.local/bin 또는 /opt에 있는지 확인
ls -l $(which 명령어)
# 5. 최근 설치 기록 확인 (최근에 설치된 경우)
grep "install.*명령어" /var/log/apt/history.log 2>/dev/null
journalctl --since "2 weeks ago" | grep -i "install.*명령어"
깨끗한 시스템을 위한 팁:
.run파일 프로그램을 미래에 설치할 경우 — AppImage 또는 **bubblewrap/toolbox**를 통한 격리 사용을 고려하세요.make install대신checkinstall을 사용하세요 →.deb파일을 생성하여apt를 통해 쉽게 제거 가능.- 사용자
.desktop파일은~/.local/share/applications/에 관리하세요 — 이들은 항상 시스템 파일을 덮어씁니다.
애플리케이션 아이콘 파일이 어디에 있는가?
이것은 아이콘보다는 시작 스크립트입니다. 서비스 실행을 위한 스크립트와 유사합니다 (기억하십니까?)
하나의 위치:
/usr/share/applications/
Telegram 애플리케이션 분석
ls -l /usr/share/applications/ | grep -i tele
-rw-r--r-- 1 root root 371 Mar 6 2020 telegram.desktop
cat /usr/share/applications/telegram.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Telegram Desktop
Exec=/opt/telegram/Telegram -- %u
Comment=Official desktop version of Telegram messaging app
Icon=/opt/telegram/telegram.svg
StartupWMClass=Telegram
Categories=GNOME;GTK;Network;
MimeType=application/x-xdg-protocol-tg;x-scheme-handler/tg;
X-Desktop-File-Install-Version=0.22
이것으로 보아 실행 파일은
ls -l /opt/telegram/
total 190652
-rwxr-xr-x 1 root root 55 Mar 6 2020 Telegram
-rwxrwxr-x 1 root root 2184648 Nov 8 14:17 Updater
-rwxrwxr-x 1 root root 193023296 Nov 8 14:17 telegram
-rw-r--r-- 1 root root 4762 Mar 6 2020 telegram.svg
이제 명확해졌습니다. 이 아이콘의 이름은 Telegram Desktop입니다.
이 아이콘은 /opt/telegram/Telegram 파일을 가리킵니다. 이 파일은 매우 작고 55바이트입니다. 내용을 확인해 봅시다:
cat /opt/telegram/Telegram
#!/usr/bin/env bash
/opt/telegram/telegram -noupdate $@
이것은 wrapper 스크립트 (wrap=포장)이며, 실제로는 /opt/telegram/telegram 파일을 실행하고 --noupdate 옵션을 전달합니다. 이 옵션은 Telegram이 자동으로 업데이트를 확인하거나 설치하지 않도록 합니다.
$@는 스크립트에 전달된 인수를 개별 인수로 풀어내는 특수 변수입니다. 일반적으로 이 변수는 따옴표로 감싸서 사용하는 것이 좋습니다. (공백이 포함된 인수에 대한 문제를 방지하기 위해). 하지만 여기서는 공백이 없거나 특수 문자가 없는 사용자 이름이나 로그인 이름을 전달하므로 이 방식이 사용됩니다.
/opt/telegram/telegram 파일은 실행 가능한 파일입니다. (폴더에선 x 속성은 폴더를 통과할 수 있음을 의미하며, 파일에선 실행 가능성을 의미합니다.)
이건 단지 하나의 아이콘과 관련된 것일 뿐입니다. 설치 방법은 아직 명확하지 않습니다. 표에 따르면 run 설치 프로그램으로 보이지만, 확실하지 않습니다. Telegram은 앱 스토어에서 snap으로 제공되거나, tar.gz 아카이브로 제공됩니다. 이 경우는 후자에 더 가깝습니다.
두 번째 애플리케이션의 파일을 찾기 위해 whence 명령어를 사용합니다.
whence
실제로는 명령어가 아니라 별칭 (다른 명령어를 숨겨놓은 별칭)입니다.
~/.bash_aliases 파일을 열어보세요. (존재하지 않으면 새로 생성하세요). 아래 코드를 추가하세요:
# whence — 설치 방법을 빠르게 확인
whence() {
local prog="$1"
[ -z "$prog" ] && { echo "Usage: whence <program>"; return 1; }
```1;
echo "=== $prog ==="
echo "• which: $(which \"$prog\" 2>/dev/null || echo '—')"
echo "• snap: $(snap list 2>/dev/null | grep "^$prog " || echo '—')"
echo "• flatpak: $(flatpak list --app 2>/dev/null | awk -v p=\"$prog\" '$1==p {print $1\":\"$3}' || echo '—')"
echo "• dpkg: $(dpkg -S \"$(which \"$prog\" 2>/dev/null)\" 2>/dev/null | cut -d: -f1 || echo '—')"
echo "• .desktop: $(find ~/.local/share/applications /usr/share/applications -name \"*$prog*.desktop\" 2>/dev/null | head -1 || echo '—')"
}
.bash_aliases 파일은 ~/.bashrc 파일에서 호출됩니다. 따라서 파일에 변경 사항을 적용하려면 다음 명령어를 실행해야 합니다(이 변경 사항은 아래 명령어를 실행하는 터미널에서만 적용되거나, 시스템에 새 로그인을 할 때 적용됩니다).
source ~/.bashrc
외부적으로는 아무 변화가 없지만, 세션에 새 변수와 앨리어스가 추가됩니다.
확인해보세요:
whence telegram
=== telegram ===
• which: —
• snap: —
• flatpak:
• dpkg:
• .desktop: /home/ivan/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
여기서 .desktop 파일이 시스템의 /usr/share/applications/ 디렉토리가 아니라 홈 디렉토리에 위치해 있음을 확인할 수 있습니다(총 몇 개가 있는지 확인해보세요):
ls -l ~/.local/share/applications/
-rwxrwxr-x 1 ivan ivan 579 Nov 8 16:22 org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
이 파일의 내용이 지금 관심 있는 부분입니다:
cat ~/.local/share/applications/org.telegram.desktop*
[Desktop Entry]
Name=Telegram
Comment=New era of messaging
TryExec=/opt/telegram/telegram
Exec=/opt/telegram/telegram -- %u
Icon=org.telegram.desktop
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
Actions=quit;
DBusActivatable=true
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true
[Desktop Action quit]
Exec=/opt/telegram/telegram -quit
Name=Quit Telegram
Icon=application-exit
이 아이콘의 이름은 Telegram (Desktop 없음)입니다.
스크립트는 … 동일한 실행 파일 /opt/telegram/telegram을 참조하지만, 변수와 “업데이트하지 않음” 옵션을 전달하지 않습니다. 왜 그런지 모르겠습니다. 내부 목소리는 개발자가 어떤 배포 방식이든 일관된 방식으로 작업해야 한다고 말합니다. 하지만 이 경우는 중요하지 않아 보입니다. 로그인은 설정에서 자동으로 가져오므로 필수는 아닙니다. 차이점은 자동 업데이트 여부입니다. 그리고 사용자는 한 경우에 "텔레그램을 업데이트해야 합니다"라는 팝업을 보고, 다른 경우엔 앱이 자동으로 업데이트되고 재시작을 기다립니다(그러나 이건 확정된 것이 아닙니다).
요약하자면, 우리는 두 아이콘이 모두 동일한 텔레그램 인스턴스를 가리키는 것을 확인했습니다. 이것이 가장 중요한 점입니다. 이제 설정이 같고 프로필도 같은 텔레그램을 두 개가 가리키고 있으므로, 하나를 제거할 수 있습니다.
더 예쁘지 않은 아이콘을 제거해 봅시다:
~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
이 파일을 절대 삭제하지 마세요. 아이콘을 숨기는 방법은 다르게 합니다!
메뉴에서 텔레그램 아이콘만 숨기고(프로그램과 서비스는 유지)
스크립트에 [Desktop Entry] 섹션에 Hidden=true 매개변수를 추가합니다:
sed -i '/^\\[Desktop Entry\\]$/a Hidden=true' ~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
주의: 이 명령은 파일에 해당 줄이 이미 있는지 여부를 고려하지 않습니다(다시 실행할 경우). 하지만 중복은 문제가 되지 않습니다.
변경은 즉시 적용됩니다 - 아이콘이 메뉴에서 사라집니다. 아이콘을 복구하려면, 방금 추가한 줄(화살표로 표시됨)을 삭제하세요.

