Debian Paket aus einem Debian Source Paket: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
 
=Hintergrund=
 
=Hintergrund=
*Um SSL aufzubrechen muss Squid mit der Option '''--with-openssl''' übersetzt werden.
+
*Um SSL aufzubrechen muss Squid mit der Option '''--with-openssl''' übersetzt werden.
*Dies kann man folgendermassen erreichen.
+
*Die Squid-Pakete aus den Distributionsquellen sind ohne diese Option gebaut.
 +
*Wir müssen Squid also selbst übersetzen.
 +
 
 
=Theoretisches Vorgehen=
 
=Theoretisches Vorgehen=
*wget http://www.squid-cache.org/Versions/v4/squid-4.10-20200419-r2ae88f12c.tar.gz
+
;So würde man Squid von Hand übersetzen:
*tar -xvzf squid-4.10-20200419-r2ae88f12c.tar.gz
+
*wget http://www.squid-cache.org/Versions/v5/squid-5.2.tar.gz
*cd squid*
+
*tar -xvzf squid-5.2.tar.gz
 +
*cd squid-5.2
 
*./configure --with-openssl --enable-ssl-crtd --enable-ltdl-convenience --enable-icap-client
 
*./configure --with-openssl --enable-ssl-crtd --enable-ltdl-convenience --enable-icap-client
*make  
+
*make
 
*make install
 
*make install
;Wir wollen aber ein Debian Paket erstellen
+
;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=
 
=Vorgehensweise=
==Source herunterladen==
+
 
;Beachten Sie das in der Datei /etc/apt/sources.list die apt-src Quellen eingerichtet sein sollten.
+
==Quellpaket herunterladen==
 +
;In der Datei /etc/apt/sources.list müssen die deb-src Quellen eingerichtet sein.
 
*apt source squid
 
*apt source squid
*cd squid*  
+
*cd squid-*
==Anpassen==
+
;Wir laden hier nicht den Quellcode von squid-cache.org, sondern das fertige Debian-Quellpaket.
;Wir müssen die configurations Optionen einbinden.
+
;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
 
*vi debian/rules
DEB_CONFIGURE_EXTRA_FLAGS="$(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)" \
+
;Die Optionen werden bei den bestehenden configure-Flags ergänzt:
...
+
<pre>
'''--with-openssl --enable-ssl-crtd \'''
+
--with-openssl \
'''--enable-ltdl-convenience \'''
+
--enable-ssl-crtd \
'''--enable-icap-client'''
+
--enable-ltdl-convenience \
 +
--enable-icap-client \
 +
</pre>
 +
;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=
 
=Erster Durchlauf=
 +
;Hätten wir apt build-dep vergessen, sähe der Bauversuch so aus:
 
*dpkg-buildpackage -us -uc
 
*dpkg-buildpackage -us -uc
 
  dpkg-buildpackage: info: source package squid
 
  dpkg-buildpackage: info: source package squid
 
  dpkg-buildpackage: info: source version 5.2-1ubuntu4.3
 
  dpkg-buildpackage: info: source version 5.2-1ubuntu4.3
 
  dpkg-buildpackage: info: source distribution jammy
 
  dpkg-buildpackage: info: source distribution jammy
dpkg-buildpackage: info: source changed by Sergio Durigan Junior <sergio.durigan@canonical.com>
 
 
  dpkg-buildpackage: info: host architecture amd64
 
  dpkg-buildpackage: info: host architecture amd64
 
   dpkg-source --before-build .
 
   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 (>='''
+
  dpkg-checkbuilddeps: error: Unmet build dependencies: libltdl-dev debhelper (>= 12.8) dh-apparmor
'''3.5) libkrb5-dev comerr-dev libldap2-dev libnetfilter-conntrack-dev libpam0g-dev libsasl2-dev libsystemd-dev libtdb-dev nettle-dev libssl-dev'''
+
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: build dependencies/conflicts unsatisfied; aborting
 
  dpkg-buildpackage: warning: (Use -d flag to override.)
 
  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.
  
=Es fehlen eine ganze Menge Pakete=
 
;Diese installieren wir nach
 
*sudo apt-get install libltdl-dev debhelper dh-apparmor libcppunit-dev libcap2-dev libecap3-dev libgnutls28-dev libkrb5-dev comerr-dev libldap2-dev libnetfilter-conntrack-dev libpam0g-dev libsasl2-dev libsystemd-dev libtdb-dev nettle-dev libssl-dev
 
 
=Der zweite Durchlauf=
 
=Der zweite Durchlauf=
 
*dpkg-buildpackage -us -uc
 
*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.

Aktuelle Version vom 25. August 2026, 05:25 Uhr

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.