Debian Paketmanagement: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Paketmanagement unter Linux= Es gibt verschiedene Möglichkeiten, Software unter Linux zu installieren. Die gebräuchlichste Möglichkeit ist, einen Paketman…“)
 
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Paketmanagement unter Linux=
 
Es gibt verschiedene Möglichkeiten, Software unter Linux zu installieren. Die gebräuchlichste Möglichkeit ist,
 
einen Paketmanager zu benutzen. Paketmanager greifen dazu auf repositories (dt. Aufbewahrungsort, Behälter) zurück.
 
Sie beziehen dabei eine Auflistung der verfügbaren Software. Die Auflistung enthält die beiinhalteten Dateien, eine
 
kurze Beschreibung, sowie Verweise auf die Abhängigkeiten des Pakets. Von den gezeigten Möglichkeiten sollte apt-get
 
bevorzugt werden, da Paketabhängigkeiten erkannt werden und abhängige Pakete mitinstalliert werden.
 
  
==DPKG==
+
*[[Paketmanagement unter Linux]]
 +
*[[apt kurz und knapp]]
 
*[[dpkg]]
 
*[[dpkg]]
==APT==
+
*[[apt]]
APT ist die Abkürzung für Advanced Package Tool. Ein großer Vorteil von ’apt’ ist, dass vor einer Installation oder
+
*[[aptitude]]
Deinstallation zunächst die Abhängigkeiten und Konflikte zwischen Paketen untersucht werden.
+
*[[apt-cache]]
 
+
*[[apt-file]]
Die Datei /etc/apt/sources.list bestimmt, welche Paketquellen ’apt’ verwenden soll. Dies Konfiguration geschieht
+
*[[debsums]]
schon bei der Installation. Mit dem Befehl apt-setup kann die ’sources.list’ jederzeit ergänzt bzw. verändert werden
+
*[[Debian Backports]]
 
+
*[[Package einsortieren]]
root@zero:~# cat /etc/apt/sources.list
 
deb http://de.archive.ubuntu.com/ubuntu/ jaunty multiverse
 
deb-src http://de.archive.ubuntu.com/ubuntu/ jaunty multiverse
 
deb http://de.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 
deb-src http://de.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 
 
deb http://security.ubuntu.com/ubuntu jaunty-security main restricted
 
deb-src http://security.ubuntu.com/ubuntu jaunty-security main restricted
 
deb http://security.ubuntu.com/ubuntu jaunty-security universe
 
deb-src http://security.ubuntu.com/ubuntu jaunty-security universe
 
deb http://security.ubuntu.com/ubuntu jaunty-security multiverse
 
deb-src http://security.ubuntu.com/ubuntu jaunty-security multiverse
 
...
 
 
 
Der Aufbau der Datei besteht aus Typ, Universal Resource Identifier (URI) und dem Namen der Distribution.  Zusätzlich
 
können optional noch Komponenten angegeben werden.
 
 
 
Der Typ ist entweder ’deb’ (Debian-Pakete, die Programme enthalten, die nach der Installation sofort ausgeführt werden
 
können) oder ’deb-src’ (Debian Quellcode-Pakete, die zunächst kompiliert werden müssen, bevor die Programme ausgeführt
 
werden können).
 
 
 
Die Reihenfolge der Einträge in der Datei von oben nach unten bestimmt, auf welche Quellen zuerst zugegriffen wird. Es kann
 
aber trotzdem vorkommen, dass ’apt’ die Pakete von einer hin­teren Quelle bezieht, wenn sie dort in einer aktuelleren Version
 
vorliegen.
 
 
 
apt-get [Optionen] [Kommando] Paketname(n)
 
 
 
====Optionen====
 
* -f : versucht gebrochene Abhängigkeiten zu installieren
 
* -s : Führt nur eine Simulation aus, ändert nichts am System
 
* -y : Nimmt für alle Nachfragen Ja/Yes an.
 
* -V : Zeigt alle Versionsnummmern für aktualisierte und installierte Pakete an
 
* --install-recommends : Installiert auch empfohlene Pakete
 
* --reinstall : Installiert installierte Pakete neu
 
* -d oder --download-only : Das Paket wird nur heruntergeladen, nicht entpackt oder installiert.(befindet sich dann in /var/cache/apt/archives/)
 
apt-get -d install bing
 
 
 
====Kommandos====
 
 
 
{| Border=1 Cellpadding=2
 
!Kommando
 
!Bedeutung
 
|-
 
|update
 
|Holt neue Paketlisten
 
|-
 
|install
 
|installiert das Paket, die Abhängigkeiten werden direkt mit aufgelöst
 
|-
 
|remove
 
|löscht das Paket, die Konfigurationsdateien bleiben aber erhalten
 
|-
 
|upgrade
 
|aktualisiert alle Pakete, für die Aktualisierungen bereit stehen, entfernt aber keine Pakete und installiert keine neuen; dies ist der "normale" Befehl, um innerhalb eines Releases ein Update durchzuführen
 
|-
 
|dist-upgrade
 
|aktualisiert alle Pakete, installiert neue und entfernt ggf. nicht mehr benötigte; dies ist der Befehl für ein Upgrade zwischen zwei Ubuntu-Versionen
 
|-
 
|clean
 
|leert den Paketcache, kann u.U. sehr viel Festplattenplatz frei machen
 
|-
 
|autoclean
 
|leert den Paketcache für alle Pakete aus den eingetragenen Quellen, kann u.U. sehr viel Festplattenplatz frei machen
 
|}
 
 
 
 
 
* update - Holt neue Paketlisten
 
root@zero:~# apt-get '''update'''
 
* upgrade : Erneuert Pakete; Hierbei werden jedoch keine zusätzlichen Pakete installiert oder bereits installierte Pakete
 
entfernt. Falls dies jedoch über neue Abhängigkeiten erforderlich ist, wird bei dem genannten Befehl angezeigt, dass eine
 
bestimmte Anzahl an Paketen nicht aktualisiert wurde. Um auch in diesem Fall eine Aktualisierung durchführen zu können,
 
muss folgender Befehl verwendet werden:
 
* dist-upgrade : Distribution Upgrade
 
root@zero:~# apt-get '''dist-upgrade'''
 
Paketlisten werden gelesen... Fertig
 
Abhängigkeitsbaum wird aufgebaut
 
Lese Status-Informationen ein... Fertig
 
Berechne Upgrade (Paketaktualisierung) ...Fertig
 
Die folgenden Pakete werden aktualisiert:
 
  cups cups-bsd cups-client cups-common libcups2 libcupsimage2 libpoppler-glib4 libpoppler4 libxi6 lsb-base
 
lsb-release poppler-utils
 
12 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
 
Es müssen 4576kB an Archiven heruntergeladen werden.
 
Nach dieser Operation werden 0B Plattenplatz zusätzlich benutzt.
 
Möchten Sie fortfahren [J/n]?
 
 
 
* install : Installiert neue Pakete
 
root@zero:~# apt-get '''install''' ding apache2
 
...
 
* remove : Entfernt Pakete
 
root@zero:~# apt-get '''remove''' ding
 
 
 
* remove : Entfernt Pakete inklusive Konfiguration
 
root@zero:~# apt-get '''purge''' ding
 
 
 
* autoremove : Entfernt automatisch nicht mehr weiterbenutzte Pakete
 
root@zero:~# apt-get '''autoremove'''
 
Paketlisten werden gelesen... Fertig
 
Abhängigkeitsbaum wird aufgebaut
 
Lese Status-Informationen ein... Fertig
 
Die folgenden Pakete wurden automatisch installiert und werden nicht länger benötigt:
 
  linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic tcl8.4 tk8.4 trans-de-en
 
Die folgenden Pakete werden ENTFERNT:
 
  linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic tcl8.4 tk8.4 trans-de-en
 
0 aktualisiert, 0 neu installiert, 5 zu entfernen und 0 nicht aktualisiert.
 
Nach dieser Operation werden 90,2MB Plattenplatz freigegeben.
 
Möchten Sie fortfahren [J/n]?
 
* purge : Entfernt Pakete und löscht deren Konfigurationsdateien
 
root@zero:~# apt-get '''purge''' avahi-daemon
 
...
 
* source : Lädt Quellcode herunter
 
* build-dep : Konfiguriert Abhängigkeiten für Quellcode-pakete
 
* check : Überprüf auf defekte Abhängigkeiten
 
 
 
Weitere Beispiele:
 
 
 
Paketliste aktualisieren, System auf den neuesten Stand bringen
 
root@zero:~# apt-get '''update'''; apt-get '''dist-upgrade'''
 
...
 
Paketliste aktualisieren, System ohne Nachfrage auf den neuesten Stand bringen
 
root@zero:~# apt-get update; apt-get '''dist-upgrade''' '''-y'''
 
...
 
Nicht mehr benutzte Pakete unbeaufsichtigt entfernen
 
root@zero:~# apt-get '''autoremove''' '''-y'''
 
...
 
 
 
Archive Dateien löschen
 
root@zero:~# apt-get '''clean'''
 
...
 
 
 
Alte Archive Dateien löschen
 
root@zero:~# apt-get '''autoclean'''
 
...
 
Defekte Pakete reparieren
 
root@zero:~# apt-get '''-f install'''
 
Paketlisten werden gelesen... Fertig
 
 
 
===Lock nicht aufrufbar===
 
Wenn apt oder ein anderer Paketmanager beim Installieren die Fehlermeldung: "Konnte Lock nicht bekommen" ausgibt, sollte man die Datei /var/cache/apt/archives/lock mit Root-Rechten löschen.
 
 
 
==APTITUDE==
 
aptitude ist eine Erweiterung der Paketverwaltung mittels APT (Advanced Packaging Tool), welches auf allen Debian-basierten Systemen und damit auch Ubuntu zum Einsatz kommt.
 
 
 
aptitude kann sowohl per Kommandozeile bedient werden als auch über eine grafische Oberfläche, welche auf ncurses basiert und somit Desktop-übergreifend eingesetzt werden kann. Weiterhin kann die Oberfläche auch auf Systemen ohne Grafik (z.B. Server) eingesetzt werden.
 
 
 
Im Gegensatz zu apt-get führt aptitude über Änderungen der installierten Pakete "genauer" Buch, so dass nicht mehr benötigte Pakete automatisch erkannt und deinstalliert werden, die Installationsgeschichte in ein Log geschrieben wird, angezeigt werden kann, warum ein Paket installiert ist (oder nicht installiert werden kann) etc.
 
 
 
Mit dem Erscheinen von Debian Etch 4.0 im April 2007 ist aptitude die "bevorzugte" Paketverwaltung und tritt damit die Nachfolge von dselect und apt an.
 
 
 
===Optionen===
 
{| Border=1 Cellpadding=2
 
!Kommando
 
!Bedeutung
 
|-
 
|install
 
|installiert das Paket, die Abhängigkeiten werden direkt mit aufgelöst
 
|-
 
|remove
 
|löscht das Paket, die Konfigurationsdateien bleiben aber erhalten
 
|-
 
|purge
 
|löscht das Paket inklusive aller Konfigurationsdateien
 
|-
 
|hold
 
|erzwingt, dass das Paket in der aktuell installierten Version gehalten wird, d.h. es werden keine Updates dafür installiert
 
|-
 
|download
 
|Lädt die .deb-Datei des angegebenen Pakets herunter und speichert sie im aktuellen Verzeichnis.
 
|-
 
|forbid-version
 
|verbietet die Installation einer bestimmten Paketversion, diese muss hinter dem Paketnamen mittels = angehängt werden, also z.B. xserver-xorg=1.2.3.broken-4
 
|-
 
|safe-upgrade
 
|aktualisiert alle Pakete, für die Aktualisierungen bereit stehen, entfernt aber keine Pakete und installiert keine neuen; dies ist der "normale" Befehl, um innerhalb eines Releases ein Update durchzuführen
 
|-
 
|full-upgrade
 
|aktualisiert alle Pakete, installiert neue und entfernt ggf. nicht mehr benötigte; dies ist der Befehl für ein Upgrade zwischen zwei Ubuntu-Versionen (entspricht bei apt-get dem dist-upgrade)
 
|-
 
|show
 
|zeigt Informationen zum Paket an
 
|-
 
|search "suchmuster"
 
|zeigt Pakete auf die das Suchmuster passt.
 
|-
 
|why
 
|zeigt an, welche Pakete von diesem abhängen
 
|-
 
|why-not
 
|zeigt an, warum ein Paket nicht installiert werden kann, also welche Konflikte existieren
 
|-
 
|clean
 
|leert den Paketcache, kann u.U. sehr viel Festplattenplatz frei machen
 
|-
 
|autoclean
 
|leert den Paketcache für alle Pakete aus den eingetragenen Quellen, kann u.U. sehr viel Festplattenplatz frei machen
 
|}
 
 
 
===Beispiele===
 
*Installation eines Paktes
 
root@zero:~# aptitude install sing bing ding wing
 
...
 
*Löschen eines Paketes
 
root@zero:~# aptitude remove bing
 
...
 
*Löschen eines Paketes inklusive Konfiguration und ohne Rückfrage
 
root@zero:~# aptitude purge  sing  -y
 
...
 
*Paket wird gehalten(eingefroren)
 
root@zero:~# aptitude hold sing
 
...
 
*Download des Paketes und abspeichern im aktuellen Verzeichnis
 
root@zero:~# aptitude download mc
 
...
 
Initialisiere Paketstatus... Fertig
 
Hole:1 http://de.archive.ubuntu.com jaunty/universe mc 2:4.6.2~git20080311-4ubuntu1 [2143kB]
 
2143kB wurden in 2s heruntergeladen (912kB/s)
 
root@zero:~# ls mc_2%3a4.6.2~git20080311-4ubuntu1_i386.deb
 
mc_2%3a4.6.2~git20080311-4ubuntu1_i386.deb
 
*Sicheres Upgrade des Systems(entsprichte apt-get upgrade)
 
root@zero:~# aptitude safe-upgrade
 
...
 
*Volles Upgrade des Systems(entsprichte apt-get dist-upgrade)
 
root@zero:~# aptitude full-upgrade
 
...
 
*Sucht in den Repositories nach einem Paket, auf dass das Suchmuster passt
 
root@zero:/var/cache/apt/archives# aptitude search "\<mc\>"
 
p  mc - midnight commander - ein mächtiger Dateimanager
 
p  mc-dbg - midnight commander - a powerful file manager - debug package
 
 
 
 
 
*Zeige Infos zu Paket
 
root@zero:~# aptitude show sing
 
Paket: sing
 
Zustand: nicht installiert
 
Version: 1.1-17
 
Priorität: optional
 
Bereich: universe/net
 
Verwalter: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
 
Unkomprimierte Größe: 168k
 
Hängt ab von: debconf | debconf-2.0, libc6 (>= 2.4), libnet0, libpcap0.8 (>= 0.9.3-1)
 
Beschreibung: A fully programmable ping replacement
 
  Sing is a little tool that sends ICMP packets fully customized from command line. The main purpose is to replace/complement the
 
  nice ping command with certain enhancements as:
 
  * Send fragmented packets (Linux and BSD).
 
  * Send monster packets > 65534 (Linux and BSD).
 
  * Send/read spoofed packets.(Libpcap included in distribution).
 
  * Send many ICMP Information types in addition to the ECHO REQUEST type sent by default as Address Mask Request, Timestamp,
 
    Information Request,
 
  * Router Solicitation and Router Advertisement.
 
  * Send many ICMP error types: Redirect, Source Quench, Time Exceeded, Destination Unreach and Parameter Problem.
 
  * Send to host with Loose or Strict Source Routing.
 
  * Use little fingerprinting techniques to discover Windows or Solaris boxes.
 
  * Send ICMP packets emulating certain OS: Cisco, Solaris, Linux, Shiva, Unix and Windows at the moment.
 
 
 
Welche Pakete hängen von diesem abhängen?
 
root@zero:~# aptitude why ding
 
i  ding        Empfiehlt  trans-de-en (>= 1.4) | translation-dictionary
 
i A trans-de-en Schlägt vor ding
 
Paketcache leeren
 
root@zero:~# aptitude auto-clean
 
 
 
==apt-cache==
 
apt-cache wird benutzt um Pakete zu suchen.
 
 
 
Beispiele
 
root@zero:~# apt-cache search wlan
 
linux-wlan-ng - Hilfsprogramme für Wireless Prism2 Karten
 
linux-wlan-ng-doc - documentation for wlan-ng
 
ifplugd - configuration daemon for ethernet devices
 
linux-wlan-ng-firmware - firmware files used by the linux-wlan-ng driver
 
linux-wlan-ng-source - linux-wlan-ng driver
 
ap-utils - Access-Point-SNMP-Werkzeuge für Linux
 
kismet - Wireless 802.11b-Beobachtungs-Programm
 
kwlan - KDE-Oberfläche für wpasupplicant
 
rt73-common - RT73(RT2571W) Wireless Lan Linux Driver - common files
 
rt73-source - RT73(RT2571W) Wireless Lan Linux Driver - kernel module sources
 
oder
 
root@zero:~# apt-cache search apache | grep mysql
 
libapache2-mod-auth-mysql - Apache 2 module for MySQL authentication
 
libapache2-mod-log-sql-mysql - Use SQL to store/write your apache queries logs - MySQL interface
 
proftpd-mod-mysql - versatile, virtual-hosting FTP daemon - MySQL module
 
pure-ftpd-mysql - Pure-FTPd FTP server with MySQL user authentication
 
 
 
Infos über ein Paket anzeigen
 
root@zero:~# apt-cache show  man-db
 
Package: man-db
 
Priority: standard
 
Section: doc
 
Installed-Size: 2680
 
Maintainer: Colin Watson <cjwatson@debian.org>
 
Architecture: i386
 
Version: 2.5.5-1build1
 
Replaces: man, manpages-de (<< 0.5-4), nlsutils
 
Provides: man, man-browser
 
Depends: groff-base (>= 1.18.1.1-15), bsdmainutils, debconf (>= 1.2.0) | debconf-2.0, dpkg (>= 1.9.0), libc6 (>= 2.8), libgdbm3, zlib1g (>= 1:1.1.4)
 
Suggests: groff, less, www-browser
 
Conflicts: man, suidmanager (<< 0.50)
 
Filename: pool/main/m/man-db/man-db_2.5.5-1build1_i386.deb
 
Size: 973440
 
MD5sum: 0b72088eaccb960b5f11baac2f43869c
 
SHA1: f5a6556c92afa574bf81538bfac56d40a7dac1ad
 
SHA256: 1f9fdfe23af6be42c6b8dc982468b3552f5a9c35f54e6c1515c9ef8fe04c26e0
 
Description-de: Programm zum Lesen von Manpages
 
  Dieses Paket enthält das Programm man, das die primäre Methode zum Lesen
 
  der Online-Hilfedateien (Manpages) darstellt. Weitere Tools sind die
 
  Programme whatis und apropos (zum Durchsuchen der Manpage-Datenbank), das
 
  Programm manpath zum Bestimmen des Manpage-Suchpfades, sowie die
 
  Pflegeprogramme mandb, catman und zsoelim. man-db benutzt die
 
  »groff«-Suite, um Manpages zu formatieren und anzuzeigen.
 
Homepage: http://man-db.nongnu.org/
 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
 
Origin: Ubuntu
 
Task: standard, mobile-live, mobile-mid
 
 
 
Abhängigkeiten eines Paket anzeigen
 
root@zero:~# apt-cache depends ssh
 
ssh
 
  Hängt ab: openssh-client
 
  Hängt ab: openssh-server
 
 
 
Statistiken anzeigen
 
root@zero:~# apt-cache stats
 
Gesamtzahl an Paketnamen: 34851 (1394k)
 
  davon gewöhnliche Pakete: 26580
 
  davon rein virtuelle Pakete: 366
 
  davon einzelne virtuelle Pakete: 2239
 
  davon gemischte virtuelle Pakete: 263
 
  davon fehlend: 5403
 
Gesamtzahl an unterschiedlichen Versionen: 27442 (1537k)
 
Gesamtzahl an unterschiedlichen Beschreibungen: 39403 (946k)
 
Gesamtzahl an Abhängigkeiten: 175909 (4925k)
 
Gesamtzahl an Version/Datei-Beziehungen: 28936 (463k)
 
Gesamtzahl an Beschreibung/Datei-Beziehungen: 39403 (630k)
 
Gesamtzahl an Bereitstellungen: 4744 (94,9k)
 
Gesamtzahl an Mustern: 121 (1588)
 
Gesamtmenge an Abhängigkeits/Versionsspeicher: 820k
 
Gesamtmenge an Slack: 82,5k
 
Gesamtmenge an Speicher: 8498k
 
 
 
Umgekehrte Abhängigkeiten eines Paket anzeigen
 
root@zero:~# apt-cache rdepends openssh-server
 
openssh-server
 
Reverse Depends:
 
  mythbuntu-desktop
 
  ssh-krb5
 
  slack
 
  |sdm
 
  scponly
 
  rssh
 
  gitosis
 
  gforge-shell-postgresql
 
  fai-server
 
  apt-dater-host
 
  ajaxterm
 
  ubuntu-virt-server
 
  ssh
 
  rsync
 
  ltsp-server-standalone
 
  |ltsp-server
 
 
 
====Dateien====
 
* /etc/apt/sources.list : Orte, von wo die Pakete geholt werden
 
* /etc/apt/apt.conf : APT-Konfigurationsdatei
 
* /etc/apt/apt.conf.d/ : Weitere Konfigurationsanpassungen
 
* /var/cache/apt/archives/ : Speicherort für heruntergeladene Pakete
 
* /var/cache/apt/archives/partial/ : Speicherort für momentan übertragene Pakete
 
* /var/lib/apt/lists/ : Speicherort für Statusinformationen der Pakete
 
 
 
==APT-FILE==
 
apt-file dient zur Such in den Repositories
 
*Installation
 
root@zero:~# apt-get install apt-file
 
*Update
 
root@zero:~# apt-file update
 
*In welchem Paket ist die Datei xxx
 
root@zero:~# apt-file search nids.h
 
libnids-dev: /usr/include/nids.h
 
 
 
==dpkg-reconfigure==
 
Manche Pakete erfordern eine Konfiguration. Die Grundkonfiguration wird automatisch bei der ersten Installation erzeugt. Später dient der Befehl dpkg-reconfigure zur Bearbeitung.Die Liste der zur Zeit installierten und mit dpkg-reconfigure konfigurierbaren Pakete erhält man im Terminal [1] mit:
 
root@zero:~# ls /var/lib/dpkg/info/*.templates|xargs -n 1 basename|sed -e "s/.templates$//"
 
===Ein Paket neu konfigurieren===
 
 
 
Die gestellten Fragen werden nach ihrer Priorität gefiltert. Normalerweise werden nur wenige Fragen gestellt. Mit den folgenden Parametern kann man das einstellen:
 
*-plow (alle Fragen werden gestellt)
 
*-pmedium
 
*-phigh
 
*-pcritical (fast alles wird auf die Vorgabewerte gesetzt, nur überlebenswichtige Fragen werden gestellt)
 
 
 
Der folgende Befehl konfiguriert zum Beispiel das Paket man-db neu, wobei alle möglichen Fragen gestellt werden:
 
root@zero:~# dpkg-reconfigure -plow man-db
 
 
 
==TAR==
 
*[[tar]]
 
 
 
==alien==
 
alien konvertiert verschiedene Paketformate in jeweils andere um. Das Programm kann mit folgenden Formaten umgehen:
 
* RedHat (rpm)
 
* Debian (deb)
 
* Stampede (slp)
 
* Slackware (tgz)
 
* Solaris (pkg)
 
 
 
===Kommandos===
 
Die Aufrufform ist sehr einfach. alien erkennt das Format einer angegebenen Paketdatei automatisch und konvertiert
 
es dann in das angegebene Format. Das gewünschte Ausgabeformat wird durch die folgenden Parameter angegeben:
 
 
 
* --to-deb : Aus dem angegebenen Paket wird ein Debian-Paket erstellt
 
* --to-rpm : Aus dem angegebenen Paket wird ein RedHat-Paket erstellt
 
* --to-tgz : Aus dem angegebenen Paket wird ein Slackware-Paket erstellt
 
* --to-slp : Aus dem angegebenen Paket wird ein Stampede-Paket erstellt
 
 
 
alien [--to-deb] [--to-rpm] [--to-tgz] [--to-slp] [Optionen] Datei(en)
 
 
 
===Optionen===
 
* -i : Installiere generierte Pakete und entfernte Paketdatei nach der Installation
 
* -g : Generiert ein temporäres Verzeichnis
 
* --patch=''patch'' : Fügt einen Patch ein (nur Debian Pakete)
 
* --test : Testet die generierten Pakete (nur Debian Pakete)
 
* -k : alien erhöht standardmäßig die kleinere Versionsnummer (minor) um Eins nach einer Konvertierung; mit der Option wird
 
dies nicht durchgeführt
 
* --scripts : Versucht Skripte zu konvertieren, die beim Installieren oder Entfernen des Pakets ausgeführt werden
 
* -v : ausführliche Ausgabe
 
* --veryverbose : sehr ausführliche Ausgabe
 
* -V : zeigt die Version von alien an
 
 
 
Beispiele
 
 
 
Umwandlung eines Debian Pakets in ein RPM Paket
 
root@zero:~# alien --to-rpm mailutils_1%3a1.2+dfsg1-4_i386.deb
 
Warning: Skipping conversion of scripts in package mailutils: postinst preinst prerm
 
Warning: Use the --scripts parameter to include the scripts.
 
mailutils-1.2+dfsg1-5.i386.rpm generated
 
 
 
Wie oben, aber mit Skripte des Pakets
 
root@zero:~# alien '''--scripts''' --to-rpm mailutils_1%3a1.2+dfsg1-'''4'''_i386.deb
 
mailutils-1.2+dfsg1-'''5'''.i386.rpm generated
 
 
 
Umwandlung eines Debian Pakets in ein RPM Paket unter Beibehaltung der kleineren Versionsnummer
 
root@zero:~# alien --scripts -k --to-rpm mailutils_1%3a1.2+dfsg1-'''4'''_i386.deb
 
mailutils-1.2+dfsg1-'''4'''.i386.rpm generated
 
 
 
 
 
==sources.list wheezy==
 
<pre>
 
deb http://httpredir.debian.org/debian wheezy main
 
deb-src http://httpredir.debian.org/debian wheezy main
 
 
 
deb http://httpredir.debian.org/debian wheezy-updates main
 
deb-src http://httpredir.debian.org/debian wheezy-updates main
 
 
 
deb http://security.debian.org/ wheezy/updates main
 
deb-src http://security.debian.org/ wheezy/updates main
 
 
 
</pre>
 
 
 
=Locakles Repository=
 
==Benötigte Pakete==
 
apt-get install apt-mirror
 
==Konfiguration==
 
vi /etc/apt/mirror.list
 
*Repositorys eintragen die man Spiegeln will
 
*Mirror erstellen
 
apt-mirror
 
*Mirror nutzbar machen
 
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu
 
 
 
=Debian Paket erstellen=
 
==How to==
 
*Paketordner erstellen:
 
mkdir paketordner
 
mkdir paketordner/usr
 
mkdir paketordner/DEBIAN
 
*Control-file erstellen und anpassen:
 
vi paketordner/DEBIAN/control
 
*Beispielinhalt von '''control''' file
 
Package: namedesprogrammes
 
Version: 0.7
 
Section: admin
 
Priority: optional
 
Architecture: all
 
Essential: no
 
Depends:
 
Installed-Size: 400
 
Maintainer: Name des Paketerstellers <name@adresse.com>
 
Description: Dies ist die Beschreibung des Paketes"
 
*Programm im '''usr''' Ordner platzieren. Beispiel:
 
/usr/share/namedesprogrammes/programm.sh
 
*Ausführskript '''usr/bin/namedesprogrammes''' platzieren:
 
#!/bin/bash
 
cd /usr/share/namedesprogrammes
 
./programm.sh
 
:Ausführbar machen
 
chmod a+rx /usr/bin/namedesprogrammes
 
*Eintrag im Anwendungsmenü:
 
;unter
 
/usr/share/applications
 
;Textdatei erstellen
 
namedesprogrammes.desktop
 
;und (angepassten) Text einfügen
 
[Desktop Entry]
 
Encoding=UTF-8
 
Name=namedesprogrammes
 
Comment=Dies ist ein Kommentar welcher beim Ueberfahren mit der Maus angezeigt wird
 
Exec=namedesprogrammes
 
Terminal=false
 
Type=Application
 
Categories=GNOME;GTK;System;
 
*Programm ein Symbol zuweisen
 
;Ordner anlegen:
 
usr/share/pixmaps
 
;Symboldatei platzieren:
 
namedesprogrammes.png
 
;In namedesprogrammes.desktop-Datei Zeile einfügen:
 
Icon=namedesprogrammes.png
 
*Paket erstellen
 
dpkg -b paketordner namedesprogrammes-0.7-all.deb
 
 
 
= Entpacken =
 
apt-get install binutils # enthält "ar" zum entpacken von *.deb Dateien
 
 
 
<pre>
 
#!/bin/bash
 
 
 
phrase=xinux
 
 
 
extract_deb() {
 
  deb="$1"
 
  package="${deb/_*/}"
 
  mkdir -pv "${package}/DEBIAN"
 
  cd "${package}"
 
  ar x "../${deb}"
 
  tar xvf "control.tar.gz" -C "DEBIAN/"
 
  tar xvf "data.tar.gz"
 
  rm "control.tar.gz"
 
  rm "data.tar.gz"
 
  sed -i "s/^Version: \(.*\)ubuntu/Version: \1$phrase/" "DEBIAN/control"
 
  version=$(grep -o "^Version:.*$phrase.*" 'DEBIAN/control')
 
  [ -z "$version" ] && (
 
    sed -i "s/^Version: \(.*\)$/Version: \1${phrase}1/" 'DEBIAN/control'
 
  )
 
  cd - >/dev/null
 
}
 
 
 
build_deb() {
 
  package="$1"
 
  version=$(grep -e ^Version "$package/DEBIAN/control" | sed -e 's/.*: //' -e 's/:/%3a/g' )
 
  arch=$(grep -e ^Arch "$package/DEBIAN/control" | sed 's/.*: //')
 
  dpkg -b "$package" "${package}_${version}_${arch}.deb"
 
}
 
 
 
case $1 in
 
xf)
 
  dir=$(dirname "$2")
 
  cd "$dir"
 
  extract_deb $(basename "$2")
 
;;
 
cf)
 
  dir=$(dirname "$2")
 
  cd "$dir"
 
  build_deb $(basename "$2")
 
;;
 
x)
 
  dir="$2"
 
  [ -z "$dir" ] && dir='.'
 
  cd "$dir"
 
  for deb in $(ls *.deb | grep -v "$phrase")
 
  do
 
    extract_deb "$deb"
 
  done
 
;;
 
c)
 
  dir="$2"
 
  [ -z "$dir" ] && dir='.'
 
  cd "$dir"
 
  find -maxdepth 1 -type d | \
 
  sed '/^\.$/ d' | \
 
  sed 's#^\./##' | \
 
  while read package
 
  do
 
    build_deb "$package"
 
  done
 
;;
 
*)
 
  echo -e "Usage: $0 command file
 
\txf\textract file
 
\tx\textract dir
 
\tcf\tbuild package from package-dir
 
\tc\tbuild packages from dir"
 
;;
 
esac
 
</pre>
 
 
 
=debmirror=
 
nur trusty ...
 
 
 
*debmirror -a amd64 -d trusty -s main,universe --nosource  -h archive.ubuntu.com --progress  /mnt/md0/data/www/ubuntu/mirror/trusty >> /var/log/debmirror
 
 
 
 
 
=pre und post scripte=
 
*/var/lib/dpkg/info/
 

Aktuelle Version vom 3. Mai 2025, 12:46 Uhr