Debian Paket aus einem Debian Source Paket

Aus Xinux Wiki
Version vom 25. August 2026, 05:25 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Hintergrund

  • Um SSL aufzubrechen muss Squid mit der Option --with-openssl übersetzt werden.
  • Die Squid-Pakete aus den Distributionsquellen sind ohne diese Option gebaut.
  • Wir müssen Squid also selbst übersetzen.

Theoretisches Vorgehen

So würde man Squid von Hand übersetzen
Das Ergebnis liegt danach im System, ohne dass die Paketverwaltung etwas davon weiss.
Es lässt sich nicht sauber deinstallieren und wird bei Updates nicht berücksichtigt.
Deshalb bauen wir stattdessen ein Debian-Paket.

Vorgehensweise

Quellpaket herunterladen

In der Datei /etc/apt/sources.list müssen die deb-src Quellen eingerichtet sein.
  • apt source squid
  • cd squid-*
Wir laden hier nicht den Quellcode von squid-cache.org, sondern das fertige Debian-Quellpaket.
Es enthält bereits ein vollständiges debian/ Verzeichnis mit allen Anpassungen der Distribution.
Wir müssen also nur die Übersetzungsoptionen ergänzen.

Build-Abhängigkeiten installieren

  • sudo apt build-dep squid
build-dep liest die benötigten Pakete direkt aus dem Quellpaket und installiert sie.
Das ist der bequeme Weg. Wie man die Liste auch selbst herausfindet, zeigt der erste Durchlauf weiter unten.

Anpassen der Übersetzungsoptionen

  • vi debian/rules
Die Optionen werden bei den bestehenden configure-Flags ergänzt
	--with-openssl \
	--enable-ssl-crtd \
	--enable-ltdl-convenience \
	--enable-icap-client \
Achten Sie darauf, dass jede Zeile ausser der letzten mit einem Backslash endet.
Der genaue Ort im debian/rules unterscheidet sich je nach Squid-Version - suchen Sie nach dem vorhandenen configure-Aufruf.

Erster Durchlauf

Hätten wir apt build-dep vergessen, sähe der Bauversuch so aus
  • dpkg-buildpackage -us -uc
dpkg-buildpackage: info: source package squid
dpkg-buildpackage: info: source version 5.2-1ubuntu4.3
dpkg-buildpackage: info: source distribution jammy
dpkg-buildpackage: info: host architecture amd64
 dpkg-source --before-build .
dpkg-checkbuilddeps: error: Unmet build dependencies: libltdl-dev debhelper (>= 12.8) dh-apparmor
libcppunit-dev libcap2-dev libecap3-dev (>= 1.0.1-2) libgnutls28-dev (>= 3.5) libkrb5-dev comerr-dev
libldap2-dev libnetfilter-conntrack-dev libpam0g-dev libsasl2-dev libsystemd-dev libtdb-dev
nettle-dev libssl-dev
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
dpkg-checkbuilddeps vergleicht die Angaben aus debian/control mit dem installierten System und bricht vorher ab.
Genau diese Liste hätte man nun von Hand nachinstallieren können - apt build-dep nimmt einem das ab.

Der zweite Durchlauf

  • dpkg-buildpackage -us -uc
Der Bau dauert je nach Maschine mehrere Minuten.

Ergebnis

  • ls ../squid*.deb
Es entstehen mehrere Pakete, unter anderem squid, squid-common und squid-openssl.

Installieren

  • sudo apt install ./squid_*.deb ./squid-common_*.deb
apt löst dabei Abhängigkeiten auf, dpkg -i tut das nicht.

Prüfen ob SSL einkompiliert wurde

  • squid -v
In der Ausgabe muss --with-openssl in der Zeile "configure options" auftauchen.