apt vs dnf, snap vs flatpak
snap과 flatpak을 통해 간편하게 프로그램을 설치하는 방법
리눅스를 처음 접하면 기장 반가운건 다양한 것들중 단연 패키지관리자일 것이다.
만약 windows에 winget 패키지 관리자가 나오기 전이나, 또는 아직까지도 winget에 대해 들어보자도 못한 개발자에게는 더욱 반가웠을 것이다.
windows의 새로운 패키지 관리자인 winget에 대해선 다음에 다뤄보도록 하겠다.
우리가 보통 (그러니까 windows에서) 프로그램을 설치할때는 꽤 복잡하다.
- 해당 프로그램을 구글에 검색
- 프로그램의 exe 파일이나 msix 파일 다운
- 다운 받은 파일을 누르고 관리자권한 부여
- 다음 버튼 연타
- 끝
이렇듯 절대 쉬운 과정이 아니며 이런 과정 중간에 설치한 exe, msi, msix 파일이 남게 된다.
프로그램을 지울때도 설정창에 들어가 다음 버튼 연타를 시전해야되고, 만약 windows 10에서 바뀐 설정 프로그램에 안뜨는 프로그램이면 레거시 제어판을 켜서 삭제해야된다. (똑같이 다음버튼 연타도..)
하지만 리눅스를 사용하게되면, 설치하자마자 바로 apt나 yum, dnf 같은 패키지 관리자가 반겨준다.
but.. apt, yum같은 기본 패키지 관리자는 배포판별로 사용되는 deb, rpm같은 각 배포판 전용 파일을 사용하여, 은근 설치가 불가능한 프로그램들이 많다.
예을 들면 ubuntu에서 사용하는 기본 패키지 관리자인 apt로는 discord을 바로 설치할 수 없으며 공식패이지에서도 deb나 rpm 패키지 파일을 받을 수 없다.
이럴때 갑자기 리눅스를 사용하기로 결심한게 후회되고 막 손이 떨리면서 다시 원도우로 가고 싶고 winget이 그립고 macbook 병에 도져서 apple.com에 들어갈꺼같다면, 잠깐만 기다려라
바로 리눅스유저에게 주어진 snap와 flatpak!!! snap은 아마도 ubuntu 유저라면 전부 들어봤을 snap-store의 백엔드이고 (그렇다고 하자) flatpak는 fedora 스토어의 일부로 등록되있다.
이 둘에는 일반적인 패키지 관리자보다 훨씬 많은 패키지를 소유하고 있는데 이게 가능한 이유는 배포판과 별게로 완전히 다른 공간에서 실행되는 개념이기 때문이다.
혹시 appimage를 사용해본적이 있거나 macOS을 사용해 보았다면 빨리 이해가 가능하다.
둘다 인터넷에서 파일만 다운 받으면 별도의 설정없이 바로 실행할수 있는데, 해당 파일 안에 모든 정보가 기록되어 있기 때문이다.
이와 마찬가지로 snap, flatpak 커맨드에서는 각각 범용 패키징 파일을 사용하여 리눅스 배포판에 상관없이 모든 배포판에 설치할수 있고 어음... 그 골머리를 썩혔던 discord도 한줄이면 설치된다.
snap install discord
난 이걸 몰라서 뻘짓을 많이 했다
flatpak도 거의 동일하다.
flatpak install 패키지명
뭐 둘이 거의 동일하지만 보유하고 있는 패키지가 서로 다르기 때문에 둘 다 사용하는 편이 좋은거 같다.
아직은 snap과 flatpak가 내부적으로 어떻게 패키징하면 모든 배포판에서 돌아가는 건지는 모르지만 나중에 gtk 프로그래밍을 입문하게 되면 snap과 flatpak 패키징을 각각 진행해 보고 싶다.
시험 끝나면 해야지 :)