Avslutning. Kapitel Komprimering av filer

Relevanta dokument
Kapitel 11. Program Att köra program Skript Interpreterande och kompilerande programspråk Att kompilera program

Kapitel 11. Program Skript Att köra program Interpreterande och kompilerande programspråk

Program. Kapitel make Program Interpreterande och kompilerande program

Kapitel 11. Program Skript Att köra program Interpreterande och kompilerande programspråk Att kompilera program

Kapitel 12. Mer om program Att rapportera buggar och problem make

Kapitel 10. Dokumentrepresentation Uppmärkt text HTML kommer från SGML

Open Source - Eller som vi säger, Fri programvara

Open Source - Eller som vi säger, Fri programvara

Handbok Ark. Matt Johnston Översättare: Stefan Asserhäll

Öppen/Fri programvara

Denna presentation är inte klar, kommentarer mottages tacksamt! CyberRymden

Handbok Simond. Peter H. Grasch

Open Source-licenser

Fria upphovsrättslicenser underlättar kunskapsdelning och lärande

Open Source - Utmaningar och fördelar

Kort om World Wide Web (webben)

2I1049 Föreläsning 9. Iterativ programutveckling. Iterativ programutveckling. Modularisering, återanvändning och JavaBeans

Open Source-licenser

Programvaror - Jo, tack, det vill vi ha...

Svenska Linuxföreningen. Fri programvara Mycket mer än gratis 1(36) Copyright 2005, 2006 Marcus Rejås

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

Installationsmanual OpenOffice 3.0

Programmering i C++ Kompilering från kommandoraden

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Svenska Linuxföreningen. Fri programvara Mycket mer än bara gratis 1(29)

Tanka program KAPITEL 7. Shareware och freeware. Shareware. Freeware

Handbok Spectacle. Boudhayan Gupta Boudhayan Gupta Översättare: Stefan Asserhäll

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Övning Installation av Gentoo och/eller Arch Linux

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Introduktion till programmering, hösten 2011

Laboration 10 - Eclipse

Calligra. En allmän inledning. Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll

Handbok Artikulate. Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll

Föreläsning 3. Programmering, C och programmeringsmiljö

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning (i) Peter Dalenius Institutionen för datavetenskap

Datorsystem och programmering

Föreläsning 3. Programmering, C och programmeringsmiljö

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning 1 Peter Dalenius Institutionen för datavetenskap

Open Source - Program och hur man väljer

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Administratörshandbok GCompris. Den här dokumentationen är konverterat från GCompris manualsida. Översättare: Stefan Asserhäll

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Introduktion till Unix och Linux

Operativsystem och användargränssnitt

Licenser - Jo, tack, men så få som möjligt

DDR PC SOFTWARE 2 RELEASENOTES VERSION 2.5. Swerob Service AB Global Robot Parts AB

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Objektorienterad programmering i Java I

Handbok Kfloppy diskettformaterare

Allmänt om programvaror och filer i Windows.

Instruktion för användande av Citrix MetaFrame

Inledande programmering med C# (1DV402) Introduktion till C#

Vilken version av Dreamweaver använder du?

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll

Webbservrar, severskript & webbproduktion

Tfn Telephone. Kontr Checked. Skapa PDF-filer i Windows

Instruktioner för att kunna programmera på skolans datorer

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Installation av. Vitec Mäklarsystem

Handbok KBackup. Martin Koller

Handbok Potatismannen. Éric Bischoff Paul E. Ahlquist, Jr. Eugene Trounev Granskare: Lauri Watts Översättare: Stefan Asserhäll

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Handbok KDE:s Menyeditor. Milos Prudek Anne-Marie Mahfouf Lauri Watts Översättare: Stefan Asserhäll

Handbok KSystemLog. Nicolas Ternisien

kommando -fl argument

Introduktion till Linux. TDDE23 Funktionell och imperativ programmering, del 1 Föreläsning 1 Peter Dalenius Institutionen för datavetenskap

UNIX. Laborations-PM Anders Egneus, Henrik Lindgren, 2004, Raphael Corsoski, Erik Eliasson, Christian von Schultz, 2008.

Instruktion för användande av Citrix MetaFrame

Handbok KsirK. Gael Kleag de Chalendar Nemanja Hirsl Översättare: Stefan Asserhäll

Installation av. Vitec Mäklarsystem Office

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

Tillämpad programmering

Föreläsning 2. Operativsystem och programmering

Handbok Dumpa skärmen

Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS Konsolfönstret

Kort-kort om utdelade användarkonton och datormiljön på NADA

Handbok Färgredigeraren. Artur Rataj Översättare: Stefan Asserhäll

Linux som utvecklingsmiljö

Innehåll. 1 Inledning 5. 2 Förinställning 6. 3 Anpassa användargränssnittet 7. 4 Anpassa interna inställningar 9. 5 Förbereda att bränna en skiva 10

Introduktion till git

Svenska Föreningen för Upphovsrätt 5 november Mikael Pawlo Något om öppen kod, öppen text och öppen musik

TDP003 Projekt: Egna datormiljön

Handbok Nepomuk-WebMiner. Jörg Ehrichs Översättare: Stefan Asserhäll

LABBINTRODUKTION. Laboranter: Kurs: - Sonny Johansson, Sigurd Israelsson. Utskriftsdatum:

Handbok Förstoringsglaset. Sarang Lakare Olaf Schmidt Översättare: Stefan Asserhäll

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Handbok Spectacle. Boudhayan Gupta Boudhayan Gupta Översättare: Stefan Asserhäll

Laboration 10 - NetBeans

Övningar för del I av kursen

BLI VÄN MED DIN DATOR ENHETER MAPPAR FILER

Installation av. Vitec Mäklarsystem

Handbok Kanagram. Danny Allen Översättare: Stefan Asserhäll

Beställning av Förlitandepart-certifikat Version

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Tema: Redigeraren. Fronter 91

Svenska Linuxföreningen. Fri programvara Mer än bara gratis 1(17) Copyright 2006 Marcus Rejås

Sun Java W1100z och W2100z arbetsstationer: Versionsinformation

Transkript:

Kapitel 12 Avslutning I detta sista kapitel tittar vi på hur man kan installera program själv. I samband med det finns det anledning att titta på komprimering av filer och på filarkiv (som kan vara användbart i andra sammanhang också). Det motiverar också en titt på fri programvara och licenser för sådana. 12.1 Komprimering av filer Om innehållet i en fil är repetitivt eller på andra sätt delvis redundant så går det att lagra samma information på mindre plats. I en vanlig textfil t. ex. så är en del ord och andra teckenföljder mycket vanligare än andra, och då kan man på olika smarta sätt se till att dessa vanliga teckenföljder lagras på mindre plats än en byte per tecken. Detta kallas att komprimera en fil. I GNU finns programmet gzip (GNU zip) för att komprimera. Filer som är komprimerade med gzip brukar ha filnamnsändelsen.gz och det normala sättet att köra gzip är med ett eller flera filnamn som argument varpå dessa filer ersätts med komprimerade versioner av samma filer. Med gunzip går man åt andra hållet. bar foo $ gzip foo bar foo.gz $ gunzip foo.gz bar foo Eftersom filnamn kan ha flera punkter är det bara att hänga på.gz på filnamnet även om det redan finns en punkt. Så den komprimerade versionen av ett C-program space.c blir space.c.gz osv. I en komprimerad fil används alla möjliga värden 0 255 och innehållet är en binärfil som inte kan läsas direkt av något program som inte känner till just detta komprimeringsformat. När man ska använda sig av innehållet i den komprimerade filen är det dock inte nödvändigt att återskapa originalfilen på disken igen, utan man kan ta fram innehållet med zcat. Kommandot zcat foo.gz tar fram det ursprungliga innehållet i filen foo och skickar vidare det till standard output. Textfiler innehåller mycket redundans och blir oftast ungefär hälften så stora av att komprimeras. Många format på binärfiler, som PDF och olika bildoch ljudfiler, är redan komprimerade på ett eller annat sätt, och blir därför knappast mindre av en ytterligare komprimering. compress och gzip: gzip är ett fall där GNU inte helt efterliknar Unix. Det normala komprimeringsprogrammet i Unix var nämligen ett program compress som komprimerar på ett annat sätt. För GNU kunde man dock inte lagligen skriva en ersättning av det programmet eftersom den komprimeringsalgoritm som användes var skyddad av ett patent sedan 1985. Istället fick man lov att använda en annan metod. Sedan 2003 har det patentet gått ut, så nu finns fria program som implementerar den gamla algoritmen, men gzip fortsätter att vara det vanligaste sättet att komprimera filer i GNU. 117

12. AVSLUTNING 12.2 Filarkiv I många fall är det praktiskt att skapa ett filarkiv, dvs. en fil som i sig innehåller en mängd andra filer. I Unix används ett program tar för att skapa sådana filarkiv och för att plocka ut filerna ur dem igen. 1 Ett nytt filarkiv kvack.tar som innehåller alla filer i katalogen kvack kan skapas med tar -cvf kvack.tar kvack/ (De ursprungliga filerna ligger kvar också.) Det går att lista en mängd filer och kataloger som ska in i arkivet istället för bara en enda katalog som i detta exempel. Om du istället har fått ett filarkiv spam.tar och ska ta fram alla filer därifrån så gör du tar -xvf spam.tar Det ingår inte någon komprimering i tarformatet, så en tar-fil tar upp ungefär lika mycket plats som alla de ingående filerna tillsammans. Det är därför mycket vanligt att man komprimerar såna här filarkiv dessutom, och därför känner även tar till komprimering så att man inte själv behöver anropa gzip/gunzip som ett eget steg. Här skapas direkt ett komprimerat filarkiv kvack.tar.gz istället: tar -cvzf kvack.tar.gz kvack Och här packar vi istället upp ett komprimerat filarkiv spam.tar.gz: tar -xvzf spam.tar.gz tar = tape archive: Den ursprungliga användningen av tar var att lagra en mängd filer på ett magnetband och därav kommer kommandots namn. Det är fortfarande vad tar försöker göra när man skapar ett arkiv om man inte anger ett filnamn där arkivet ska lagras. 1 Om man ska dela med sig av ett filarkiv till någon i MS Windows-världen kan det vara bättre att använda zip istället. Se dess man-sida! Det är alltså ett extra z till tar som gör skillnaden. Sådana komprimerade filarkiv som foo.tar.gz är ett vanligt sätt att sprida program på i Unix. Ofta så används ett filnamn som foo.tgz istället, med.tgz som synonym för.tar.gz. 12.2.1 Mer om tar Om du vill veta mer om hur man använder tar, t. ex. hur man plockar ut en enstaka fil istället för allihop eller hur man bara listar innehållet i ett arkiv, se dokumentationen i Info. Observera att när du väljer tar i huvudmenyn för Info så hamnar du rakt in i ett avsnitt»tar invocation«. Det kan vara värt att därifrån gå upp ett steg och välja»tutorial«istället. 12.3 Att installera program På en dator som du själv administrerar, t. ex. om du skulle köra GNU/Linux på en dator hemma, är det i allmänhet enklast att använda en särskild pakethanterare för att installera program. Programmet och alla dess filer hamnar på rätt ställe på disken direkt. Detta förutsätter att någon har gjort ett sådant paket som passar till ditt system, men är det ett välanvänt program så är det antagligen så. Men som vanlig användare får man oftast lov att installera program genom att kompilera dem själv, eftersom du inte har rättighet att skriva i de centrala kataloger där programmen är tänkta att läggas. (Så kan det också vara för att ingen har gjort nåt behändigt paket av just det programmet.) Programmen distribueras då i allmänhet i form av ett (komprimerat) filarkiv som källkoden finns i. Du börjar med att packa upp detta filarkiv och sen se efter om det bland filerna finns någon fil README med allmänna instruktioner eller kanske en fil INSTALL med instruktioner om hur du ska installera programmet. 12.3.1 Att installera med make Om den som skrev programmet inte har skrivit några instruktioner men det ligger en Makefile bland filerna så kan du anta att du ska använda make för att kompilera programmet. Tidigare har vi sett hur man med make filnamn kan skapa en viss fil, men det går även att definiera 118

Fri programvara regler för hur andra uppgifter ska utföras, så argumentet är inte alltid ett filnamn. Det normala är att man med make all eller bara make kompilerar programmet och att man sedan med make install installerar programmet på rätt plats i filsystemet.»rätt plats«är normalt en central plats i filsystemet där du som vanlig användare inte har skrivrättigheter, som t. ex. /usr/local/bin, så innan du gör detta så behöver du antagligen ändra nåt i Makefile för att tala om var den ska installera program istället. Om du tittar i början av den filen så står det kanske några kommentarer där om vad du behöver ändra. 12.3.2 Installering av GNU-program I GNU har det utarbetats en standard för hur installationen går till, och då behöver du inte gå in och ändra i Makefile. I labben kommer du att pröva på att installera ett sådant program. Med distributionen av programmet följer det med ett särskilt litet program configure som skapar en fil Makefile som är särskilt anpassad för det system man kör på. Efter det kan man kompilera programmet med make och sedan installera det med make install. Bland uppgifterna för configure hör att anpassa installationen så att den funkar på just den variant av Unix eller GNU som det kör på just nu. Det gör en mängd tester av vad som finns installerat och inte och hur saker fungerar som fungerar lite olika i olika Unix-varianter. I anropet till configure kan man dessutom tala om olika saker om hur detta program ska kompileras och installeras just denna gång i form av långa väljare. En standardiserad sådan som man har användning för om man inte installerar program centralt på systemet är --prefix=katalognamn för att tala om var programmet och alla dess filer ska installeras. Normalt läggs program i /usr/local/bin/, man-sidor i /usr/local/man/ och diverse andra filer i några andra underkataloger till /usr/local. Med --prefix ersätter man detta med något annat, så med t. ex. --prefix=~/pgm installeras själva programmen i ~/pgm/bin/ osv. Man kan förstås använda en annan katalog under ens hemkatalog, eller hemkatalogen själv. Med --prefix=~ hamnar själva programmen i ~/bin osv. 12.4 Fri programvara Datorprogram skyddas av upphovsrätt, precis som litterära och konstnärliga verk. Inga som har skrivit program för moderna datorer har varit döda länge nog för att upphovsrätten ska ha gått ut för deras verk, så som t. ex. skett för Strindbergs böcker. Trots det finns det en mängd program som det står en fritt att använda, kopiera och sprida, oftast eftersom programmens författare uttryckligen givit en tillstånd till detta. Sådant sker i form av en licens där upprättsinnehavarna talar om vad de tillåter. Så skedde t. ex. med de ändringar och tillägg till Unix som skrevs på Berkeley för BSD (se avsnitt 0.2). När det senare utvecklades en rörelse som aktivt förespråkande fri programvara listade man där uttryckligen vilka friheter man menade att ett programs användare skulle ha för att ett program skulle räknas som fri programvara (se s.5). 12.4.1»Copyleft«och GPL Skrivandet av operativsystemet GNU påbörjades av Richard Stallman av ideologiska skäl. Han och de som förenade sig med honom ville att alla program skulle vara fria och såg ett fritt operativsystem som det naturliga första steget till detta. Man ville inte använda en lika tillåtande licens som t. ex. BSD gjorde. Skälet var att många gjorde modifierade versioner av sådan kod men spred dessa modifierade versioner som icke-fria program. Så var det i de olika kommersiella Unix-versioner som uppstått vid denna tid som ofta hade delvis utgått från BSD-kod men lagt till sina egna förbättringar till den. Likadant var det med fönstersystemet X från MIT som spreds som fri programvara med en liknande licens. Många av de olika Unix-versionerna hade lagt till sina egna förbättringar av X, men dessa förbättringar kom bara just det företagets kunder till godo och kunde inte tas över av de andra företagen också. Den som använde en arbetsstation med Unix på 80-talet hade oftast inte möjlighet att titta i källkoden till sådana program som ursprungligen skrivits som fri programvara. För att de program som skrevs för GNU skulle fortsätta att vara fria för alla som använde dessa program skrev man en ny licens, GNU GPL (General Public License), där en av de viktigaste nyheterna var något som man kallade för»copyleft«. Det innebär 119

12. AVSLUTNING att man inte tillåter att någon sprider modifierade versioner av programmet om inte dessa modifierade versioner också sprids med samma villkor. Den som delar med sig av program enligt GPL till en grupp människor försäkrar alltså inte bara att programmet är fritt för den gruppen utan även för dem som den gruppen i sin tur sprider vidare programmet till. Med tiden har det skapats fler licenser för fri programvara med lite olika egenskaper, men GPL är den klart vanligaste, inte bara för sådant som skrivits direkt för GNU, utan även för t. ex. kärnan Linux och webbläsaren Firefox. Från och med november 2006 har Sun börjat släppa Java under GPL. Licenser för icke-fria program är i allmänhet avtal eller överenskommelser mellan två parter. För att få komma åt programmet så förbinder man sig till att uppfylla vissa villkor. En licens som GNU GPL fungerar inte så, utan är helt enkelriktad. Det finns ingenting som du behöver gå med på för att använda ett GPL:at program. Allt licensen gör är att ge dig rätt att göra vissa saker som annars inte hade varit tillåtet på grund av upphovsrätten. musik, filmer osv. som sprids fritt med skaparnas tillåtelse. 12.4.2 Öppen källkod = Open source Medan rörelsen för fri programvara har ett ideologiskt ursprung och gärna talar om»frihet«finns det andra som tonar ner sådant och istället betonar tekniska frågor, som att en ökad tillgänglighet av källkoden till program kan leda till förbättrade program genom att fler har möjlighet att hitta fel eller bidra med fixar. I sådana sammanhang talar man oftast om öppen källkod istället, och ser det som ett medel till att nå bättre resultat snarare än som ett mål i sig, även om vilka program som är fri programvara och vilka som är öppen källkod i praktiken oftast räknas nästan likadant. 12.4.3 Annat än program Programförfattares fria spridande av sina program har varit en inspiration även för fritt spridande av andra upphovsrättsligt skyddade verk. Ett exempel är ett stort samarbetsprojekt som encyklopedin Wikipedia som sprids enligt GNU Free Documentation License 2, och det finns allt fler texter, bilder, 2 GNU FDL är en licens som ursprungligen skrevs för fritt spridande av teknisk dokumentation, men som går att använda till andra texter också. 120

Laboration 12: Installera program Hello! Det klassiska första testprogrammet i ett programspråk är ofta ett program som bara skriver ut»hello, world!«. I Python skulle t. ex. ett sådant program lyda bara Uppgift 12.6 Vad händer om du kör det med väljaren -t och hur beskrivs denna väljare om du kör programmet med väljaren --help för att få hjälp om programmet? print "Hello, world!" I GNU har man skrivit ett extra avancerat program som fortfarande i princip bara skriver ut»hello, world!«. Meningen med detta är bland annat att ge ett exempel på hur en ett helt program paketeras och kan installeras. Sök efter»gnu hello«på webben. Hitta var du kan ladda ner källkoden till detta. Välj den senaste versionen och ett gzippat tar-arkiv av denna. Uppgift 12.1 Vad heter den fil som du hämtar? Gå till en katalog där du vill packa upp programmet och packa upp den där. Uppgift 12.2 Vad gav du för kommando för att packa upp arkivet? Titta över vad det finns för filer som du nu fått. Uppgift 12.3 Vilken licens sprids GNU Hello med? Uppgift 12.4 I vilken fil finns det instruktioner om hur programmet ska installeras? Installera programmet någonstans under din GDB-katalog med lämpliga kommandon. Uppgift 12.5 Vilka kommandon gav du? Testa att köra programmet. 121