Linux에 관해 지극히 평범한 대화를 나누다가 "그래서… 앱은 어떻게 설치하나요?"라고 묻는 것만큼 대화의 흐름을 순식간에 망치는 일도 없습니다. 분위기가 즉각적으로 바뀌는 것을 느낄 수 있죠. 누군가는 손가락 관절을 꺾으며 준비하고, 다른 누군가는 마치 평생 이 순간만을 기다려온 것처럼 몸을 앞으로 기울입니다. 갑자기 질문은 사라지고, 강한 의견과 의심스러울 정도로 감정적인 투자가 오가는 토론 클럽이 되어버립니다.
저도 이해합니다. 저도 겪어봤으니까요. 그 주에 어떤 배포판을 썼는지, 최근에 무엇 때문에 짜증이 났는지에 따라 저도 모든 입장에서 논쟁해 본 적이 있습니다. 하지만 단순히 주말 동안 테스트하고 승자를 선언하는 것이 아니라, 실제로 세 가지 방식을 모두 사용해 본 끝에 저는 꽤 확고한 결론에 도달했습니다. 이건 더 이상 이론적인 이야기가 아닙니다. 테스트를 거쳤고, 약간의 좌절도 겪었으며, 가끔은 카페인의 힘을 빌려야 했던 현실적인 경험입니다. 그리고 네, 제게는 확실한 승자가 있습니다.
왜 Linux에는 새로운 앱 형식이 필요했나
전통적인 패키지는 잘 작동하다가도 어느 순간 한계에 부딪혔다
Linux에서 앱을 설치하는 것이 깔끔하게 느껴지던 시절이 있었습니다. 패키지 관리자를 사용해 저장소에서 무언가를 가져오면 모든 것이 문제없이 작동할 것이라 믿었죠. 하지만 더 최신 소프트웨어나 아주 특수한 소프트웨어가 필요할 때는 이야기가 달라집니다. 혹은 배포판이 "안정성"을 이유로 절대 건드리지 않으려는 특정 버전의 라이브러리에 의존하는 경우도 있죠. 바로 그때부터 상황이 이상해집니다. PPA, 수동 설치, 그리고 음모론처럼 복잡하게 얽힌 의존성 체인까지. 하나를 고치면 세 개가 고장 저는, 전형적인 Linux의 통과 의례입니다.
개발자들도 상황이 좋지는 않았습니다. 여러 배포판을 지원한다는 것은 끝없이 패키징을 하거나, 사용자가 "작동하지 않아요"라는 유용한 정보 하나 없는 불만을 제기하는 것을 지켜봐야 한다는 의미였습니다. 그래서 모든 것을 하나로 묶어 어디서든 실행할 수 있게 만드는 범용 형식에 대한 아이디어는 매우 타당했습니다. ‘출혈을 멈추자’는 단순한 목표였지만, 이를 구현하는 방식은 세 가지가 매우 달랐습니다.
AppImage는 자유처럼 느껴졌지만, 어느새 짐이 되었다
포터블 앱은 직접 사용해 보기 전까지만 훌륭하다
AppImage는 처음에는 가장 사랑하기 쉬운 형식입니다. 파일을 다운로드하고 실행 권한을 준 뒤 더블 클릭하면 끝이니까요. 설치 과정도, 시스템 변경도, 원치 않는 백그라운드 서비스도 없습니다. "흔적을 남기지 않는" 방식이라 매우 깔끔하게 느껴집니다. 솔직히 그 나름의 매력도 있죠. Linux가 "복잡하게 생각하지 말자"라고 말하는 것 같습니다. 하지만 계속 사용하다 보면 생각이 달라집니다.
어느 순간 다운로드 폴더가 디지털 쓰레기통처럼 변해버립니다. 무엇이 최신 버전인지 잊어버려 같은 앱이 열 개씩 쌓여 있죠. 개발자가 부지런하지 않으면 자동 업데이트도 없습니다. 추가 도구를 사용해 억지로 연결하지 않는 한 제대로 된 시스템 통합도 이루어지지 않죠. 작동은 합니다. 아주 잘 작동하죠. 하지만 결코 시스템의 일부처럼 느껴지지는 않습니다. 마치 짐을 풀지 않고 버티는 손님처럼 말이죠. AppImage는 자유입니다. 하지만 적극적으로 관리하지 않으면 금세 엉망이 되기도 합니다.
Snap은 모든 것을 고치려다 그 자체가 하나의 거대한 문제가 되었다
구조는 좋지만, 시스템이 대신 결정을 내리기 시작하면 곤란하다
Snap은 완전히 다른 에너지로 다가옵니다. 구조화되어 있고, 중앙 집중식이며, 관리됩니다. 앱을 설치한다기보다는 이미 작동 방식에 대한 확고한 철학을 가진 시스템에 앱을 탑승시키는 느낌입니다. 공정하게 말하자면, 그중 많은 부분은 장점입니다. 샌드박싱은 견고하고, 업데이트는 자동으로 이루어지며, 설정만 마치면 신경 쓸 일이 거의 없습니다. Ubuntu에서는 원하든 원치 않든 어디에나 존재하죠.
하지만 곧 단점이 눈에 들어오기 시작합니다. 앱을 실행할 때마다 클릭을 제대로 했는지 의심하게 될 만큼 아주 짧은 지연 시간이 발생합니다. 백엔드는 Canonical과 밀접하게 연결되어 있는데, 이는 모두에게 환영받는 방식은 아닙니다. 그리고 자동 업데이트는요? 이론적으로는 훌륭하지만, 자체적인 일정에 따라 업데이트가 진행될 때는 다소 불안하기도 합니다. Snap은 시스템 안의 또 다른 시스템처럼 느껴집니다. 그리고 가끔은 그 시스템이 주도권을 쥐고 있는 것처럼 느껴지기도 하죠.
Flatpak은 서서히 "또 다른 선택지" 이상의 존재가 되었다
시간이 지나도 나를 성가시게 하지 않은 유일한 방식
Flatpak이 단번에 제 마음을 사로잡은 것은 아닙니다. 모든 것이 딱 맞아떨어지며 "아, 바로 이거야!"라고 외치게 되는 극적인 순간은 없었습니다.
그보다 훨씬 조용했죠. 그저 문제를 일으키지 않았을 뿐입니다. 앱은 깔끔하게 설치되었고, 필요할 때 실행되었으며, 업데이트는 큰 사건이 되지 않고 처리되었습니다. 그 무엇도 저와 충돌하지 않았는데, Linux 환경에서 이는 대단한 일입니다. 샌드박싱은 존재하지만 보이지 않는 벽 뒤에 갇혀 있지 않습니다. 실제로 설정을 조정할 수 있죠. 앱에 필요한 권한을 부여하고, 필요 없을 때는 회수할 수도 있습니다. Flatseal 같은 도구를 사용하면 제약이 아닌 제어라는 느낌을 받게 됩니다.
그리고 Flathub이 있습니다. 완벽하지는 않지만, Linux에서 살아있는 실제 앱 생태계에 가장 가까운 곳입니다. 제가 필요한 대부분의 앱이 있고, 보통 최신 상태를 유지하며, 시스템이 어떻게 작동해야 하는지에 대한 타인의 철학을 강요받는다는 느낌이 들지 않습니다. Flatpak은 여러분의 설정을 지배하려 하지 않습니다. 그저 자연스럽게 녹아들 뿐입니다.
승자는 내가 더 이상 신경 쓰지 않게 된 것이다
솔직히 말씀드리자면, 이 형식들 중 완벽한 것은 없습니다. AppImage는 빠른 다운로드와 휴대용 사용에 환상적입니다. Snap은 특히 통제된 환경에서 많은 것을 올바르게 처리합니다. 모두가 실제 문제를 해결하며, 여러분의 설정에 따라 어떤 것이든 타당한 선택이 될 수 있습니다.
하지만 제가 실제로 매일 사용하는 것을 돌아보면, 제가 사용해야 한다고 생각하는 것이나 Reddit이 추천하는 것이 아니라, 본능적으로 손이 가는 것은…
관련 기사
바로 Flatpak입니다. 흥미진진해서가 아닙니다. Linux의 미래라서도 아니죠. 그저 항상 제 앞길을 방해하지 않기 때문입니다. 그것이 진정한 승리입니다. Linux는 이미 많은 관심을 요구합니다. 시스템, 도구, 설정에 대해 생각하다 보면 인정하고 싶지 않을 만큼 많은 시간을 쏟게 되죠. 앱 형식이 그 위에 또 다른 결정의 층을 얹는 것은 결코 원치 않는 일입니다. Flatpak은 그런 소음을 제거합니다. 무언가가 긍정적인 의미에서 눈에 띄지 않게 되고, 관심을 끌지 않으면서 조용히 제 역할을 다할 때, 비로소 논쟁은 끝납니다.
적어도 여러분에게는 말이죠.