DigiPinguïns: pakketbeheer, softwarebronnen, source code compileren (Bernard Decock)
-
Upload
vormingplus-midden-en-zuid-west-vlaanderen -
Category
Software
-
view
235 -
download
0
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