Het Toepassen van een Patch naar een Bestand (en het Maken van Patches) in Linux

0
504
Fatmawati Achmad Zaenuri/Shutterstock.com

De Linux patch opdracht kunt u een transfer van de wijzigingen van de ene set van bestanden naar een andere set bestanden snel en veilig. Leren patch op de meest eenvoudige manier.

De patch en het diff Commando ‘ s

Stel dat u een tekstbestand op uw computer. U ontvangt een gewijzigde versie van die tekst bestand van iemand anders. Hoe doe je het snel overzetten van alle wijzigingen van de gewijzigde bestand naar het originele bestand? Dat is waar de patch en verschillen in het spel komen. patch en verschillen zijn te vinden in Linux en andere Unix-Achtige besturingssystemen, zoals mac os-versie.

Het commando diff onderzoekt twee verschillende versies van een bestand en geeft de verschillen tussen hen. De verschillen kunnen worden opgeslagen in een bestand met de naam van een patch bestand.

De patch commando kan lezen van een patch bestand en gebruik de inhoud als een set instructies. Door het volgen van deze instructies, de wijzigingen in de gewijzigde bestand worden gerepliceerd in het oorspronkelijke bestand.

Stel je nu voor dat proces gebeurt op een hele map van tekst bestanden. Alles in één keer. Dat is de kracht van de patch.

Soms krijg je niet verzonden van de gewijzigde bestanden. Al je verzonden is de patch bestand. Waarom zou je tientallen bestanden ronde wanneer u kunt het verzenden van een bestand, of post een bestand voor gemakkelijk downloaden?

Wat doe je met de patch bestand daadwerkelijk patch van uw bestanden? Afgezien van bijna een tongue-twister, dat is ook een goede vraag. Wij helpen u met het in dit artikel.

De patch commando wordt meestal gebruikt door mensen die werken met de software source code bestanden, maar het werkt net zo goed met een set van tekst bestanden, ongeacht hun doel, source code of niet.

GERELATEERD: Hoe Vergelijk je Twee tekstbestanden in de Linux Terminal

Ons Voorbeeld Scenario

In dit scenario worden in een directory genaamd het werk bevat twee andere mappen. Een heet werken, en de andere heet de nieuwste. De werkmap bestaat uit een set van source code bestanden. De laatste map bevat de meest recente versie van de source code bestanden, sommige van die zijn gewijzigd.

Om veilig te zijn, de working directory is een kopie van de huidige versie van de tekst-bestanden. Het is niet de enige kopie van hen.

Het vinden van de Verschillen Tussen Twee Versies van een Bestand

Het diff commando vindt de verschillen tussen twee bestanden. De standaard actie is om een lijst van de gewijzigde regels in het terminal-venster.

Het ene bestand de naam van het jargon.c. We vergelijken met de versie in de werkmap naar de laatste map.

De -u (unified) optie vertelt diff ook een lijst van een aantal van de vn-gewijzigde tekst van vóór en na elk van de gewijzigde delen. Deze lijnen zijn de zogenaamde context-regels. Ze helpen de patch commando precies na te gaan waar een wijziging moet worden aangebracht in het originele bestand.

We geven de namen van de bestanden die diff weet welke bestanden met elkaar te vergelijken. Het oorspronkelijke bestand wordt als eerste vermeld, dan is het gewijzigde bestand. Dit is de opdracht die we geven om te vergelijken:

diff-u werkt/slang.c nieuwste/slang.c

diff produceert een output lijst met de verschillen tussen de bestanden. Als de bestanden identiek waren, zou er geen output vermeld. Het zien van dit type van de uitvoer van diff bevestigt dat er verschillen zijn tussen de twee versies van bestanden en dat het originele bestand moet herstellen.

Het maken van een Patch Bestand

Om vast te leggen die verschillen in een patch bestand, gebruik je het volgende commando. Het is dezelfde opdracht als hierboven, met de uitvoer van diff omgeleid naar een bestand met de naam van het jargon.patch.

diff-u werkt/slang.c nieuwste/slang.c > slang.patch

De naam van de patch bestand is arbitrair. Je kan het noemen wat je maar wilt. Het geven van een “.patch” – extensie is een goed idee, maar het maakt duidelijk wat voor type bestand het is.

Om de patch wet op het patch bestand en wijzig de werken/slang.het c-bestand, gebruik je het volgende commando. De -u (unified) optie kunt patch weten dat de patch bestand bevat unified context-regels. In andere woorden, gebruiken we de optie-u met diff, dus gebruiken we de optie-u met een patch.

patch -u werkt.slang.c -i-jargon.patch

Als alles goed gaat, er is een enkele regel van de uitvoer vertellen u patch is een patch van de file.

Het maken van een Back-up van het Originele Bestand

We kunnen instrueren patch om een back-up maken van patches voordat ze worden gewijzigd door het gebruik van-b (back-up) optie. De-i (input) optie geeft de mogelijkheid de naam van de patch bestand te gebruiken:

patch -u-b werken.slang.c -i-jargon.patch

Het bestand wordt hersteld als voorheen, met geen verschil te zien in de uitvoer. Echter, als je kijkt in de map, zie je dat het bestand met de naam van het jargon.c.orig is gemaakt. De datum-en tijdstempels van de dossiers blijkt dat straattaal.c.orig wordt het originele bestand en de slang.c wordt een nieuw bestand gecreëerd door de patch.

Met diff Met Directories

We kunnen gebruik maken van diff te maken van een patch-bestand bevat alle van de verschillen tussen de bestanden in twee mappen. We kunnen dan gebruik maken van die patch bestand met de patch hebben die verschillen worden toegepast op de bestanden in de map met een enkel commando.

De opties die we zullen gebruiken met diff-de -u (unified context) optie hebben we al eerder gebruikt, de -r (recursieve) optie om de diff-in alle sub-mappen en de -N (nieuw bestand) optie.

De -N optie vertelt diff hoe om te gaan met bestanden in de laatste map die niet in de working directory. Het dwingt diff te zetten instructies in het patch bestand dus thatpatch creëert bestanden die aanwezig zijn in de laatste map, maar ontbreekt in de working directory.

U kunt stel de opties in elkaar, zodat ze gebruik maken van een afbreekstreepje (-).

Merk op dat we alleen het verstrekken van de namen van de directory, we zijn niet te vertellen diff om te kijken naar specifieke bestanden:

diff -uitvoeren van werken/ laatste/ > slang.patch

Gluren In het Patch Bestand

Laten we eens een snelle blik in het patch bestand. We gebruiken minder om te kijken naar de inhoud.

De top van het dossier blijkt dat de verschillen tussen de twee versies van de slang.c.

Verder naar beneden scrollen via het patch-bestand, zien we dat het dan worden de wijzigingen beschreven in een ander bestand met de naam structs.h. Dit bevestigt dat de patch bestand bevat zeker de verschillen tussen de verschillende versies van meerdere bestanden.

Bezint Eer Ge Begint

Het patchen van een grote verzameling bestanden kan een beetje ontmoedigend, dus gaan we gebruik maken van de –dry-run optie om te controleren alles in orde is voordat we de sprong te wagen en zetten ons in voor het maken van de wijzigingen.

De –dry-run optie vertelt patch om alles te doen, afgezien van het daadwerkelijk wijzigen van de bestanden. patch zal het uitvoeren van al haar pre-flight controles op de bestanden en als het problemen ondervindt, het geeft hen. Één van beide manier, zijn er geen bestanden zijn gewijzigd.

Als er geen problemen zijn gemeld, kunnen we herhalen de opdracht zonder de –dry-run optie er uit en vol vertrouwen patch onze bestanden.

De -d (directory) optie vertellen patch die map om op te werken.

Merk op dat we geen gebruik je de-i (input) optie om te vertellen patch die patch bestand bevat de instructies van diff. In plaats daarvan gaan we het omleiden van het patch-bestand in patch met <.

patch –dry-run -ruN-d werken < slang.patch

Uit de hele directory, verschil gevonden in de twee bestanden naar de patch. De instructies met betrekking tot de wijzigingen voor deze twee bestanden zijn gecontroleerd door de patch , en geen problemen gemeld.

Pre-flight controles zijn OK, we zijn klaar voor de take-off.

Het patchen van een Directory

Om daadwerkelijk toepassen van de patches om de bestanden gebruiken we de vorige opdracht zonder de –dry-run optie er uit.

patch -ruN-d werken < slang.patch

Deze tijd elke regel van de output niet beginnen met “controle,” elke regel begint met “patchen.”

En er zijn geen problemen gemeld. We kunnen het compileren van de broncode, en we zijn op de laatste versie van de software.

Afrekenen Van Uw Verschillen

Dit is veruit de makkelijkste en veiligste manier om gebruik te maken van de patch. Kopie van uw doel-bestanden naar een map met de patch die map. Kopieer ze terug wanneer je blij bent dat het patch-proces voltooid vrij van fouten is.

LEES VERDER

  • “Dark-Modus Is niet Beter Voor U zijn, Maar We Houden Het Toch
  • “Hoe om te Stoppen met Windows 10 Van het Automatisch Leegmaken van de Prullenbak
  • “Hoe iOS 13 Bespaart Je iPhone-Batterij (door het Niet Volledig Laden)
  • “iPadOS Bijna het Maken van Je iPad een Echte Computer
  • “Apple Is van het Doden van iTunes, Maar Niet in Windows