Debian Paket aus einem Debian Source Paket
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
- wget http://www.squid-cache.org/Versions/v5/squid-5.2.tar.gz
- tar -xvzf squid-5.2.tar.gz
- cd squid-5.2
- ./configure --with-openssl --enable-ssl-crtd --enable-ltdl-convenience --enable-icap-client
- make
- make install
- 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.