LFD301 Einführung in Linux, Open-Source-Entwicklung und GIT

Classroom Schulung | Deutsch | Anspruch

Schulungsdauer: 4 Tage

Ziele

Linux wächst unaufhaltsam und die Nachfrage nach Linuxentwicklern war nie größer. Dieses Seminar wird Sie in die Welt der Linux Entwicklung einführen und Ihnen den die Basis und das Training vermitteln, welches Sie benötigen um anzufangen mit Linux zu arbeiten. Wenn Sie darüber nachgedacht haben in die Linux Entwicklung einzusteigen, ist dies der beste Ort um damit anzufangen!

Dabei lernen die Teilnehmer:

  • Die Historie von Linux und was Linux von anderen Unix-ähnlichen Betriebssystemen unterscheidet
  • Die Hauptbestandteile von Linux und wie man sie einsetzt
  • Die Grundlagen der System-Administration, wie z. B. Benutzeraccounts und Benutzergruppen, einfache Befehle, Dateisystem und Sicherheit
  • Netzwerk- und Threading-Modelle
  • Aspekte der Erstellung und Verwendung von Bibliotheken
  • Arbeiten mit Java unter Linux
  • u. v. m.

Zielgruppe

Entwickler

Voraussetzungen

  • Programmiervorkenntnisse

Agenda

Open Source Software

  • Was ist Open-Source-Software?
  • Was ist Proprietary (Closed Source) Software?
  • Pragmatismus vs. Idealismus
  • Geschichte von Open-Source-Software
  • Open-Source-Governance-Modelle

Warum Open-Source-Software verwenden?

  • Kollaborative Entwicklung
  • Sicherheit und Qualität des Quellcodes
  • Anwender: Flexibilität
  • Business: Kollaborative Entwicklung
  • Business: Marketing
  • Lehre: El-Hi, Öffentliche Systeme
  • Lehre: Universität
  • Entwickler: Größere Sichtbarkeit

Bespiele für erfolgreiche OSS-Projekte

  • Linux-Kernel
  • git
  • Apache
  • Python, Perl und andere Computersprachen
  • Tex und LaTeX
  • GNU: gcc, gdb, etc.
  • X und Desktop-Manager
  • OpenStack, Kubernetes und andere Projekte

Wie man in OSS-Projekten arbeitet

  • Überblick über die korrekte Durchführung von Übertragungen.
  • Sicherheit und Qualität durch die Nähe zur Mainline
  • Projekt-DNA erforschen und verstehen
  • Das Anliegen erkennen und verfolgen
  • Bestimmung der Entwickler und deren Arbeitsabläufe und Methoden
  • Frühzeitige Informationen einholen und freier arbeiten
  • Tragen Sie inkrementelle Bits bei und meiden Sie große Code-Dumps.
  • Kein Platz für Ego: Denke nicht engstirnig.
  • Seien Sie geduldig, entwickeln Sie langfristige Partnerschaften und seien Sie hilfreich

Continuous Integration

  • Warum Continuous Integration?
  • Continuous Delivery und Continuous Deployment
  • Kosten und Nutzen
  • Werkzeuge
  • Beispiel: Linux Kernel Continuous Investment Projekt
  • Die Grundlage für kontinuierlichen Betrieb

OSS-Lizenzierung und rechtliche Fragen

  • Restriktive vs. Permissive Lizenzierung
  • FUD
  • Software-Patente
  • Patente und Lizenzen
  • Auswahl einer Lizenz
  • Kombinierung von Lizenzen

Respektierung und Förderung von Vielfalt in OSS

  • Vielfalt und Open-Source-Software
  • Geschlecht und Geschlechtsidentität
  • Nationale Herkunft, Geographie und Sprache
  • Religion und Politik
  • Meinungsverschiedenheiten

GitHub und andere Hosting-Provider

  • GitHub
  • Öffentlich vs. Privat
  • GUI vs. Kommandozeile

LINUX und das Betriebssystem

  • Kernel vs. Betriebssystem und Tools
  • Geschichte von Linux
  • UNIX und Linux
  • Linux-Distributionen
  • Linux-Standard-Basis (LSB)

Grafische Umgebungen und Schnittstellen

  • Grafische Schichten
  • X-Fenster-System
  • Window-Manager
  • Desktop-Manager
  • Terminal-Window-Optionen

Hilfe erhalten

  • Dokumentationsquellen
  • Man Pages
  • info
  • {–}help and help
  • Grafische Oberflächen

Text-Editoren

  • Verfügbare Text-Editoren
  • vi
  • emacs

Shells, bash und die Kommandozeile

  • Shells
  • Shell-Initialisierung
  • Aliase
  • Umgebungs-Variablen
  • Anpassung der Befehlszeilen-Eingabeaufforderung
  • Sonderzeichen
  • Umleitung
  • Pipes
  • Befehlssubstitution und Ausdrücke

Dateisystem-Layout, Partitionen, Pfade und Links

  • Dateisystem-Layout
  • Partitionen
  • Betrachtungen zur Partitionswahl
  • Pfade
  • Hard und Soft (symbolische) Links

System-Initialisierung

  • Systemstart
  • System-Initialisierung

Datenspeicher

  • Speicher
  • Auslagerung
  • Threading-Modelle

Vernetzung

  • Vernetzung und Netzwerkschnittstellen

Befehlsdetails

  • Grundlegende Befehle und Dienstprogramme
  • Dateiübertragungs-Tools
  • Überwachungs- und Performance-Tools
  • Grafische Überwachungstools
  • Laden/Entladen von Kernel-Modulen
  • Geräte-Management
  • Systemdienste verwalten

System Verwaltung

  • Installation
  • Softwareverwaltung und Packaging
  • Upgrading und Patching
  • Benutzerverzeichnisse, Umgebungen, etc.
  • Logging-Dateien

Anwender und Gruppen

  • Grundlagen der Anwender und Gruppen
  • Benutzer und Gruppen hinzufügen und entfernen
  • Dateien, Benutzer und Berechtigungen
  • root (Super)-Benutzer, su und sudo

Linux-Dateisysteme

  • Dateisysteme und das VFS
  • ext2, ext3 und ext4 Dateisysteme
  • Journaling-Dateisysteme
  • btrfs
  • Einbinden von Dateisystemen
  • RAID
  • LVM

Grundlegende Kommandozeilen-Tools

  • Auflisten, Erstellen, Löschen und Umbenennen von Dateien und Verzeichnissen
  • Finden von Dateien: find und locate
  • Strings aufspüren: grep
  • String-Ersetzung: sed

Bash Skripting

  • Skript-Grundlagen
  • Konditionals
  • Schleifen
  • Funktionen

Dateien und Dateisysteme

  • Typen von Dateien
  • Berechtigungen und Zugriffsrechte
  • Änderung von Berechtigungen und Besitzverhältnissen

Compiling, Linking and Libraries

  • gcc
  • Weitere Compiler
  • Wichtige gcc-Optionen
  • Statische Bibliotheken
  • Gemeinsame Bibliotheken
  • Links zu Bibliotheken
  • Debuggen mit gdb

Java Installation und Umgebung

  • Installation von Java unter Linux
  • Umgang mit mehreren JRE}s und JDK}s: das alternativ Systemen
  • Umgebungsvariablen und Klassenpfade
  • Integrierte Entwicklungsumgebungen

Erstellen von RPM- und Debian-Packages

  • Wozu eine Packageverwaltung verwenden
  • Vorteile des Packagesystems
  • Linux-Distributionen und Package Management
  • RPM-Erstellung
  • Die RPM-spec-Datei
  • Details zu den RPM-spec-Abschnitten
  • RPM-Abhängigkeiten
  • Arbeitsablauf der Debian-Package-Erstellung

Einführung in GIT

  • Revisionskontrolle
  • Verfügbare Revisionskontrollsysteme
  • Grafische Schnittstellen
  • Dokumentation

Git-Installation

  • Binäre Installation
  • Installation aus dem Quellcode

Git und Revisionskontrollsysteme

  • Konvertierung zwischen verschiedenen Systemen
  • RCS und CVS
  • Subversion
  • git
  • git und verteilte Entwicklung

Benutzung von Git: mit Beispiel

  • Grundlegende Befehle
  • Ein einfaches Beispiel

Git-Konzepte und -Architektur

  • Konzepte
  • Design-Merkmale
  • Repositories
  • Objekte und Index
  • Inhalt vs. Pfadnamen
  • Übertragen vs. Veröffentlichen
  • Upstream und Downstream
  • Forking

Verwaltung von Dateien und des Index

  • Datei-Kategorien
  • Grundlegende Datei-Befehle

Verpflichtungen

  • Festlegen der Verpflichtung
  • Identifikatoren und Tags
  • Anzeigen der Commit-Historie
  • Commits rückgängig machen und zurücksetzen
  • Repositories aufräumen
  • Wer ist schuld?
  • Bisecting

Branches

  • Was ist ein Branch?
  • Branch-Namen vs. Tags
  • Erstellung von Branchen
  • Überprüfung von Branchen
  • Abfragen früherer Dateiversionen

Diffs

  • Differenzierung von Dateien
  • Diffing in Git

Merging

  • Was ist Merging?
  • Merging-Befehle
  • Neuordnung

Verwaltung von lokalen und entfernten Repositories

  • Zusammenarbeit mit anderen
  • Clonen
  • Veröffentlichung Ihres Projekts
  • Holen, Ziehen und Abrufen

Benutzung von Patches

  • Warum Patches verwenden?
  • Erstellen von Patches
  • E-Mails versenden
  • Patches anwenden

Erweiterungen für Git-Schnittstellen: Gerrit

  • Betriebsarten der verteilten Entwicklung
  • Gerrit
  • Review-Prozess

Ziele

Linux wächst unaufhaltsam und die Nachfrage nach Linuxentwicklern war nie größer. Dieses Seminar wird Sie in die Welt der Linux Entwicklung einführen und Ihnen den die Basis und das Training vermitteln, welches Sie benötigen um anzufangen mit Linux zu arbeiten. Wenn Sie darüber nachgedacht haben in die Linux Entwicklung einzusteigen, ist dies der beste Ort um damit anzufangen!

Dabei lernen die Teilnehmer:

  • Die Historie von Linux und was Linux von anderen Unix-ähnlichen Betriebssystemen unterscheidet
  • Die Hauptbestandteile von Linux und wie man sie einsetzt
  • Die Grundlagen der System-Administration, wie z. B. Benutzeraccounts und Benutzergruppen, einfache Befehle, Dateisystem und Sicherheit
  • Netzwerk- und Threading-Modelle
  • Aspekte der Erstellung und Verwendung von Bibliotheken
  • Arbeiten mit Java unter Linux
  • u. v. m.

Zielgruppe

Entwickler

Voraussetzungen

  • Programmiervorkenntnisse

Agenda

Open Source Software

  • Was ist Open-Source-Software?
  • Was ist Proprietary (Closed Source) Software?
  • Pragmatismus vs. Idealismus
  • Geschichte von Open-Source-Software
  • Open-Source-Governance-Modelle

Warum Open-Source-Software verwenden?

  • Kollaborative Entwicklung
  • Sicherheit und Qualität des Quellcodes
  • Anwender: Flexibilität
  • Business: Kollaborative Entwicklung
  • Business: Marketing
  • Lehre: El-Hi, Öffentliche Systeme
  • Lehre: Universität
  • Entwickler: Größere Sichtbarkeit

Bespiele für erfolgreiche OSS-Projekte

  • Linux-Kernel
  • git
  • Apache
  • Python, Perl und andere Computersprachen
  • Tex und LaTeX
  • GNU: gcc, gdb, etc.
  • X und Desktop-Manager
  • OpenStack, Kubernetes und andere Projekte

Wie man in OSS-Projekten arbeitet

  • Überblick über die korrekte Durchführung von Übertragungen.
  • Sicherheit und Qualität durch die Nähe zur Mainline
  • Projekt-DNA erforschen und verstehen
  • Das Anliegen erkennen und verfolgen
  • Bestimmung der Entwickler und deren Arbeitsabläufe und Methoden
  • Frühzeitige Informationen einholen und freier arbeiten
  • Tragen Sie inkrementelle Bits bei und meiden Sie große Code-Dumps.
  • Kein Platz für Ego: Denke nicht engstirnig.
  • Seien Sie geduldig, entwickeln Sie langfristige Partnerschaften und seien Sie hilfreich

Continuous Integration

  • Warum Continuous Integration?
  • Continuous Delivery und Continuous Deployment
  • Kosten und Nutzen
  • Werkzeuge
  • Beispiel: Linux Kernel Continuous Investment Projekt
  • Die Grundlage für kontinuierlichen Betrieb

OSS-Lizenzierung und rechtliche Fragen

  • Restriktive vs. Permissive Lizenzierung
  • FUD
  • Software-Patente
  • Patente und Lizenzen
  • Auswahl einer Lizenz
  • Kombinierung von Lizenzen

Respektierung und Förderung von Vielfalt in OSS

  • Vielfalt und Open-Source-Software
  • Geschlecht und Geschlechtsidentität
  • Nationale Herkunft, Geographie und Sprache
  • Religion und Politik
  • Meinungsverschiedenheiten

GitHub und andere Hosting-Provider

  • GitHub
  • Öffentlich vs. Privat
  • GUI vs. Kommandozeile

LINUX und das Betriebssystem

  • Kernel vs. Betriebssystem und Tools
  • Geschichte von Linux
  • UNIX und Linux
  • Linux-Distributionen
  • Linux-Standard-Basis (LSB)

Grafische Umgebungen und Schnittstellen

  • Grafische Schichten
  • X-Fenster-System
  • Window-Manager
  • Desktop-Manager
  • Terminal-Window-Optionen

Hilfe erhalten

  • Dokumentationsquellen
  • Man Pages
  • info
  • {–}help and help
  • Grafische Oberflächen

Text-Editoren

  • Verfügbare Text-Editoren
  • vi
  • emacs

Shells, bash und die Kommandozeile

  • Shells
  • Shell-Initialisierung
  • Aliase
  • Umgebungs-Variablen
  • Anpassung der Befehlszeilen-Eingabeaufforderung
  • Sonderzeichen
  • Umleitung
  • Pipes
  • Befehlssubstitution und Ausdrücke

Dateisystem-Layout, Partitionen, Pfade und Links

  • Dateisystem-Layout
  • Partitionen
  • Betrachtungen zur Partitionswahl
  • Pfade
  • Hard und Soft (symbolische) Links

System-Initialisierung

  • Systemstart
  • System-Initialisierung

Datenspeicher

  • Speicher
  • Auslagerung
  • Threading-Modelle

Vernetzung

  • Vernetzung und Netzwerkschnittstellen

Befehlsdetails

  • Grundlegende Befehle und Dienstprogramme
  • Dateiübertragungs-Tools
  • Überwachungs- und Performance-Tools
  • Grafische Überwachungstools
  • Laden/Entladen von Kernel-Modulen
  • Geräte-Management
  • Systemdienste verwalten

System Verwaltung

  • Installation
  • Softwareverwaltung und Packaging
  • Upgrading und Patching
  • Benutzerverzeichnisse, Umgebungen, etc.
  • Logging-Dateien

Anwender und Gruppen

  • Grundlagen der Anwender und Gruppen
  • Benutzer und Gruppen hinzufügen und entfernen
  • Dateien, Benutzer und Berechtigungen
  • root (Super)-Benutzer, su und sudo

Linux-Dateisysteme

  • Dateisysteme und das VFS
  • ext2, ext3 und ext4 Dateisysteme
  • Journaling-Dateisysteme
  • btrfs
  • Einbinden von Dateisystemen
  • RAID
  • LVM

Grundlegende Kommandozeilen-Tools

  • Auflisten, Erstellen, Löschen und Umbenennen von Dateien und Verzeichnissen
  • Finden von Dateien: find und locate
  • Strings aufspüren: grep
  • String-Ersetzung: sed

Bash Skripting

  • Skript-Grundlagen
  • Konditionals
  • Schleifen
  • Funktionen

Dateien und Dateisysteme

  • Typen von Dateien
  • Berechtigungen und Zugriffsrechte
  • Änderung von Berechtigungen und Besitzverhältnissen

Compiling, Linking and Libraries

  • gcc
  • Weitere Compiler
  • Wichtige gcc-Optionen
  • Statische Bibliotheken
  • Gemeinsame Bibliotheken
  • Links zu Bibliotheken
  • Debuggen mit gdb

Java Installation und Umgebung

  • Installation von Java unter Linux
  • Umgang mit mehreren JRE}s und JDK}s: das alternativ Systemen
  • Umgebungsvariablen und Klassenpfade
  • Integrierte Entwicklungsumgebungen

Erstellen von RPM- und Debian-Packages

  • Wozu eine Packageverwaltung verwenden
  • Vorteile des Packagesystems
  • Linux-Distributionen und Package Management
  • RPM-Erstellung
  • Die RPM-spec-Datei
  • Details zu den RPM-spec-Abschnitten
  • RPM-Abhängigkeiten
  • Arbeitsablauf der Debian-Package-Erstellung

Einführung in GIT

  • Revisionskontrolle
  • Verfügbare Revisionskontrollsysteme
  • Grafische Schnittstellen
  • Dokumentation

Git-Installation

  • Binäre Installation
  • Installation aus dem Quellcode

Git und Revisionskontrollsysteme

  • Konvertierung zwischen verschiedenen Systemen
  • RCS und CVS
  • Subversion
  • git
  • git und verteilte Entwicklung

Benutzung von Git: mit Beispiel

  • Grundlegende Befehle
  • Ein einfaches Beispiel

Git-Konzepte und -Architektur

  • Konzepte
  • Design-Merkmale
  • Repositories
  • Objekte und Index
  • Inhalt vs. Pfadnamen
  • Übertragen vs. Veröffentlichen
  • Upstream und Downstream
  • Forking

Verwaltung von Dateien und des Index

  • Datei-Kategorien
  • Grundlegende Datei-Befehle

Verpflichtungen

  • Festlegen der Verpflichtung
  • Identifikatoren und Tags
  • Anzeigen der Commit-Historie
  • Commits rückgängig machen und zurücksetzen
  • Repositories aufräumen
  • Wer ist schuld?
  • Bisecting

Branches

  • Was ist ein Branch?
  • Branch-Namen vs. Tags
  • Erstellung von Branchen
  • Überprüfung von Branchen
  • Abfragen früherer Dateiversionen

Diffs

  • Differenzierung von Dateien
  • Diffing in Git

Merging

  • Was ist Merging?
  • Merging-Befehle
  • Neuordnung

Verwaltung von lokalen und entfernten Repositories

  • Zusammenarbeit mit anderen
  • Clonen
  • Veröffentlichung Ihres Projekts
  • Holen, Ziehen und Abrufen

Benutzung von Patches

  • Warum Patches verwenden?
  • Erstellen von Patches
  • E-Mails versenden
  • Patches anwenden

Erweiterungen für Git-Schnittstellen: Gerrit

  • Betriebsarten der verteilten Entwicklung
  • Gerrit
  • Review-Prozess

Tags

Diese Seite weiterempfehlen