install
er en allsidig filkopieringskommando tilgjengelig i Linux og macOS. Den er spesielt nyttig for erfarne brukere som ønsker å strømlinjeforme sine oppgaver. Denne artikkelen utforsker hvordan du kan utnytte denne kommandoen for å jobbe mer effektivt.
Men vent, er dette ikke for å installere programvare?
Kommandoen install
har et av de mest misvisende navnene blant Linux-kommandoer. Den brukes faktisk ikke til å installere programvare. For å installere en programvarepakke fra kommandolinjen i Ubuntu eller andre Debian-baserte distribusjoner, må du bruke apt-get
. På andre Linux-distribusjoner, bør du bruke pakkebehandleren som følger med distribusjonen, som for eksempel dnf
på Fedora eller zypper
på openSUSE.
Hva gjør install
egentlig?
I hovedsak kombinerer install
funksjoner fra flere andre kommandoer, inkludert cp
(for kopiering), chown
(for å endre eierskap), chmod
(for å endre filrettigheter), mkdir
(for å lage mapper), og strip
(for å fjerne symboler). Dette gir deg muligheten til å utføre operasjoner fra alle disse kommandoene i en enkelt operasjon.
Kommandoen install
kan:
- Kopiere filer, akkurat som
cp
. - Bestemme om eksisterende filer skal overskrives.
- Opprette målmappen hvis den ikke finnes, som med
mkdir
. - Angi filrettigheter, på samme måte som
chmod
. - Endre eier av filene, som med
chown
. - Fjerne unødvendig informasjon fra kjørbar kode, som
strip
gjør.
Til tross for sin omfattende funksjonalitet, har ikke install
-kommandoen et overveldende antall alternativer å forholde seg til.
Når bør du bruke denne kommandoen?
Du vil sannsynligvis ikke bruke install
hver eneste dag. Den er nyttig, men mest i spesifikke situasjoner. Et godt eksempel er innen programvareutvikling. Tenk deg at du utvikler et nytt verktøy. Du trenger å teste det utenfor utviklingsmiljøet. Dette krever at du kopierer de nye programfilene til en testmappe. Det kan også hende at testmappen må opprettes, og du må sette riktige tillatelser og eierskap for filene.
Siden utvikling ofte er en gjentakende prosess, kan det hende du må utføre disse handlingene mange ganger. Kommandoen install
forenkler denne prosessen betydelig. Når det nye verktøyet er klart for distribusjon, kan du bruke install
til å kopiere det med korrekte tillatelser til det endelige arbeidsområdet.
Et praktisk eksempel
La oss si en utvikler arbeider på et nytt verktøy kalt ana
. Verktøyet består av en kjørbar binærfil og en database. Etter testing må disse filene kopieres til /usr/local/bin
for å gjøre dem tilgjengelige for alle brukere. I eksemplet må du erstatte filnavn og mapper med de som er relevante for din datamaskin.
Før utgivelse blir verktøyet testet i en mappe ~/test/ana
. Medlemmer av gruppen geek
skal ha lese- og utførelsesrettigheter, og andre brukere skal også ha leserettigheter. install
bruker den samme numeriske representasjonen for rettigheter som chmod
. Utvikleren bestemmer at rettighetene skal være:
- Eier: Lese, skrive og utføre.
- Gruppe: Lese og utføre.
- Andre: Kun utføre.
Hvordan bruker vi install kommandoen?
Utviklerens arbeidsmappe er ~/work
. Han har skrevet programmet, kompilert det og skapt en binærfil med navnet ana
. Han har også opprettet databasefilen Words.db
. Begge filene er klare for testing. La oss se på dem:
ls -l ana Words.db
Verktøyet ana
genererer anagrammer fra en gitt setning. En enkel test utføres:
Utvikleren kaller ana
med uttrykket «kjeks», og alt fungerer som forventet. Nå skal de to filene kopieres til ~/test/ana
for å teste verktøyet utenfor utviklingsmiljøet. Han bruker følgende kommando:
install -D -v ana Words.db -t ~/test/ana
De brukte alternativene er:
-D
: Opprett mapper, inkludert overordnede mapper, om nødvendig.-v
: Utførlig modus som lister opp opprettede mapper og kopierte filer.-t
: Spesifiserer målmappen.
Vi ser at install
oppretter mappen ~/test
, og deretter ~/test/ana
. Deretter listes filene opp mens de kopieres til målmappen.
En liste over filene i ~/test/ana
bekrefter at de er kopiert korrekt:
ls -l
Neste trinn er å teste ana
ved å kjøre det i ~/test/ana
.
Verktøyet fungerer som forventet. Imidlertid er ikke tillatelsene korrekte. Gruppen geek
skal ha lese- og utførelsesrettigheter, og andre brukere skal kun ha utførelsesrettigheter.
Dette løses enkelt med følgende kommando. Merk at sudo
brukes for å kjøre kommandoen med administratorrettigheter. Alternativene -o
og -g
krever dette.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Alternativene som er brukt er:
-b
(backup): Lager sikkerhetskopier før filer overskrives.-S
(suffiks): Definerer suffikset for sikkerhetskopifilene, her «.bak».-o
(eier): Spesifiserer at filene skal eies av brukeren «dave».-g
(gruppe): Angir at gruppen «geek» skal være eiergruppen for filene.-m
(modus): Setter filrettighetene med numerisk syntaks som ichmod
.
Vi trenger ikke lenger -D
(opprett mapper), fordi testmappen allerede finnes. Vi har også utelatt -v
(utskrift). En liste over filene i ~/test/ana
viser nå filinformasjonen:
ls -l
Dette bekrefter at alle kravene er oppfylt:
- Filene er kopiert til testmappen.
- Tillatelsene er satt korrekt.
- «dave» er eieren av filene.
- Gruppen «geek» er eiergruppen.
- Sikkerhetskopier av filene er laget, kalt
ana.bak
ogWords.db.bak
.
Alt dette oppnås med én enkelt kommando.
Utvikleren gjør noen endringer i verktøyet og kompilerer på nytt. De endrede filene må kopieres fra ~/work
til ~/test/ana
. Dette gjøres med alternativet -C
(sammenlign). Hvis kildefilen og målfilen er identiske, kopieres ikke kildefilen.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
En liste av filene i målmappen viser at størrelsen på ana
-filen har endret seg. Den er større enn ana.bak
. Tidsstempelet på ana
er også endret, som viser at den nye versjonen er kopiert.
ls -l
Filstørrelsen og tidsstempelet på Words.db
er ikke endret. Det er fordi filen ikke er endret, og derfor ikke kopiert. Med mange filer kan -C
-alternativet spare mye tid ved å kun kopiere de filene som er endret.
Utvikleren har igjen testet ana
og funnet at det fungerer som det skal.
Nå er tiden inne for å bruke install
for å kopiere filene til /usr/local/bin
, for å gjøre verktøyet tilgjengelig for alle brukere. Mappen finnes allerede, så vi trenger ikke å opprette den. Vi kan bruke en modifisert versjon av den siste kommandoen.
Vi har endret målmappen til /usr/local/bin
. Vi har fjernet -C
fordi det ikke er noen kopier av filene der ennå, og dermed ingenting å sammenligne med. Vi har også fjernet -b
og -S
siden det ikke er noe å sikkerhetskopiere.
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Vi lister opp filene for å se at de finnes i /usr/local/bin
:
ls -l
Som en siste test, bytter vi til hjemmemappen og tester om vi kan kjøre det nye verktøyet derfra.
Merk at vi ikke trenger å bruke ./
foran ana
, noe som betyr at den kjøres fra /usr/local/bin
. Oppdrag utført.
Vi nevnte at install
kan fjerne unødvendige symboltabeller og annet fra binærfiler for å redusere størrelsen. La oss gjøre det. Merk at kommandoen nedenfor ikke inkluderer Words.db
. Det er fordi Words.db
er en databasefil, ikke en binær kjørbar fil. For å kopiere og redusere størrelsen på den binære filen ana
kan vi bruke denne kommandoen. Vi har lagt til -s
(strip) og -b
(backup) og -S
(suffiks).
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
Ved å liste filene i /usr/local/bin
kan vi sammenligne størrelsen på ana
med sikkerhetskopien. ana
er nå redusert til ca. 60% av den opprinnelige størrelsen.
ls -l /usr/local/bin
Oppsummering
Kommandoen install
dekker et nisjebehov. For mange vil den ikke være et daglig verktøy, eller kanskje brukes fra måned til måned. Likevel er install
nyttig å kjenne til. De gangene du trenger det, vil du sette pris på hvor mye tid og innsats du sparer.