PDA

View Full Version : Vraag: wat gebeurt er eigenlijk bij het installeren van software?



hws38
16-Sep-2014, 07:18
Het hindert me dat ik al heel vaak pakketten - meest updates maar ook applicaties - heb geïnstalleerd (of beter: laten installeren) terwijl ik niet begrijp of zelfs maar weet wat dat inhoudt.
Zou iemand me dat kunnen uitleggen?
Alvast dank!

hcvv
16-Sep-2014, 08:25
Ik zal het proberen.

Het woord "installeren" is zoals zo vaak een vage aanduiding. Ik neem even aan dat je bedoelt met YaST > Software > Software Management (of met zypper) De meest ruime interpretatie..

Een pakket bestaat uit een combinatie van bestanden: uitvoerbare bestanden (de programma's), configuratie bestanden (die je dus later kunt aanpassen), bestanden met dosumentatie (bijv. de beroemde man pagina's), als het om een GUI programma gaat ook plaatjes met iconen, enz, enz.
ASls je een voorbeeld wilt zien: YaST > Software > Software management. Kies een geïnstalleerd pakket en klik dan rechtsonder op Bestandslijst. Dan zie je alle bestanden die een pakket op je systeem heeft neergezet

Verder zijn er aanwijzingen hoe en waar die bestanden neer te zetten. En scripts die voor resp. na de installatie moeten worden uitgevoerd. Zo wordt bij GUI programma's bijvoorbeeld vaak dingen aan het hoofdmenu van de desktop toegevoegd zodat je een programma ook vanaf het menu kunt opstarten. Er zijn ook aanwijzingen over benodigde andere pakketten (dependencies).

Dat alles wordt verzameld in één bestand een RPM bestand.

Het installeren bestaat dus uit het eerst downloaden van de RPM file. We nemen even aan dat alle dependecies zijn opgelost. Dan wordt de RPM file gedownload. Dan wordt de RPM file "geïnstalleerd". Dat is dus een engere interpretatie van het woord installeren. Je kunt een RPM file, die je al hebt ook direct met zypper/YaST installeren. Je kunt dat ook met het programma rpm.

Je begrijpt wat dan gebeurt. Alles op zijn plek.

Ik ga nu eerst eten en hardlopen. Vragen? stel ze.

Benmh
16-Sep-2014, 08:36
Poeh, dat is even een goede vraag. Sta ik feitelijk ook nooit bij stil.
Moet ik even bij stil gaan staan en nadenken.


Installatie van pakketten en upgrades is mij geleerd als zijnde het fine tunen van een OS en de daarom heen geinstalleerde aansturings processen voor diverse vormen van hard- software en automatische aangestuurde processen binnen in een systeem van een OS.
Een versie update van een stukje software zorgt er alleen maar voor dat nieuwere toepassingen geintregeerd kunnen worden binnen het besturingssysteem. Volgens een logisch proces worden al deze pakketjes ingepast in de besturing vanuit het OS en de oudere pakketten worden vervangen (upgrade) of gedeeltelijk aangepast ( update).

Maar wat er nu werkelijk gaande is, daar zou je eigenlijk Henk (HCVV) voor moeten hebben.


OK Henk was er al.

hws38
16-Sep-2014, 23:32
Dank, @hccv en @benmh voor de snelle reacties. Zoals gebruikelijk triggeren die weer nieuwe gedachten die vast tot nieuwe vragen condenseren. Die komen niet eerder dan vanmiddag, vanwege andere bezigheden.

hws38
17-Sep-2014, 06:40
@hccv: inderdaad bedoelde ik niet in de eerste plaats te vragen naar het binnenhalen van een rpm-pakket maar vooral wat er daarna en daarnaast moet gebeuren om een toepassing gebruiksklaar te maken. Ik kan wel een paar dingen verzinnen:
- Wegzetten op een plek in de boomstructuur waar "anderen" het verwachten.
- Er voor zorgen dat de toepassing de weg gewezen krijgt naar de benodigde (systeem)pakketten/bibliotheken. (Ik vraag nog maar even niet naar eventuele versie problemen).
- Voor sommige toepassingen zal de desktopomgeving moeten worden geïnformeerd.
er is vast veel meer, vooral als het gaat om het installeren van een nieuwe kernel (maar dat is vermoedelijk een geval apart).

hcvv
17-Sep-2014, 07:35
De meeste van deze zaken zijn gedefinieëerd in afspraken. Bijvoorbeeld:
. De plekken waar binaries, config files, etc. naar toe gaan in: http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
. Voor het vinden van niet staties gelinkte library routines zijn er pad variabelen zoals PATH er is voor het vinden van executables.
. Desktop omgevingen proberen te standaardiseren via http://en.wikipedia.org/wiki/Freedesktop.org.

Zie ook: http://en.wikipedia.org/wiki/Linux_Standard_Base

Daar zul je allemaal enig verstand van moeten hebben als je een software product wilt maken voor algemeen gebruik.

Bovendien is dit logischerwijs een bron van onenigheden (zei ik: ruzies?).

Knurpht
18-Sep-2014, 12:18
Een rpm bevat een "spec" bestand. Daarin kun je met enige moeite zien wat de rpm precies doet. Hieronder een voorbeeld voor het pakket unarj dat ik ooit 's op verzoek gemaakt heb, niet gehinderd door enige kennis van zaken: In vet rood wat commentaar erbij.


#
# spec file for package unarj (Version 2.65)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.


# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


# norootforbuild




Name: unarj
Url: http://www.arjsoftware.com
License: Use, modification, copying, distribution permitted. Rename derived versions
Group: Productivity/Archiving/Compression
AutoReqProv: on
Version: 2.65
Release: 278
Summary: Pack Program
Source: %{name}-%{version}.tar.bz2 de tarball met de broncode waarvan het pakket unarj gebouwd moet worden
Patch0: %{name}-%{version}-time.diff wat patches die op de broncode losgelaten moeten worden vóór het bouwen
Patch1: %{name}-%{version}-overflow.diff
Patch2: %{name}-%{version}-path.diff
Patch3: %{name}-%{version}-notice.diff
Patch4: %{name}-%{version}-strip.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build er wordt gebouwd in deze map, in dit geval unarj-2.65-build


%description
Unarj allows for unpacking of .arj files, which are widely spread in
the DOS world. It is included for compatibility reasons, to be able to
extract packages from DOS. It should not be used for compressing
packages under Linux. Use gzip, which is the standard, instead.






Authors:
--------
Robert Jung <robjung@world.std.com>


%prep de broncode wordt klaargezet
%setup -q
%patch0 gepatched
%patch1
%patch2
%patch3
%patch4


%build
make CFLAGS="$RPM_OPT_FLAGS -Wall -ansi -pedantic -DUNIX -fstack-protector" gecompileerd


%install
install -d -m755 $RPM_BUILD_ROOT%{_bindir} geïnstalleerd in de buildroot, zeg maar de root van het pakket. Als een bestand in /usr/bin moet komen, dan bevat het pakket hier een map /usr/bin met daarin het programma.
install -m755 unarj $RPM_BUILD_ROOT%{_bindir}het programma wordt in de map gezet


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root) rechten worden bepaald.
%doc *.txt unarj.lsm
%{_bindir}/unarj als het pakket geïnstalleerd wordt moet unarj dus naar de "bindir" meestal /usr/bin


%changelog
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Fri Jan 20 2006 schwab@suse.de
- Don't strip binaries.
* Thu Jan 12 2006 lmichnovic@suse.cz
- added -fstack-protector into CFLAGS
* Thu Sep 29 2005 dmueller@suse.de
- add norootforbuild
* Mon Sep 12 2005 lmichnovic@suse.cz
- notice changed to polite version (#63553)
* Fri Nov 26 2004 mjancar@suse.cz
- inform about our fixes in the printed notice (#48553)
* Fri Nov 12 2004 mjancar@suse.cz
- fix buffer overflow and tree traversal (#47184)
* Tue Jun 10 2003 mjancar@suse.cz
- update to 2.65
* Fixed table boundaries.
* Added additional header data checks.
* Added chapter and encryption information.
- use $RPM_OPT_FLAGS
- kill allready applied patches
* Wed Oct 02 2002 jderfina@suse.cz
- Added subdirectory creation for the x command.
- Fixed wrong time handling when daylight saving time.
- Fixed date handling for year 2000 (it is leap year).
* Fri May 26 2000 bubnikv@suse.cz
- sorted
* Fri Mar 24 2000 bubnikv@suse.cz
- added buildroot
* Fri Oct 22 1999 freitag@suse.de
- update to verison 2.43
* Mon Sep 13 1999 bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Thu Jan 02 1997 rj@suse.de
- new package

Knurpht
18-Sep-2014, 12:22
Nog even apart erachteraan: Vaak zit er veel meer in een pakket. Denk aan eigen ikoontjes, documentatie, standaard configuratiebestanden etc.
Je kunt in Yast - Software - Softwarebeheer ook de inhoud van geïnstalleerde pakketten bekijken. Bij sommige zul je maar één bestandje zien, maar het kunnen er ook duizenden zijn (bijv. de kernel). Ga er maar vanuit dat alles wat in één pakket zit aan bestanden elkaar echt bitter nodig heeft.

hws38
18-Sep-2014, 13:23
@hccv: dank voor de verwijzingen: heel leerzaam. Nog even voor alle duidelijkheid: ik heb geen plan (zelfs geen aanvechting) om iets installeerbaars in elkaar te knutselen maar ik ben alleen maar benieuwd hoe "het werkt".
@knurpht: dank, vooral voor het mooie voorbeeld. Ik had al eens in Yast naar de inhoud van een paar pakketten gekeken. Vandaar ook mijn nieuwsgierigheid.

En nu moet ik eerst wat meer nadenken en rondkijken.