Overzicht
patch is een hulpprogramma dat uitvoerbestanden (ook wel patchbestanden genoemd) die door het diff-commando zijn gemaakt, leest en wijzigingen toepast op de originele bestanden. Deze patchbestanden leggen doorgaans regel voor regel vast welke inhoud is toegevoegd, verwijderd of gewijzigd. Het patch-commando past het originele bestand aan op basis van deze informatie. Voordat versiebeheersystemen (zoals CVS, Git) verschenen, was dit de belangrijkste manier om codewijzigingen te delen.
Belangrijkste kenmerken
De belangrijkste kenmerken van het patch-commando zijn:
- Maakt gebruik van patchbestanden die zijn gegenereerd door het diff-commando.
- Wordt veel gebruikt voor het bijwerken van broncode, het wijzigen van configuratiebestanden, enz.
- Kan sommige wijzigingen detecteren en toepassen, zelfs als het originele bestand niet exact overeenkomt met het patchbestand.
- Biedt ook de mogelijkheid om wijzigingen ongedaan te maken (reverse).
Belangrijkste opties
Veelgebruikte opties van het patch-commando zijn gegroepeerd op doel.
1) Patch toepassen en ongedaan maken
2) Help
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`patch` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Leer de functionaliteit van het patch-commando aan de hand van verschillende gebruiksvoorbeelden.
Patchbestand toepassen
patch -p1 -i my_changes.patch
Past wijzigingen toe op het originele bestand met behulp van het `my_changes.patch` bestand. De `-p1` optie negeert het eerste directorypad van het patchbestand.
Wijzigingen ongedaan maken
patch -p1 -R -i my_changes.patch
Zet de toegepaste patchinhoud terug naar de originele staat met behulp van de `-R` optie. Wordt gebruikt om een gepatcht bestand terug te zetten naar de originele staat.
Patch toepassen via pipe
diff -u original_file.txt new_file.txt | patch -p0 original_file.txt
Geeft de uitvoer van het `diff`-commando direct door via een pipe (`|`) aan het `patch`-commando om de patch direct toe te passen zonder een patchbestand te maken.
Voorbeeld van patchtoepassing
patch --dry-run -p1 -i my_changes.patch
Gebruik de `--dry-run` optie om vooraf te controleren welke wijzigingen zullen optreden bij het toepassen van de patch.
Installatie
Patch is standaard opgenomen in de meeste Linux-distributies. Als het pakket niet aanwezig is, kunt u het `patch`- of `diffutils`-pakket als volgt installeren:
Debian/Ubuntu
sudo apt update && sudo apt install -y patch
RHEL/CentOS/Fedora
sudo dnf install -y patch
Arch Linux
sudo pacman -S --needed patch
Tips & Aandachtspunten
Hier zijn enkele aandachtspunten bij het gebruik van het patch-commando.
Tips
- Het verenigde (unified) formaat, gegenereerd met `diff -u`, is het meest voorkomende patchformaat. Het gebruik van dit formaat verhoogt de slagingskans van het toepassen van de patch.
- De optie `-p` is cruciaal voor het negeren van padinformatie in het patchbestand. Controleer de header van het patchbestand om het juiste niveau te specificeren. Bijvoorbeeld, voor een pad zoals `a/src/file.c`, gebruik `-p1` om de patch toe te passen op `src/file.c`.
- Als het toepassen van de patch mislukt, wordt een bestand met de extensie `.rej` aangemaakt. Dit bestand bevat de mislukte delen van de patch en kan als referentie dienen bij handmatige correcties.
- Het is raadzaam om een back-up van het originele bestand te maken voordat u een patch toepast.