DigiPinguïns: pakketbeheer, softwarebronnen, source code compileren (Bernard Decock)

download DigiPinguïns: pakketbeheer, softwarebronnen, source code compileren (Bernard Decock)

If you can't read please download the document

Transcript of DigiPinguïns: pakketbeheer, softwarebronnen, source code compileren (Bernard Decock)

Pakket ?

Software ??

Source-code compileren ???

Pakketbeheer

Software installeren

Software verwijderen

Software vernieuwen (upgrade)
Automatische updates

Software opwaarderen (distro-upgrade)

Software oudere versie gebruiken (downgrade)

Ook gekend als software-installer

Wat is software ?

Software is een ander woord voor een computer-programma.

Een computer-programma is een reeks van computer-instructies (bevelen, machine-instructies) die de verwerkings-eenheid van een computer moet uitvoeren.

Machinetaal (of opcodes)

(Macro)Assembly MachineTaal(Opcodes, mnemonics)

Vertalen van assemblercode naar machinetaal = assembleren

The Netwide Assembler (NASM). It uses the Intel syntax just like TASM, MASM, and other DOS assemblers, and the structure is also fairly similar.

NASM is cool because it's portable (there are Linux, Unix and DOS versions), it's free and it's powerful with lots of nice features.

Hogere programmeer-talen (C, C++, Java, ...)

Sourcecode compileren

Compiler kijkt syntax van de code na

Compiler vertaalt de sourcecode naar objectcode (voor een bepaald type processor. Men kan compileren voor een ander type van de processor crosscompiler)

Libraries versus toepassingen

Linken

Compiler Linking Executable (programma)

Dynamisch versus statisch linken

Resum

Sourcecode (open source - closed source) : broncode, bronbestanden

Compileren (samenstellen, een compilatie maken)

Objectcode (relocatable = herplaatsbaar)

Bibliotheken (libraries) Pakketten (packages)
Shared libraries (Het wiel niet terug uitvinden!)

Binaries = executables = programma of applicatie

LDD(1) Linux Programmer's Manual LDD(1)

NAME ldd - print shared library dependencies

SYNOPSIS ldd [OPTION]... FILE...

DESCRIPTION ldd prints the shared libraries required by each program or shared library specified on the command line.

Security !!! In the usual case, ldd invokes the standard dynamic linker (see ld.so(8)) with the LD_TRACE_LOADED_OBJECTS environment variable set to 1, which causes the linker to display the library dependencies. Be aware, however, that in some circumstances, some versions of ldd may attempt to obtain the dependency information by directly executing the program. Thus, you should never employ ldd on an untrusted executable, since this may result in the execution of arbitrary code. A safer alternative when dealing with untrusted executables is:

$ objdump -p /path/to/program | grep NEEDED

ldd /usr/bin/gimplinux-vdso.so.1 => (0x00007ffffaf1a000)libgimpwidgets-2.0.so.0 => /usr/lib/libgimpwidgets-2.0.so.0 (0x00007fc32520e000)libgtk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (0x00007fc324bd1000)libgdk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (0x00007fc32491d000)libdbus-glib-1.so.2 => /usr/lib/x86_64-linux-gnu/libdbus-glib-1.so.2 (0x00007fc3246f6000)libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fc3244b1000)libgimpconfig-2.0.so.0 => /usr/lib/libgimpconfig-2.0.so.0 (0x00007fc3242a0000)libgimpmath-2.0.so.0 => /usr/lib/libgimpmath-2.0.so.0 (0x00007fc32409a000)libgimpthumb-2.0.so.0 => /usr/lib/libgimpthumb-2.0.so.0 (0x00007fc323e90000)libgimpcolor-2.0.so.0 => /usr/lib/libgimpcolor-2.0.so.0 (0x00007fc323c82000)libgimpmodule-2.0.so.0 => /usr/lib/libgimpmodule-2.0.so.0 (0x00007fc323a7d000)libgimpbase-2.0.so.0 => /usr/lib/libgimpbase-2.0.so.0 (0x00007fc323864000)libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007fc323642000)libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007fc323435000)libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007fc323220000)libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007fc322fd2000)libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fc322d96000)libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fc322af3000)

.so (Shared Object) => (Symbolische link)

Conventies : libFOO.so.MAJOR.MINOR

MAJOR-nummer wordt aangepast bij wijzigingen die de compatibiliteit verbreken : Nieuwe functies werden toegevoegd. Oudere methoden werden verwijdered. Datastructuren werden gewijzigd.

MINOR-nummer : Bugfixes of toevoeging van nieuwe functionaliteit die de compatibiliteit behoudt.

debtree pcscd | dot -Tpng >pcscd.png

DEBTREE(1)

debtree - show relationships between packages

SYNOPSIS debtree [options] package

DESCRIPTION Generates dependency graphs (in `dot' syntax) for the specified package. The output is written to STDOUT and can be used as input for the command dot(1) from the package `graphviz'.

DistributieBasisUitgebreid

DebiandpkgApt-get/Aptitude

Fedorarpmyum

Suserpmzypper

Basis- versus uitgebreid pakketbeheer

Apt = Advanced Package Tool

Software-repositories

Een database van programma's waarbij de bijbehorende pakketten automatisch genstalleerd worden. Voorbeeld : Ubuntu Software Center

Ubuntu Software Center zal in 2016 vervangen worden door Gnome Software.

Vergelijk met AppStore van Apple en AndroidApps op GooglePlay.

Rpm (CentOS/Fedora) niet compatibel met rpm OpenSuse!

APT (Advanced Package Tool)

apt-cache show package

Toon basis-informatie van het pakket

apt-cache showpkg package

Toon details over het pakket (afhankelijkheden)

apt-file list package | more

Toon alle bestanden in het pakket

apt-cache depends package

Toon afhankelijkheden va het pakket

apt-cache pkgnames

Toon alle beschikbare pakketten

apt-cache stats

Statistieken (algemeen overzicht)

APT (Advanced Package Tool)

sudo apt-get install package

Installeer het pakket

dpkg -l | grep package

Is het pakket genstalleerd ?

sudo apt-get purge package

Verwijderen pakket + Configuratie-bestanden

sudo apt-get remove package

Verwijderen pakket (Configuratie-bestanden blijven behouden)

sudo apt-get update

Synchroniseren met de software-bronnen

sudo apt-get upgrade

Alle genstalleerde pakketten updaten

APT (Advanced Package Tool)

sudo apt-get dist-upgrade

Distributie-upgrade! (Maak eerst een backup!)

sudo apt-get clean

Opruimen van tijdelijke bestanden

Voorbeeld software installeren : installatie van glances

Softwarebron toevoegen : sudo apt-add-repository ppa:arnaud-hartmann/glances-stable

Synchroniseren met de software-bronnen :

sudo apt-get update

Pakket installeren :sudo apt-get install glances

Synaptic Package Manager

Synaptic Package Manager

Synaptic Package Manager

Synaptic Package Manager

Synaptic Package Manager

dpkg-reconfigure

Met dpkg-reconfigure kan je genstalleerde pakketten gaan reconfigureren!

Voorbeelden :

Default keyboard-layout

Keyboard-mapping

Timezone

Locales

Video-drivers

Lees eerst de handleiding!

http://www.linux-magazine.com/Issues/2013/155/Command-Line-dpkg-reconfigure

Vb. sudo dpkg-reconfigure tzdata

Installeren van .deb-packages

Installatie .deb-packages : Voorbeeld EID-packages

Debian goodies

sudo apt-get install debian-goodies

Debian goodies

dglob Lijst van pakket-namen (of namen die overeenkomen met een opgegeven tekst)

dgrep Bestanden zoeken in een pakket die voldoen aan een reguliere expressie

dpigs Welke pakketten gebruiken de meeste schijfruimte?

debget Haal een .deb-pakket op

debmany Toon de man-pagina's van pakketten

checkrestart Zoekt en herstart processen die verouderde files gebruiken
(Process wordt herstart met de vernieuwde versie)

popbugs Toon bug-rapport van de gebruikte pakketten

which-pkg-broke Toon welke pakketten een ander gebroken hebben

Broncode-beheer

Beheren van verschillende versies van de broncode

Git werd ontwikkeld door Linus Torvalds om de versies van de
linux-kernel te beheren.

GIT (Commit Push)

Compileren van source-code

Lees altijd eerst aandachtig de aanwijzingen !

Voorbereiding : compilers & tools installeren

sudo apt-get install build-essential

sudo apt-get install automake

sudo apt-get install checkinstall

https://help.ubuntu.com/community/CompilingSoftware

http://www.aboutdebian.com/compile.htm

Voorbeeld compileren (Geen compiler genstalleerd)

Voorbeeld compileren : ontbrekende pakketten

IDE : Integrated Development Environment

Editor (Syntax highlighting, Code completion, Smart Indent, Class Browser, Refactoring, )

Compiler/linker

Debugger (breakpoints, stappen door de code)

Analyzetools (Geheugenlekken zoeken Valgrind), Timing-analyze, BranchCoverage

Integratie met Versie-systemen (bv. Git)

IDE : QtCreator