Logo Linux voor newbies picture tux
hrule
Where do you really want to govorige   home  volgende

 
Valid HTML 4.0!
 

hrule
Site-layout
Handleiding 2
- voorbereiding
- installeren
- Eerste kennismaking
- Software installeren
- Werken in de console
- Je eigen desktop
- Beveiliging
- Configuratie
- Ander leesvoer
Geef je mening
Geef je mening
Help mee

Software installeren


Er zijn in principe twee manieren om pakketten te installeren, voor jou distro gecompileerde binary's en source-code pakketten.
Om met de eerste te beginnen, dit zijn pakketten die door de distributeur of anderen zijn gecompileerd en samengesteld volgens de regels van die distro.
bv. foo.deb voor Debian, foo.rpm voor rpm gebaseerde distro's (Redhat, Suse, Mandrake enz)
De software die bij je Linux distro is geleverd valt hier natuurlijk ook onder.

Deze software dient dmv de bijbehorende 'package manager' geinstaleerd te worden.
Ook het verwijderen hiervan moet met behulp van deze manager gebeuren, als je zomaar dingen gaat verwijderen heb je grote kans dat je 'package manager' onbruikbaar wordt.
Deze managers werken namelijk met bestanden waarin wordt bijgehouden waar wat staat.

Het installeren van software kan alleen door root gedaan worden omdat een normale gebruiker alleen naar zijn eigen directory kan schrijven.
Ook hier geld weer, wordt root dmv su, installeer, exit naar gewone gebruiker.
Voer nooit een programma uit als root als het ook als gebruiker kan.


Een belangrijk aspect van software installeren is wel dat het volgens bepaalde regels gebeurt.
Je distro zet bijvoorbeeld alle uitvoerbare bestanden in /usr/bin, de configuratie bestanden in /etc, de libraries in /usr/lib enz.
Het is dan een goede gewoonte om software die je zelf compileert en installeert, dus zonder de 'package manager', in bijvoorbeeld /usr/local/bin, /usr/local/etc, /usr/local/lib enz. te zetten.
Op deze manier is het duidelijk wat je met en zonder de manager geinstaleerd heb, en dus ook kan verwijderen met of zonder de manager.
Vooral als je veel,of vaak software installeert en verwijdert is het verstandigst om een scheiding aan te brengen in de software die bij je distro hoort en welke niet.
Hoe je deze scheiding aanbrengt is aan jou, maar in principe installeren source-code pakketten zich standaard in /usr/local/...., dus zou dit een aardige keuze zijn als je distro deze directory niet gebruikt.


Installatie van binary's


Installeren of verwijderen van distro afhankelijke pakketten gebeurt altijd met de bijbehorende package manager.
In Debian (een van de manieren) apt-get install foo.deb of dselect (installeren)
apt-get remove foo.deb (verwijderen)
In Suse met rpm -i foo.rpm of YAST
Zie ook de manpages voor deze managers man apt-get, man rpm.

Het grote voordeel van deze managers is dat zij ook gelijk de dependencies oplossen of vermelden (afhankelijk van de distro)
Let wel op bij het verwijderen van software met deze managers, als je bijvoorbeeld een librarie wilt verwijderen die door meerderen programma's wordt gebruikt zal de manager ook deze anderen programma's willen verwijderen (deze zullen na verwijdering van de librarie niet meer werken), er wordt uiteraard wel toestemming van de gebruiker gevraagd.
Hier geld dus ook, bij twijfel niet doen! Je systeem kan onbruikbaar worden.


Source-code compileren en installeren


Een kernel compileren wordt hier niet behandelt, dat is een verhaal apart.

zie Handleiding 2: Configuratie

Software die je niet bij een van de distro's vandaan haalt moet altijd met enige argwaan benadert worden.
Hoewel trojans en virussen een uitzondering zijn in Linux, is het niet onmogelijk.

Tip: Een programma dat alleen als root uitgevoerd kan worden, moet je gelijk verwijderen, wil je toch dit programma hebben haal het dan bij je distro vandaan.
Als ze het niet hebben zal daar wel een reden voor zijn, laat je in ieder geval niet foppen door
'only root can run this program', mededelingen.

Het enigste waarvoor je root moet worden is om de boel te installeren, verder niks.

Programma's die je overal van internet kunt halen zijn meestal niet gecompileerd en bestaan uit een aantal source-code bestanden die nog gecompileerd moeten worden.
De reden hiervan is dat deze source-code op verschillende *nix systemen gecompileerd kan worden, en dat de maker/verspreider van deze programma's dat niet hoeft of kan doen.
Er zijn namelijk tientallen soorten Linux en UNIX en het zou onmogelijk zijn voor iemand om al deze versies op een pc te zetten alleen om een programma te compileren, dus dat wordt aan de gebruiker zelf overgelaten.
Ook is het hierdoor mogelijk bepaalde mogelijkheden van een programma eruit te laten. Als je bijv geen netwerk hebt, en een programma heeft een netwerk ondersteuning zou je die er uit kunnen laten, waardoor een programma kleiner wordt en vaak wat sneller.
(het verhaal van 'hoe minder er op zit , hoe minder er fout kan gaan')
Een andere reden is dat de meest gebruikte copyright je verplicht om de source-code mee te leveren of beschikbaar te stellen.


Hoe gaan we compileren?

Wat hebben we nodig?, ook wel dependencies genoemd.
Een compiler uiteraard, in Linux is dit gcc
Diversen ,zogenaamde 'developer packages', dit zijn packages waarvan de naam meestal op '-dev' eindigt. Bijv imlib-dev, gnome-lib-dev enz.
Waarschijnlijk extra programma's zoals spellingcontrole, grafische programma's enz.
De reden dat er vaak andere programma's nodig zijn is dat, in tegenstelling tot Windows, in Linux men niet twee keer het wiel hoeft uit te vinden. Met andere woorden als er een bijzonder goede spellingcontrole is, iedereen mag alles vrij van copyright gebruiken, dan ga je voor je tekstverwerker niet weer opnieuw een spellingcontrole zitten bedenken.

Hoe vinden we deze dependencies?
Source-code packages zijn gecomprimeerd en de naam eindigt derhalve op .tgz of .tar.gz.
Na het uitpakken van het package met tar -xvvzf foo.tar.gz (zie ook man tar), heb je een directory met de naam van het programma, in deze dir staan oa bestanden met de namen README en INSTALL.
In een van deze bestanden, meestal INSTALL, staan de dependencies met een beschrijving van hoe het programma te compileren, en evt mogelijkheden om met verschillende opties te compileren.
Het is belangrijk om deze bestanden en evt andere text bestanden te lezen aangezien hier door de maker van het programma allerlei meer en minder belangrijke zaken over het programma worden uitgelegd.

Het eigenlijke compileren in een notendop voor negen van de tien programma's:
($ is de prompt voor de gewone gebruiker,# is de root prompt, deze moeten dus niet ingetikt worden.)

$cd /home/naam van de directory van het programma
Ga naar de directory van de source-code
$./configure
Voer het programma configure uit. Dit programma controleert allerlei zaken en schrijft de makefile.
$make
Compileer met gegevens van de makefile
$su
Wordt root gebruiker.
#make install
Installeer de programma bestanddelen.
#exit
Log uit als root.

Iedere source code wordt gecompileerd met gegevens uit de makefile. Dit is een bestand met allerlei opties voor de compiler.
Het enigste wat je in het makefile zou willen veranderen is de 'prefix'. Dit is een variabele die min of meer standaard gebruikt wordt om in de makefile het pad (path) mee aan te geven waar de bestanden na compileren geinstaleerd worden.
Standaard is dit meestal /usr/local, maar dit kun je veranderen in een pad die je gekozen heb om je 'distro vreemde' software te installeren.
Wat belangrijk is om in de gaten te houden is dat in het voorbeeld hierboven, de makefile wordt gemaakt door configure, dus evt veranderingen in de makefile moeten aan configure meegegeven worden. (bijv $./configure --prefix=/opt/shilly)
Het komt ook voor dat er geen configure bij zit, het verhaal blijft hetzelfde


Het compileren stopt met een fout melding
Het kan gebeuren dat het compileren niet lukt, of dat het programma configure stopt met een fout melding.
Dit heeft bijna altijd te maken met ontbrekende dependencies.
Het is dan zaak om ten eerste te controleren of aan alle eisen die in de README of INSTALL genoemd worden is voldaan, ook de versie nummers van de programma's of libraries.
Het kan ook gebeuren dat er header files ontbreken. Dit zijn bestanden waar zaken over de geinstaleerde libraries/programma's, of configuraties in vermeld worden.
Deze meldingen kun je herkennen aan fout meldingen van de compiler, waarin geklaagd wordt over ontbrekende zaken die eindigen met .h.
Dit zijn zeer lastige problemen aangezien het meestal libraries betreffen die als, standaard geinstaleerd, worden beschouwd door de maker van het programma. Ook is het vaak niet duidelijk waar de header deel van uitmaakt
Wat wel eens werkt is om de naam van de header file op internet te zoeken, meestal krijg je dan allerlei pagina's die over de librarie gaan waar de header deel van uitmaakt.


Tips voor compileren

  • Lees de text bestanden die bij de source-code zitten.
  • Controleer of je de dependencies inderdaad geinstaleerd heb (met de package manager, bash commando find,locate of whereis -b)
  • Controleer of de versie nummers kloppen van de dependencies (hoger is goed, lager niet)
  • Het hele verhaal wat over het scherm vliegt bij ./configure staat in configure.log
  • Als configure is gestopt met een fout melding, en je heb de dependencie opgelost, verwijder dan configure.cache. Dan ben je er zeker van dat vorige fouten niet opnieuw voorkomen.
  • Als je voor dat ene programma je halve systeem moet veranderen, stel jezelf dan de vraag of je dat programma wel wil hebben. Het kan wel eens zo zijn dat je je hele systeem moet upgraden. Dit kan vooral gebeuren bij 'bleeding edge' software. (nieuwste van het nieuwste)
  • Als je bepaalde veranderingen bij het compileren wilt maken probeer dit eerst via configure. Zie de tekst bestanden bij de source-code, configure heeft namelijk veel opties.

Copyright (c) 2001 by Stas Z.


hrule
Mail je reaktie
Zoals alles in GNU/Linux is deze site ook konstant in ontwikkeling en ben ik voor een deel
afhankelijk van reakties,vragen en meningen van anderen.
Heb je vragen, opmerkingen, aanvullingen of mis je nog dingen, laat het me weten.
[email protected]
Help mee aan deze site
Heb je zelf ideeen voor een artikel, interressante nieuwsberichten (liefst in het nederlands of
vertaald) , Microsoft humor, of andere Linux zaken voor newbies? Laat van je horen,
maken we er een echte Linux site van.
[email protected]
Spam, flames of scheldpartijen kan je mailen naar [email protected]
top
About this sitepicture: family values©Copyright
Hosted by www.Geocities.ws

1