있잖아...
아치, 만자로 리눅스는 수시로 업뎃 되잖야.
pacman 으로 어플 업뎃 설치하는게 컴파일해서 설치하는 건 아니고 대부분 바이너리로 설치하는건데,
어플1, 어플2가 있을 때, 어플1은 라이브러리이고 ABI 가 바뀌어서 하위 호환성이 깨졌다고 치자.
어플2가 어플1에 의존함. 어플1은 업뎃이 있는데, 어플2 업뎃은 개발자가 아직 안 만들어줌.
어플1이 업데이트되면 어플2는 어떻게 되는거임?
있잖아...
아치, 만자로 리눅스는 수시로 업뎃 되잖야.
pacman 으로 어플 업뎃 설치하는게 컴파일해서 설치하는 건 아니고 대부분 바이너리로 설치하는건데,
어플1, 어플2가 있을 때, 어플1은 라이브러리이고 ABI 가 바뀌어서 하위 호환성이 깨졌다고 치자.
어플2가 어플1에 의존함. 어플1은 업뎃이 있는데, 어플2 업뎃은 개발자가 아직 안 만들어줌.
어플1이 업데이트되면 어플2는 어떻게 되는거임?
바이너리를 바이너리로 저장하는게 아니라 PKGBUILD 파일로 만들어뒀다가 필요할때마다 빌드해서 패키지 새로 만드는거임
그래서 그런 경우 아치팀이 r2붙여서 새 바이너리를 빌드하지
다른 배포판들도 비슷하게 돌아가는걸로 암
데비안의 경우 stable 의 경우 버전이 고정되어 있어서 abi 는 고정임. 다만 1.0.0-1, 1.0.0-2 이런 식으로 버전 올라감. 근데, testing, unstable 의 경우, 각 패키지 제작자간 의사 소통이 잘 안 되고, 사용자가 의존성 에러난다는 보고를 하지 않으면 간혹 의존성 문제로 못 쓰는 어플 발생함.
어디던간에 그런 abi 문제 때문에 소스로 저장해둔다는말 ㅇㅇ
덕분에 영감을 얻어서 패키지에 바이너리를 넣지 않고, 소스코드를 넣고, 설치할 때 post_install() 에서 make; make install 삭제할 때 pre_remove() 에서 make uninstall 멀티 플랫폼용 패키지 제작했당. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
결국 아치/만자로 리눅스, 데비안 testing/unstable 버전, 우분투 홀수년.04, 홀수년.10 버전은 어플 개발자가 어플 소스코드를 배포하지 않으면 못 쓰게 될 수도 있단 얘기 맞지?
진짜 바이러리 그대로만 배포하면 abi 깨질때마다 박살나는거지
ㄱㅅㄱㅅㄱㅅ 파딱 고맙^^
ABI 깨지는 일은 한 10년에 한번 있을까말까 한 정도라 보통은 문제 안됨 - return 0;
gcc 에서는 5.3 때 한번 깬거 외에는 아직까지 없었음 - return 0;
작년초인가 openssl 버전업할때 여럿 박살나던데
언어 abi가 아니라 그냥 상위버전 나오면서 호환 박살나는 경우 ㅇㅇ
아 그건 어쩔 수 없지 ㅋㅋㅋ - return 0;