처음 Linux로 전환했을 때 제가 좋아했던 점 중 하나는 패키지 관리였습니다. Mac(Homebrew) 및 Windows(Chocolatey)에 Linux 스타일 패키지 관리를 도입하는 프로젝트가 있습니다.
Linux용 Snap 설치 지침을 제공하는 앱이 점점 더 많아지고 있는데 두 번째 패키지 관리 시스템을 추가하는 목적은 무엇입니까? 새로운 애플리케이션은 결국 Apt(또는 다른 Linux 패키지 관리 시스템)로 마이그레이션됩니까? 아니면 Linux 사용자가 원하는 모든 애플리케이션을 얻으려면 동일한 시스템에서 두 개의 다른 패키지 관리자를 실행해야 합니까?
답변1
Linux의 기존 패키지 관리에는 많은 장점이 있습니다. 종속성을 공유할 수 있으므로 작업을 작고 효율적으로 유지할 수 있습니다. 일반적으로 일종의 위원회를 거치므로 여러 차례의 검토를 거칩니다(이는 Linux 배포판에 따라 다르며 일부는 다른 배포판보다 프로세스가 적습니다). 일반적으로 오류를 기록하는 중앙 위치도 있습니다.
그러나 전통적인 패키지 관리에는 몇 가지 단점이 있습니다.
예를 들어, libfoo의 새 버전을 출시하면 해당 배포판을 사용하는 거의 모든 사람이 새 버전을 받게 됩니다. 이는 배포 관리자가 업데이트를 릴리스할 때 매우 보수적이어야 함을 의미합니다. 그들은 뒤로 갈 수 없습니다.
또한 응용 프로그램의 업스트림 개발자가 다양한 Linux 배포판에 맞게 응용 프로그램을 패키징하는 경우는 거의 없습니다. 특히 예상만큼 쉽게 업데이트를 출시할 수 없다는 사실을 깨닫게 되면 더욱 그렇습니다. 예를 들어, Ubuntu에서는 안정적인 버전이 삭제되면 배포판의 소프트웨어에 새로운 기능을 추가하는 것이 일반적으로 허용되지 않습니다. 보안 수정 및 버그 수정만 해당됩니다. 그리고그 과정이 번거롭더라도. 이것이 Ubuntu가 안정적으로 유지되는 방식이지만 Ubuntu 아카이브가 배포판 수명 동안 오래 지속되는 방식이기도 합니다.
또 다른 문제(이것은 어떻게 보느냐에 따라 단점이 될 수도 있고 장점이 될 수도 있습니다): 일반적으로 소프트웨어를 Linux 배포판으로 가져오려면 오픈 소스여야 합니다. 모든 것이 이렇지는 않습니다.
스냅샷은 여러 면에서 다릅니다. 첫째, 해당 종속성은 동일한 패키지에 번들로 제공됩니다. 즉, 공유할 수 없으므로 기존 패키지만큼 효율적이지 않습니다. 하지만 그 이유는 방금 제공한 libfoo 예제를 다루기 위한 것입니다. 이는 Snap 개발자에게 관련 없는 소프트웨어를 손상시키지 않고 적합하다고 생각하는 대로 항목을 변경할 수 있는 자유를 제공합니다. 따라서 위원회의 개입 없이 Linux 배포판과 완전히 독립적으로 배포될 수 있습니다. 실제로 애플리케이션의 업스트림 개발자가 애플리케이션의 스냅샷을 생성하고 유지하는 것은 흔한 일입니다. 왜냐하면 그들은 언제든지 사용자에게 업데이트를 보낼 수 있다는 것을 알고 있고, 뭔가가 중단되면 사용자만 중단될 것이라는 점을 알고 있기 때문입니다. 배포판의 절반도 그렇지 않습니다. libfoo가 깨졌습니다.
스냅샷은 또한 다음의 내용을 포함하는 squashfs 이미지일 뿐입니다. 라이센스 제한이 없습니다. 이를 통해 Microsoft는 Skype를 빠르게 출시하거나 Spotify에서 플레이어를 출시할 수 있습니다.
종속성이 번들로 포함되어 있고 단지 squashfs 이미지이기 때문에 배포판의 내장 패키지 관리 시스템에 관계없이 모든 Linux 배포판에 설치하고 실행하는 것이 매우 쉽습니다.
새로운 애플리케이션은 결국 Apt(또는 다른 Linux 패키지 관리 시스템)로 마이그레이션됩니까? 아니면 Linux 사용자가 원하는 모든 애플리케이션을 얻으려면 두 개의 다른 패키지 관리자를 실행해야 합니까?
예, 기존 종속성 관리 시스템은 사라지지 않습니다. 시간이 지남에 따라 apt를 통해 새로운 소프트웨어가 제공될 예정입니다. 그러나 이는 업스트림 개발자 자신이 아닌 소프트웨어가 적합해지기를 원하는 커뮤니티 구성원에 의해 계속 수행될 것입니다. Linux 배포판의 작동 방식에 따라 소프트웨어는 다음 배포판으로 업그레이드할 때까지 시간이 지남에 따라 오래될 수 있습니다. 일반적으로 말해서, 최신 자료를 원한다면 업스트림 개발자로부터 얻어야 합니다. 보시다시피, 그들은 이를 위해 점점 더 많은 스냅을 선택하는 것 같습니다. PPA(또는 이와 유사한 것)는 또 다른 옵션입니다.
어쨌든, 이것은 장점과 단점의 전체 목록이 아니며 여기서 논의할 수 있는 내용이 더 많이 있습니다. 나는 소프트웨어를 사용하는 모든 방법에는 목적이 있으며 그 어느 것도 사라지지 않는다는 점을 지적하고 있습니다.
답변2
이 답변은 매우 편향되어 있으며 의견이 포함되어 있습니다. 저는 몇몇 Linux 배포판의 패키저입니다.
리누스 토발즈가 말했듯이Linux의 한 가지 단점은 Debian/Ubuntu/Fedora/Suse/RHEL/Arch/Manjaro 등을 위한 "Linux용" 패키지(또는 애플리케이션)를 컴파일할 수 없다는 것입니다.
snap, flatpak 및 AppImage와 같은 프로젝트는 애플리케이션을 패키징하는 데 사용되는 형식입니다.~해야 한다모든 Linux 배포판에서 작동합니다. 이는 대부분 런타임 환경이나 정적 컴파일을 포함하여 수행됩니다.
Chromium과 같은 대규모 패키지는 일반적으로 컴파일하기가 매우 어렵기 때문에 이러한 형식에서 더 많은 이점을 얻습니다.