데비안 deb 패키지 내용 수정
요즘은 대부분의 컴퓨터가 64비트에서 동작합니다. 그래서, 바이너리 패키지도 64비트 (amd64)로 컴파일되고 패키징 됩니다. 그러나, 일부 패키지는 특히, 와인과 관련된 패키지들은 32비트 (i386) 패키지가 설치되어야 동작을 합니다.
64비트 시스템에서 32비트 바이너리를 컴파일하고 패키징하는 몇 가지 방법이 알려져 있습니다. 그러나, 어떤 경우에는 나쁜 의존성으로 인해, 32비트 패키지를 만드는 것이 매우 어렵습니다.
어쨌든, 패키지 관리자는 의존성에 의한 미리 설치되어야 할 패키지를 설치하지 않고는 원하는 패키지를 설치하지 못하기 때문에, 다른 잘 알려진 저장소, 예를 들어, 데비안 시드 저장소에서 패키지를 가져와서 내 환경에 맞도록 바꾼 후에 패키지를 설치할 수 있습니다.
데비안의 패키지 이름, deb는 타르볼과 마찬가지로 데비안 도구를 사용하여 내용을 풀고, 다시 패키지로 묶을 수 있습니다.
이제, 특정 deb 패키지를 풀어서 원하는 내용을 수정하고, 다시 묶는 과정을 확인해 두고자 합니다.
패키지 수정
예를 들어, 그래픽 성능 향상을 위해, libdrm, mesa, xserver-xorg-video-amdgpu 파일을 최신으로 업그레이드하려고 시도할 수 있습니다.
데비안 시드의 소스를 가져와서 현재 시스템에서 컴파일하는 과정은 데비안 패키지 제작을 확인하십시오.
이때, 가능한 버전 번호는 현재의 시드와 같이 해서 컴파일하는 것이 좋은데, 왜냐하면 수정할 사항을 줄이기 위함입니다.
보통 수정해야 할 사항은 다음과 같습니다:
- 버전 정보가 맞지 않을 때, 버전 정보의 수정 : 예를 들어, 현재 2.34 버전 (amd64)을 컴파일하고, 2.34의 i386 버전을 시드에서 가져와서 설치할 수 있습니다. 그 후 2.35 버전의 소스 코드로부터 패키지를 컴파일하고, 2.35 i386 패키지가 제공되지 않은 시점에서 기존의 2.34의 버전 번호를 2.35로 바꾸어서 설치할 수 있습니다. DEBIAN/control 파일에서 수정합니다.
- 의존성 정보 수정 : 시드에서 컴파일될 경우, libc6 등의 버전을 시드의 것에 맞게 수정되어 있으므로, 이것을 현재의 시스템의 것으로 수정해야 합니다. DEBIAN/control 파일에서 수정합니다.
- 존재하는 파일 이름이 같을 때, 해당 파일을 제거해야 합니다. 보통 같은 이름의 amd64 패키지에 changelog.Debian.gz 파일이 존재하고, 시드에서 제공하는 i386 패키지에서도 해당 파일이 존재하는 경우가 있습니다. 이때, i386 패키지에서 해당 파일을 제거해야 설치가 됩니다. 보통 /usr/share/doc/package_name/changelog.Debian.gz의 파일입니다.
위의 정보는 보통 현재 시스템에 설치된 mesa 관련 파일들, amd64, i386 패키지를 찾아서, 지역에서, dpkg를 사용해서 동시에 설치하면 나옵니다:
- sudo dpkg -i libegl-mesa0....
이때, 설치가 되지 않은 이유를 화면에 표시할 것입니다. 예를 들어, libffi8_3.4.2-4_i386.deb는 libc6 버전 번호가 맞지 않고, /usr/share/doc/libffi8/changelog.Debian.gz 파일이 중복되어 충돌이 발생한다는 정보를 얻습니다.
이제 패키지를 풉니다:
- sudo dpkg-deb -R libffi8_3.4.2-4_i386.deb extracted-files/
여기서 의존성 또는 버전 번호를 수정합니다.
- sudo vi extracted-files/DEBIAN/control
충돌이 발생하는 파일을 제거합니다:
- sudo rm -rf extracted-files/usr/share/doc/libffi8/changelog.Debian.gz
모든 과정이 완료되면, 새롭게 패키지로 묶습니다:
- sudo dpkg-deb -b extracted-files/ libffi8_3.4.2-4_i386.deb
이 패키지 이름은 가능한 control 파일에 있는 것과 같게 만드는 것이 좋습니다.