패키지 충돌은 크게 2가지가 있는데 1. 같은 패키지가 버전이 다르다 2. 같은 버전이 패키지가 다르다(소스 or 바이너리 등)
아치의 경우엔 배포되는 최신 버전만 존재해서 1은 애초에 허용하지 않고 2는 provide conflict를 써서 베타적으로 지워버림
젠투는 1은 SLOT이라는 개념을 사용해서 SLOT만 다르면 한 패키지의 여러 버전을 동시에 설치할수 있음 예를들어서 gcc는 6 7 8 9 10 다섯개 다 동시에 설치하는게 가능함 2는 virtual 패키지를 만들어서 아치의 provide 비슷하게 해줌
그래서 이렇게 여러 버전/패키지의 툴을 설치할때 디폴트는 뭐냐면 eselect를 써서 사용자가 kernel/gcc/rustc/jvm ... 기타등등을 선택함 gcc 9랑 10 깔려있으면 eselect gcc set 1하면 gcc:9가 선택되고 eselect gcc set 2하면 gcc:10이 선택됨
옛날 펜티엄m 노트북에 젠투에 컴피즈 올리고 친구한테 자랑했던 기억나네 ㅋ
이건 젠투가 훨씬 낫네
그래서 아치에선 구버전 하위호환을 aur에서 별개 패키지를 만드는 식으로 구현하는데 어떤건 기존 버전이랑 conflict되게 설정해놔서 설치하면 공식 저장소 버전 지워지고 어떤건 둘다 설치되고 사용자가 따로 설정해야하는등 중구난방임
입맛대로 완벽히 설정 가능한건 젠투인데 아치를 쓰면 얻는 장점은 유지보수시에 들어갈 귀찮음이 대폭 줄어든단점 정도. 사실 몇몇 패키지를 빼면 대다수는 아치 기본 설정을 따라가도 문제없는 경우가 많았음. 예외는 대부분 aur에서 대체 패키지 올라온거 설치하면 되고
정리하면 젠투는 가장 확실하지만 업데이트 몇번만 해도 자잘한 패키지까지 버전 설정 하나하나 물어봐대는 귀찮고 번잡한 구조고 아치는 단순한 대신 지저분한 해결책이지만 귀찮음 측면에선 합리적이라고 볼수있름