[solved] arpwatch Bug und richtig patchen mit diff-file

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

[solved] arpwatch Bug und richtig patchen mit diff-file

Beitrag von pangu » 18.11.2013 21:30:51

Hi Leute,

hat das arpwatch aus der repo einen Bug? Der kann wohl alle Pakete, die mit VLAN getaggt sind (802.1q), nicht verarbeiten. Das produziert fast sekündlich diese Fehlermeldung in /var/log/syslog
Nov 18 21:27:13 meinhostname arpwatch: 00:14:5e:ab:12:cd sent bad hardware format 0xfff
Ich hab dieses Posting hier hier gefunden. Wollte aber vorher mal in die Runde fragen, ob da jemand mehr weiß. Ich frage mich nun, wie zum Geier ich mein arpwatch patchen könnte. Die in diesem Thread gepostete patch-Datei habe ich mit

Code: Alles auswählen

curl -J -O 'http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;filename=0001-Ignore-802.1Q-frames.patch;att=1;bug=625796'
heruntergeladen. Wie patcht man aber nun arpwatch? Ich muss wohl eine Datei namens "arpwatch.c" erstmal finden, die finde ich aber auf meinem System gar nicht. Klar, ich hatte ja auch nicht from source installiert, sondern das fertige Paket "arpwatch". Wie geht man da nun also vor?
Zuletzt geändert von pangu am 20.11.2013 15:19:58, insgesamt 1-mal geändert.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: arpwatch Bug und richtig patchen mit diff-file

Beitrag von Cae » 18.11.2013 21:44:45

Code: Alles auswählen

$ cd $(mktemp -d)
$ wget -q 'http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;filename=0001-Ignore-802.1Q-frames.patch;att=1;bug=625796'
$ apt-get source arpwatch 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 352 kB of source archives.
Get:1 http://ftp.de.debian.org/debian/ wheezy/main arpwatch 2.1a15-1.2 (dsc) [1,714 B]
Get:2 http://ftp.de.debian.org/debian/ wheezy/main arpwatch 2.1a15-1.2 (tar) [203 kB]
Get:3 http://ftp.de.debian.org/debian/ wheezy/main arpwatch 2.1a15-1.2 (diff) [148 kB]
Fetched 352 kB in 0s (813 kB/s)   
dpkg-source: info: extracting arpwatch in arpwatch-2.1a15
dpkg-source: info: unpacking arpwatch_2.1a15.orig.tar.gz
dpkg-source: info: applying arpwatch_2.1a15-1.2.diff.gz
dpkg-source: info: upstream files that have been modified: 
 arpwatch-2.1a15/FILES
 arpwatch-2.1a15/INSTALL
... @@@ Riesenhaufen Patches @@@
 arpwatch-2.1a15/util.h
$ cd arpwatch-2.1a15/
$ patch < ../bugreport.cgi\?msg\=20\;filename\=0001-Ignore-802.1Q-frames.patch\;att\=1\;bug\=625796 
patching file arpwatch.c
$ sha1sum arpwatch.c
b9ef9d5100aa0a4d38e4552dece6fc091839becf  arpwatch.c
$ debian/rules ...
Und dann daraus ein Paket stricken und das z.B. in's lokale Repo stecken oder mit dpkg -i einspielen.

Falls apt-get source nicht funktioniert, gibt es vielleicht keine deb-src-Zeilen in der sources.list.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: arpwatch Bug und richtig patchen mit diff-file

Beitrag von pangu » 19.11.2013 07:54:26

Guten Morgen Cae,

danke für die ausführliche Anleitung. Ich musste noch mit

Code: Alles auswählen

apt-get install dpkg-dev
erstmal nachinstallieren, damit ich dpkg-dev nutzen konnte. Außerdem hast du einen kleinen Tippfehler in dem Kommando shasum. Könntest mir vielleicht noch erklären, wie ich da weiter vorgehen muss mit dem Paket stricken und in die eigene Repo kopieren? Hab sowas noch nie gemacht :?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: arpwatch Bug und richtig patchen mit diff-file

Beitrag von Cae » 19.11.2013 22:48:02

shasum (aus Debianperl) und sha1sum (aus Debiancoreutils) sind zwei unterschiedliche Programme, die zumindest in meinen rudimentaeren Tests dasselbe tun. Meinen tu' ich das, wie es oben stand ;) aber es kommt wohl auf's selbe hinaus. Debiandpkg-dev braucht's uebrigens fuer dpkg-source, nicht -dev :P.

Zu den anderen Fragen verweise ich mal ganz frech auf unser Wiki, naemlich Wiki-Artikel zum Thema Lokales_Repository, und bezueglich Paketbau auf das Debian-Wiki [1]. Falls du nur eine (Hand voll) Maschine(n) patchen willst, ist ein Repo vielleicht uebertrieben, gehen tut's auch mit dpkg -i.

Gruss Cae

[1] https://wiki.debian.org/BuildingTutorial
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: arpwatch Bug und richtig patchen mit diff-file

Beitrag von pangu » 20.11.2013 15:03:55

Hi Cae,

da ich das nur auf einer einzigen Maschine machen möchte, begnüg ich mich mit einem einfachen "dpkg -i paketname" Also beschäftige ich mich nicht weiter mit der lokalen Repo (trotzdem danke für den link) sondern damit, wie ich das Paket "arpwatch" patchen tue und daraus ein Paket baue um es anschließend installieren zu können.

Ich habe mir den Link zum Gebäude-Tutorial (Building-Tutorial :mrgreen: :lol: ) angeschaut, jedoch hänge ich an dem Schritt
EDIT THE SOURCE CODE
ungefähr in der Hälfte des Tutorials. Dort wird nämlich beschrieben, wie man mit dpatch arbeitet. Ich habe mir dpatch mal installiert, aber ich wüßte jetzt nicht, wie ich das äquivalente Kommando eingeben muss. In dem Tutorial heißt es ja:
To create a new patch, you'll need to do the following. Type:

dpatch-edit-patch 80_bts585426_fix_help 70_bts537138_disambiguate_recurse.dpatch

This will start a new shell inside a special environment, where you can edit your files and dpatch will afterwards take care of getting the differences with the original.

the first parameter is the name assigned to the new patch : 80_bts585426_fix_help
the second parameter is the last patch that should be applied before applying the new one : 70_bts537138_disambiguate_recurse.dpatch

The name of the patch was chosen to match the pattern already established by the maintainer.
In meinem Falle ist es doch aber so, daß ich ja kein .patch oder .diff file erstellen möchte, da ich ja bereits solch eine Datei habe (0001-Ignore-802.1Q-frames.patch). Diese Datei, die ich bereits vom Internet heruntergeladen habe, schaut aus wie eine .diff Datei wenn ich sie mit 'cat' betrachte.

Brauche ich also dpatch oder wie genau patch ich nun diese vorliegende Patch-Datei in die arpwatch.c die ich aus den sourcen heruntergeladen habe und sich im verzeichnis /tmp/workdir/arpwatch-2.1a15/ befindet?

Kann es also sein, daß ich dpatch gar nicht erst benötige, sondern irgendwie mit dem Befehl patch arbeiten sollte, um die arpwatch.c zu patchen? und falls ja, wie baue ich das Paket, nachdem die arpwatch.c erfolgreich gepatcht wurde? mit fakeroot wie im BuildingTutorial irgendwo erwähnt?

EDIT: Hab's grad genauso gemacht, also:

Code: Alles auswählen

patch /tmp/work.dir/arpwatch-2.1a15/arpwatch.c /root/downloads/0001-Ignore-802.1Q-frames.patch
und dann einfach

Code: Alles auswählen

fakeroot debian/rules binary
Da es ja kein patch directory gibt in dem Falle von arpwatch (ich hab ja auch keins extra erstellt, da ich dpatch nicht genutzt hatte), wurde mit dem fakeroot-Befehl einfach das Paket gebaut und zwar in /tmp/work.dir/arpwatch_2.1a15-1.2_amd64.deb. Nachdem ich dann mit

Code: Alles auswählen

dpkg -i arpwatch_2.1a15-1.2_amd64.deb
das neu gebaute Paket installiert habe, verschwanden auch schon die besagten Fehlermeldungen aus /var/log/syslog. Scheint so, als ob der Patch also gegriffen hat und ich ihn erfolgreich anwenden konnte.

Mich würde trotzdem aber noch interessieren, ob es unbedingt hätte "fakeroot debian/rules binary" sein müssen, um das Paket zu bauen. Oder wie wäre hier der richtige empfehlenswertere Schritt gewesen?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: arpwatch Bug und richtig patchen mit diff-file

Beitrag von Cae » 20.11.2013 23:23:22

Okay, das Vorgehen mit dpatch [1] ist wohl genauso wie das Repository unnoetig komplex fuer deinen Anwendungsfall. Der Sinn waere gewesen, dass man den Upstream-Code eindeutig von (Debian-)eigenen Patches zu unterscheiden.
pangu hat geschrieben:Mich würde trotzdem aber noch interessieren, ob es unbedingt hätte "fakeroot debian/rules binary" sein müssen, um das Paket zu bauen. Oder wie wäre hier der richtige empfehlenswertere Schritt gewesen?
dpkg-buildpackage macht das volle Programm inklusive Changelog und Signatur, aber es ruft intern auch fakeroot debian/rules binary auf. Das wiederum sorgt massgeblich dafuer, dass ein Paket rausfaellt, was ja das Ziel deiner Aktion war.

Gruss Cae

[1] ich frag' mich gerade, ob dpatch nicht komplett ueberfluessig ist, weil du ja schon einen Patch hast... bzw. du wuerdest ihn in dpatch-Umgebung anwenden, was wiederum einen Patch erzeugt...
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: [solved] arpwatch Bug und richtig patchen mit diff-file

Beitrag von pangu » 21.11.2013 09:33:11

wie gesagt, ich denke auch, daß dpatch völlig überflüssig wäre in meinem Fall. Ich will ja den Patch nicht aktiv pflegen und gar upstreamen in die Öffentlichkeit. Ich wollt ja nur das .diff file herziehen als patch, und das habe ich eben mit dem Befehl "patch" erreichen können. Es hat ja alles funktioniert, wie ich zuvor erläutert habe.

Um auf meine Frage zurückzukehren
Mich würde trotzdem aber noch interessieren, ob es unbedingt hätte "fakeroot debian/rules binary" sein müssen, um das Paket zu bauen. Oder wie wäre hier der richtige empfehlenswertere Schritt gewesen?
Könnte ich diesen Schritt auch anders erledigen oder verwendet man grundlegend "fakeroot" um aus heruntergeladenen sourcen der deb-src Repo, anschließend ein Paketfile *.deb zu generieren?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: [solved] arpwatch Bug und richtig patchen mit diff-file

Beitrag von Cae » 21.11.2013 22:13:55

pangu hat geschrieben:Um auf meine Frage zurückzukehren
Mich würde trotzdem aber noch interessieren, ob es unbedingt hätte "fakeroot debian/rules binary" sein müssen, um das Paket zu bauen. Oder wie wäre hier der richtige empfehlenswertere Schritt gewesen?
Könnte ich diesen Schritt auch anders erledigen oder verwendet man grundlegend "fakeroot" um aus heruntergeladenen sourcen der deb-src Repo, anschließend ein Paketfile *.deb zu generieren?
Vielleicht gibt's da ein Verstaendisproblem: debian/rules ist ein ausfuehrbares Makefile, was die eigentliche Arbeit macht. Debianfakeroot ist nur ein Wrapper, der die Anwendung glauben laesst, als root zu laufen.

Keine Ahnung warum das noetig ist, ich behauptet mal, bei gescheiten Makefiles sollte es auch ohne gehen. Vielleicht werden die Upstream-Makefiles als gechrootetes make install aufgerufen, wobei es sinnig sein kann, auf root-Rechte zu pruefen. Schliesslich wuerde normalerweise nach /usr/ und sonstwohin kopiert, wo nicht-root keine Schreibrechte hat. Das make install wuerde man benoetigen, um die dadurch entstandenen Dateien anschliessend in's Paket zu schnueren, und damit ist's wieder schluessig. Steht aber bestimmt irgendwo praeziser in der Doku, als ich es mir jetzt aus den Fingern saugen koennte... ;)

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten