나는 linuxtouchpad.org에서 터치패드 해커를 위한 문서를 작성 중이고 어떤 데비안 패키지가 libinput에 대한 빌드 종속성을 가지고 있는지 설명하려고 합니다(예: 그게 맞습니까 sudo apt build-dep libinput
아니면 그렇 습니까 sudo apt build-dep libinput10
?)
왜 우리는 하나 가지고 있습니까 libinput10
? 나는 데비안 배포판에서 libinput5
오래된 deb 패키지의 증거를 보았습니다. jessie
libinput은 X
버전 향상을 받았지만 다른 libinput 패키지(예: libinput-bin
libinput 및 libinput libinput-dev
)는 그렇지 않은 이유는 무엇입니까?
libinput
최신 버전의 소스 라이브러리 자체는 1.19.2
"5" 또는 "10" 접미사와 관련이 없는 것 같습니다.
답변1
데비안에서 사용하는 패키징 도구(dpkg)는 동일한 패키지의 여러 버전을 동시에 설치하는 것을 지원하지 않습니다. 따라서 동일한 소프트웨어의 여러 버전을 설치하려면 각 버전이 서로 다른 이름을 가진 패키지에 있어야 합니다.
라이브러리를 사용하는 서로 다른 프로그램이 서로 다른 버전의 라이브러리에 대해 빌드되므로 동일한 공유 라이브러리의 여러 버전을 설치하는 것이 가능해야 합니다. 비록 특정 시점에 libinput을 사용하는 모든 프로그램이 버전 10에 대해 구축되었더라도 영원히 그런 것은 아닙니다. 버전 11이 출시되면 라이브러리를 사용하는 모든 프로그램이 즉시 재구축되는 것은 아니기 때문에 버전 10과 함께 설치하는 것이 가능해야 한다.
이 제한사항은 공유 라이브러리가 아닌 대부분의 패키지에는 적용되지 않습니다. /lib/udev/libinput*
여러 버전의 소프트웨어를 동시에 설치할 이유가 없으므로 여러 버전의 소프트웨어를 설치할 필요가 없습니다 libinput-bin
. 여러 버전에 대한 프로그램 바이너리를 빌드하려면 libinput-dev
여러 버전을 동시에 설치하기 만 하면 되며 libinput
데비안은 패키징으로 이를 지원하려고 시도하지 않습니다.
라이브러리가 호환되지 않는 방식으로 변경될 때마다 라이브러리 패키지를 변경해야 하기 때문에 데비안은 라이브러리가 이전 바이너리가 변경할 수 없는 방식으로 변경될 때마다 라이브러리 이름과 숫자로 라이브러리 패키지 이름에 대한 규칙을 정의합니다. 번호가 변경됩니다. 새 라이브러리를 사용하지 마십시오. 즉, 라이브러리 패키지 버전 번호는 언제든지 변경되어야 합니다.ABI다양성.
업스트림 버전 번호 지정 규칙에 따라 ABI 변경 사항은 라이브러리 버전 번호의 패턴과 일치할 수도 있고 그렇지 않을 수도 있습니다. 주 버전 번호에 대한 매우 광범위한(그러나 보편적이지는 않은) 규칙이 있습니다.응용 프로그래밍 인터페이스API 변경은 거의 항상 ABI 변경을 의미하지만 많은 ABI 변경에는 호환되지 않는 API 변경이 포함되지 않습니다. 라이브러리에 아무런 변경이 없이 다른 라이브러리의 변경으로 인해 ABI가 변경되는 경우에도 가능합니다.
라이브러리 파일 자체에는 라이브러리가 호환되지 않는 방식으로 변경될 때 변경되는 이름이 포함되어 있습니다: soname. 이 고유한 이름은 동적 로더가 올바른 버전을 선택하는 방법입니다. 필수는 아니지만 대부분의 라이브러리는 다음 형식의 soname을 사용합니다. libfoo.so.N
여기서 N은 ABI가 호환되지 않는 방식으로 변경될 때마다 변경되는 정수입니다. Debian의 Libinput은 이 규칙을 따르며 현재 N 값은 10입니다.
$ readelf -d /usr/lib/x86_64-linux-gnu/libinput.so.10.13.0 | grep SONAME
0x000000000000000e (SONAME) Library soname: [libinput.so.10]
.10
ABI가 호환되지 않는 방식으로 변경되면 이 섹션이 변경됩니다. .13.0
ABI가 이전 버전과 호환되는 방식으로 변경되면 이 섹션도 변경됩니다.
자세한 내용은 다음을 참조하세요.