APT Package Hold

우분투는 커널 및 라이브러리 그리고 패키지 등이 지속적으로 업데이트가 이루어진다. 때에 따라 이런 업데이트 때문에 예상치 않는 개발 중인 모듈을 빌드할 때 에러가 발생하기도 한다.

 

예전에 작성 글인데, 우분투 16.04는 bison 3.x 버전이 설치되어 있고, 우분투 12.04는 bison 2.7 버전이 설치되어 있다. 우리가 개발중인 것은 bison 2.7 버전에서는 문제 없이 빌드가 되지만, bison 3.x에서는 빌드 에러가 발생하기 때문에 2.7 버전으로 롤백하려면 아래와 같은 방법으로 bison 3.x 삭제한 후 PPA를 통하여 2.7 버전으로 다운그레이드 시키는 것이다.

$ sudo apt autoremove bison
$ sudo add-apt-repository ppa:salehi/bison2
$ sudo apt install libbison-dev=2:2.7.1.dfsg-2 bison=2:2.7.1.dfsg-2

PPA 등록하여 bison 2.7 버전을 설치가 가능하나, 기본 저장소의 bison 3.x 버전이기 때문에 우분투 업데이트 진행 시, 자동으로 업데이트가 이루어진다. bison 패키지에 대해서 업데이트를 막으려면 apt-mark 명령어를 사용하여 업데이트를 블럭할 수 있다.

$ sudo apt-mark hold libbison-dev
$ sudo apt-mark hold bison

참고로, 위 방법보다는 buildroot에 포함된 bison을 사용하도록 buildroot 설정을 변경하는 것이 더 좋은 방법이다.