
install
is een veelzijdige opdracht voor het kopiëren van bestanden in Linux en macOS. Het is perfect voor de krachtige gebruiker die op zoek is naar efficiëntie. Lees dit artikel om te ontdekken hoe u slimmer kunt werken, niet harder.
Wacht – is het niet om software te installeren?
De install
commando heeft misschien de meest misleidende naam van een van de Linux-commando’s. Het installeert eigenlijk geen software. Als u een softwarepakket probeert te installeren vanaf de opdrachtregel in Ubuntu of een andere op Debian gebaseerde distributie, gebruikt u het apt-get
opdracht. Gebruik in andere Linux-distributies de pakketbeheertool van uw Linux-distributie, bijvoorbeeld dnf
op Fedora of zypper
op openSUSE.
Dus wat doet de installatie?
In een notendop install
combineert elementen uit de cp
(kopiëren), chown
(wijzig eigenaar), chmod
(wijzigingsmodus), mkdir
(maak directory), en strip
(strip symbolen) commando’s. Hiermee kunt u alle functies in één handeling gebruiken.
De install
commando kan:
- Kopieer bestanden zoals het
cp
opdracht. - Kies of u bestaande bestanden wilt overschrijven.
- Maak de doelmap als deze niet bestaat, zoals
mkdir
. - Stel de gebruikersmachtigingsvlaggen van de bestanden in, net als de
chmod
opdracht. - Stel de eigenaar van de bestanden in, net als de
chown
opdracht. - Verwijder niet-essentiële bagage uit uitvoerbare bestanden, net als het
strip
opdracht.
Ondanks al die functionaliteit is de install
commando heeft niet te veel opties om mee te kampen.
Wanneer zou je het gebruiken?
De install
commando zal waarschijnlijk niet elke dag worden gebruikt. Het is handig, maar alleen voor bepaalde situaties. Een scenario waar install
komt tot zijn recht in softwareontwikkeling. Stel dat u een nieuw hulpprogramma aan het programmeren bent. U moet tests uitvoeren buiten de ontwikkelomgeving. Om dat te doen, moet u de nieuwe programmabestanden naar een testdirectory kopiëren. De testmap moet mogelijk worden gemaakt en u moet de juiste machtigingen en eigendomsrechten voor de bestanden instellen.
Omdat ontwikkeling een iteratieve activiteit is, kunt u deze reeks acties uiteindelijk vele, vele keren uitvoeren. De install
command doet al het zware werk voor je. Eindelijk, wanneer uw nieuwe hulpprogramma klaar is om te worden geïmplementeerd, kunt u install
om het met de juiste machtigingen naar de uiteindelijke werklocatie te kopiëren.
Een voorbeeld
Een programmeur werkt aan zo’n nieuw hulpprogramma, genaamd ana
. Het bestaat uit een uitvoerbaar binair bestand en een database. Na het testen moet het worden gekopieerd naar /usr/local/bin
om het beschikbaar te maken voor alle gebruikers van het Linux-systeem. U moet de bestandsnamen en mappaden in ons voorbeeld vervangen door de bestanden en paden die u op uw computer gebruikt wanneer u install
.
Totdat het klaar is voor uitgave, wordt het getest in een directory met de naam ~/test/ana
. Leden van de geek
groep heeft machtigingen voor lezen en uitvoeren. Andere gebruikers hebben ook machtigingen voor lezen en uitvoeren. De install
commando gebruikt dezelfde numerieke weergave voor machtigingen als chmod
doet. Onze programmeur heeft besloten dat de rechten moeten worden ingesteld op:
- Eigenaar: lezen, schrijven en uitvoeren.
- Groep: lezen en uitvoeren.
- Overige: alleen uitvoeren.
Hoe u het install
Opdracht
De werkmap van onze fictieve programmeur is ~/work
. Hij heeft het programma geschreven, gecompileerd en een binair bestand gemaakt met de naam ana
. Hij heeft het databasebestand dat al gemaakt ana
werkt met, Words.db
. Dus beide bestanden zijn klaar om te testen. Laten we ze eens bekijken:
ls -l ana Words.db
De ana
hulpprogramma dat hij zojuist heeft geschreven, maakt anagrammen uit een zin die op de opdrachtregel staat. Verificatietesten zijn vrij eenvoudig.
Onze programmeur heeft aangeroepen ana
met de uitdrukking “koekje” en alles lijkt goed. Hij wil deze twee bestanden nu kopiëren naar het ~/test/ana
directory om te zien of het nieuwe hulpprogramma correct functioneert buiten de ontwikkelomgeving. Hij geeft het volgende bevel:
install -D -v ana Words.db -t ~/test/ana
De opties die op de opdrachtregel werden gebruikt, waren:
- D: Maak mappen aan, inclusief bovenliggende mappen, indien nodig.
- v: Uitgebreid, maak een lijst van elke map zoals deze is gemaakt en elke bestandskopie terwijl deze wordt uitgevoerd.
- t: Doeldirectory.
Dat kunnen we zien install
creëert de ~/test
directory en maakt vervolgens het ~/test/ana
directory. De bestanden worden een voor een weergegeven terwijl ze naar de doelmap worden gekopieerd.
Lijst van de bestanden in ~/test/ana
bevestigt dat ze correct zijn gekopieerd.
ls -l
De volgende stap is om het ana
hulpprogramma door het aan te roepen in de ~/test/ana
directory.
Het hulpprogramma werkt zoals verwacht, wat geweldig is. De machtigingen zijn echter niet correct. De vereiste is om leden van de groep aan te stellen geek
om lees- en uitvoeringsrechten te hebben, en voor andere gebruikers om alleen uit te voeren.
We kunnen beide problemen eenvoudig oplossen met de volgende opdracht. Let op het gebruik van sudo
om de opdracht uit te voeren met rootrechten. De -o
en -g
en opties vereisen dit. We zullen om ons wachtwoord worden gevraagd wanneer we de opdracht geven.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
- De
-b
(back-up) optie maakt back-ups van de bestanden voordat ze worden overschreven. - De
-S
(suffix) optie definieert het achtervoegsel voor de back-upbestanden. Als u geen achtervoegsel opgeeft, is een~
(tilde) wordt gebruikt. We vrageninstall
om een achtervoegsel van te gebruiken.bak
. - We hebben de eigenaar van het bestand ingesteld op
dave
de … gebruiken-o
(eigenaar) optie. - De
-g
(groeps) optie vereist de naam van een groep. Dit wordt de eigenaarsgroep van de bestanden. De groep die we gaan gebruiken heetgeek
. - De
-m
(modus) optie stelt de bestandsmodi voor de bestanden in met behulp van de standaardchmod
numerieke syntaxis.
We hoeven de -D
(maak mappen aan), omdat we weten dat de testmap al bestaat. We hebben ook de -v
(uitgebreide) optie. Lijst van de bestanden in onze ~/test/ana
directory toont ons de bestandsdetails:
ls -l
Dit bevestigt dat aan al onze eisen is voldaan.
- De bestanden zijn gekopieerd naar de testmap.
- De rechten zijn correct ingesteld.
-
dave
is de eigenaar van de bestanden. - De
geek
group is de eigenaarsgroep van de twee bestanden. - Er zijn back-ups gemaakt van elk bestand, genaamd ana.bak en Words.db.bak.
Dat alles werd bereikt door het gebruik van één commando. Netjes.
Onze programmeur brengt enkele laatste wijzigingen aan in het hulpprogramma en compileert opnieuw. De bestanden die zijn gewijzigd, moeten worden gekopieerd naar het ~/test/ana
directory uit het ~/work
directory. We kunnen dit doen door de -C
(vergelijk) optie. Als het bronbestand en het doelbestand hetzelfde zijn, wordt het bronbestand niet gekopieerd.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Door de bestanden in de doelmap op te sommen, kunnen we zien dat de bestandsgrootte van het ana
bestand is gewijzigd. Het is groter dan de ana.bak
het dossier. Het tijdstempel op ana
is ook veranderd. Deze wijzigingen zijn omdat de nieuwe versie van het bestand hier is gekopieerd.
ls -l
De bestandsgrootte en het tijdstempel van het Words.db
bestand zijn niet gewijzigd. Er zijn geen wijzigingen aangebracht in het Words.db
bestand, dus het werd niet gekopieerd. Op een project met veel bestanden is de -C
(vergelijk) optie kan veel tijd en hardeschijfverloop besparen, door alleen die bestanden te kopiëren die zijn gewijzigd.
De programmeur heeft opnieuw getest dat het ana
hulpprogramma blijft werken.
Het is tijd om te gebruiken install
om de bestanden naar het /usr/local/bin
directory. Dit maakt het nieuwe hulpprogramma beschikbaar voor alle gebruikers van deze Linux-computer. We weten dat /usr/local/bin
bestaat, dus we hoeven die map niet te maken. We kunnen een aangepaste versie van ons laatste commando gebruiken.
We hebben de doelmap gewijzigd in zijn /usr/local/bin
. We hebben de -C
(vergelijk) optie omdat er nog geen kopieën van deze bestanden in de doelmap staan, dus er is niets om mee te vergelijken. Evenzo is er niets om een back-up van te maken, dus we kunnen het -b
(backup) optie en de -S
(achtervoegsel) optie.
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
We kunnen vermelden dat de bestanden zijn aangekomen /usr/local/bin
:
ls -l
En als laatste test laten we de directory naar onze homedirectory wijzigen en kijken of we van daaruit ons nieuwe hulpprogramma kunnen aanroepen.
Merk op dat we het ana
commando met ./
wat betekent dat het wegrent /usr/local/bin
. Missie volbracht.
We zeiden dat install overtollige symbolentabellen en andere bagage uit het binaire bestand kan verwijderen om het in omvang te verkleinen. Laten we dat nu doen. Merk op dat de onderstaande opdracht geen Words.db bevat. Dit komt doordat Words.db een databasebestand is, geen binair uitvoerbaar bestand. Om het binaire bestand te kopiëren en te verkleinen ana
we kunnen het volgende commando gebruiken. We hebben de optie -s (verkleinen) toegevoegd met een kleine letter “s”. We hebben de optie -b (backup) en de optie -S (suffix) weer toegevoegd, met een hoofdletter “S.”
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
De bestanden in /usr/local/bin
stelt ons in staat om de grootte van de ana
bestand met zijn back-upversie. De ana
bestand is verkleind tot bijna 60% van de vorige grootte.
ls -l /usr/local/bin
Samengevat
De de install
commando is geschikt voor een mooi nichegebruik. Voor veel mensen zal het niet dag in dag uit, of mogelijk van maand tot maand, worden gebruikt. Ondanks dat, de install
command is een goed hulpmiddel om vertrouwd mee te zijn en om in je arsenaal aan trucs te hebben. Voor die gelegenheden dat u het nodig heeft, beloont het uw leercurve met verbeteringen in efficiëntie, eenvoud en gewoon minder toetsaanslagen.