Forum: PC Hard- und Software Installation von Programmen unter Linux


von Markus (Gast)


Lesenswert?

Hallo,

für den Selbstbau einer NAS nutze ich eingefleischter Windows-Nutzer 
neuerdings ein Linux-Derivat, in dem Fall OpenMediaVault basierend auf 
Debian.

Was ich nicht verstehe: Wie werden Programme unter Linux installiert ?

Unter Windows lade ich von der Herstellerseite eine setup.exe oder 
*.msi-Datei, doppelklicke darauf und die Installation läuft.

Unter Linux werden 'Pakete' genutzt und z.B. mit apt-get installiert. 
Das prinzipielle Vorgehen ist mir schon klar, offene Fragen sind:

- angenommen ich würde ein Programm veröffentlichen wollen, wie bekomme 
ich das denn überhaupt in so eine Paketquelle aufgenommen? Was müßte ich 
machen, wenn ich Updates herausgebe ?

- um meine Windows-Programme im Falle von Neuinstallationen nicht jedes 
Mal von neuem irgendwo herunterladen zu müssen, habe ich sie auf einer 
externen Festplatte abgespeichert. Ist soetwas unter Linux total 
unüblich? Interessante Programme müßte ich dann nach Möglichkeit als 
*.deb archivieren?

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

> Ist soetwas unter Linux total
> unüblich?

Nein. Paketarchive lassen sich wunderbar z.B. firmenintern sowohl auf 
einem eigenen, lokalen Paketserver hörten als auch offline auf 
HD/CD/DVD vorhalten.
Was meinst Du wie Debian im letzten Jahrhundert verteilt wurde, als die 
Leitung nach Hause so knapp 56kbit/s her gab? Genau: Paketarchive auf n 
CDs, abgegriffen per apt-get / dpkg

> Interessante Programme müßte ich dann nach Möglichkeit als
> *.deb archivieren?

Jagenau, kann man so machen. Aber vergiss nicht die Abhängigkeiten der 
Pakete untereinander zu berücksichtigen...

von wendelsberg (Gast)


Lesenswert?

Markus schrieb:
> - um meine Windows-Programme im Falle von Neuinstallationen nicht jedes
> Mal von neuem irgendwo herunterladen zu müssen, habe ich sie auf einer
> externen Festplatte abgespeichert. Ist soetwas unter Linux total
> unüblich? Interessante Programme müßte ich dann nach Möglichkeit als
> *.deb archivieren?

Wenn man ueber eine Internetverbindung verfuegt, ist es unueblich.
Die Pakete werden haeufig aktualisiert, ausserdem ist das Herunterladen 
von "irgendwo" nur in Ausnahmefaellen noetig.
1
apt-get install PAKET

holt sich das richtige Paket passend zur restlichen Installation und die 
Pakete, die es braucht und installiert alle diese.

Etwas naeher an WIN ist
1
aptitude
noch naeher ist eine graphische Oberflaeche dazu. Da gibt es dann auch 
wieder Klickibunti.

wendelsberg

von Aa B. (aaab)


Lesenswert?

Markus schrieb:
> Hallo,
>
> für den Selbstbau einer NAS nutze ich eingefleischter Windows-Nutzer
> neuerdings ein Linux-Derivat, in dem Fall OpenMediaVault basierend auf
> Debian.
>
> Was ich nicht verstehe: Wie werden Programme unter Linux installiert ?
>
> Unter Windows lade ich von der Herstellerseite eine setup.exe oder
> *.msi-Datei, doppelklicke darauf und die Installation läuft.
>
> Unter Linux werden 'Pakete' genutzt und z.B. mit apt-get installiert.
> Das prinzipielle Vorgehen ist mir schon klar, offene Fragen sind:
>
> - angenommen ich würde ein Programm veröffentlichen wollen, wie bekomme
> ich das denn überhaupt in so eine Paketquelle aufgenommen? Was müßte ich
> machen, wenn ich Updates herausgebe ?
>
> - um meine Windows-Programme im Falle von Neuinstallationen nicht jedes
> Mal von neuem irgendwo herunterladen zu müssen, habe ich sie auf einer
> externen Festplatte abgespeichert. Ist soetwas unter Linux total
> unüblich? Interessante Programme müßte ich dann nach Möglichkeit als
> *.deb archivieren?

wenn Du *.deb packages runtergeladen hast, kannst du mit
1
sudo dpkg --install *.deb
 die entsprechende packages (mit Root rechte häufig) installieren

: Bearbeitet durch User
von Alexander S. (alesi)


Lesenswert?

Markus schrieb:
> Was ich nicht verstehe: Wie werden Programme unter Linux installiert ?

Hallo Markus,

eine Beschreibung der Debian-Paketverwaltung findest Du z.B.

im Debian wiki:

  https://wiki.debian.org/PackageManagement

oder auf deutsch im Debian-Paketmanagement-Buch

  http://www.dpmb.org/

von Reinhard S. (rezz)


Lesenswert?

Markus schrieb:
> - um meine Windows-Programme im Falle von Neuinstallationen nicht jedes
> Mal von neuem irgendwo herunterladen zu müssen, habe ich sie auf einer
> externen Festplatte abgespeichert.

Funktionieren die mit einem Windows, auf dem sie nicht installiert 
wurden, dann noch? Stichwort Registryeinträge und ähnliches.

von Peter II (Gast)


Lesenswert?

Reinhard S. schrieb:
> Funktionieren die mit einem Windows, auf dem sie nicht installiert
> wurden, dann noch? Stichwort Registryeinträge und ähnliches.

er meint den Installer.

Die meisten Programme kann man aber auch so kopieren, sie legen ihre 
Einträge beim ersten Start an.

von Gerd E. (robberknight)


Lesenswert?

Markus schrieb:
> - angenommen ich würde ein Programm veröffentlichen wollen, wie bekomme
> ich das denn überhaupt in so eine Paketquelle aufgenommen? Was müßte ich
> machen, wenn ich Updates herausgebe ?

Du veröffentlichst den Sourcecode Deines Programms unter einer Lizenz 
die Deine Distribution (hier Debian) als Open Source ansieht.

Entweder findet sich dann ein Debian-Mitarbeiter, der das Programm für 
Debian packaged und maintained und damit dann in die Debian-Distribution 
mit aufnimmt. Oder Du wirst selbst Mitglied bei Debian und machst das.

Alternativ kannst Du es auch selbst packagen und selbst bei Dir hosten. 
Dann muss der Nutzer die URL Deines Servers bei sich als Paketquelle 
hinzufügen bevor er das Programm installieren kann.

Bei anderen Distributionen läuft es ähnlich.

von Georg (Gast)


Lesenswert?

wendelsberg schrieb:
> Etwas naeher an WIN istaptitude

Viele Programme werden auch als .tar.gz geliefert, das muss man 
auspacken und erhält eine .run-Datei, die man auf ausführbar setzen muss 
(und natürlich alle anderen Rechte wie benötigt). Diese Datei kann man 
dann ausführen wie eine setup.exe, ist nur halt viel umständlicher und 
geht auch oft schief.

Georg

von Axel S. (a-za-z0-9)


Lesenswert?

Georg schrieb:
> wendelsberg schrieb:
>> Etwas naeher an WIN istaptitude
>
> Viele Programme werden auch als .tar.gz geliefert, das muss man
> auspacken und erhält eine .run-Datei, die man auf ausführbar setzen muss
> (und natürlich alle anderen Rechte wie benötigt). Diese Datei kann man
> dann ausführen wie eine setup.exe, ist nur halt viel umständlicher und
> geht auch oft schief.

So einen ScheiXX will man nicht haben.

Auf eine saubere Linux-Installation gehören ausschließlich Programme, 
die vom Package-Management-System betreut werden. Bei einem 
Debian-basierten Linux also .deb Pakete.

In seltenen Ausnahmefällen kann man Programme nach /opt oder /usr/local 
installieren oder einzelne(!) executables nach $HOME/bin kopieren. 
Allerdings entfallen damit die Vorteile des Packaging-Systems:

- Upgrades (manuell oder automatisch)
- automatisches Handling von Abhängigkeiten
- Archivierung/Mergen von Konfigurationsänderungen

von Base64 U. (6964fcd710b8d77)


Lesenswert?

Du kannst programme per Hand oder über einen Paketmanager (dpkg, 
aptitude, apt-get) in dein system ein pflegen.

Du könntest z.B. einfach ein binary nach /usr/bin/ kopieren, das ist 
aber ein ziemlicher hack und würde ich dir nicht empfehlen. Hierbei 
müsstest du dich komplett manuell über die updates kümmern, was 
eigentlich der job des paketmanagers ist.

Jeder paketmanager hat seine quellen irgendwo, bei debian ist das primär 
das /etc/apt/sources.list file.
Dort kannst du z.b auch einen eigenen paketserver eintragen.

Das dein paket in den standard repos landet wird sehr schwer sein, es 
gibt bei debian da einen guide, aber wie gesagt, lass das mal bei seite. 
Wenn du Deine Software ein paar Jahre lang entwickelt hast und eine 
große Nutzeranzahl hast schauts natürlich anderst aus.

Sonst wird software auch meist als .rpm, .deb oder .tar.gz verteilt, 
diese werden dann entweder über den paketmanager (rpm und deb) oder 
manuell (tar.gz) im system eingebracht.

von Base64 U. (6964fcd710b8d77)


Lesenswert?

Axel S. schrieb:
> Auf eine saubere Linux-Installation gehören ausschließlich Programme,
> die vom Package-Management-System betreut werden. Bei einem
> Debian-basierten Linux also .deb Pakete.

Ich bin gerade nicht ganz sattelfest, da meine Debian/Ubuntu Zeit schon 
etwas her ist, aber das hat immer noch den großen Nachteil das der 
paketmanager keine updates einspielen wird oder? Eine automatische 
Anpassung der sources.list erfolgt ja nicht. Der Vorteil besteht 
lediglich darin, dass das paket (und Abhängigkeiten) sauber gehandhabt 
werden.

von Daniel A. (daniel-a)


Lesenswert?

Markus schrieb:
> Unter Windows lade ich von der Herstellerseite eine setup.exe oder
> *.msi-Datei, doppelklicke darauf und die Installation läuft.
>
> Unter Linux werden 'Pakete' genutzt und z.B. mit apt-get installiert.

Nur bei debian und Derivaten. Andere Distributionen nutzen meist andere 
Packetformate/Packetmanager, falls diese einen haben.

> Das prinzipielle Vorgehen ist mir schon klar, offene Fragen sind:
>
> - angenommen ich würde ein Programm veröffentlichen wollen, wie bekomme
> ich das denn überhaupt in so eine Paketquelle aufgenommen? Was müßte ich
> machen, wenn ich Updates herausgebe ?

Du kanst immer selbst ein Repository und/oder andere Methoden zur 
Installation anbieten.

Im fall von debian basierten Distributionen ersetzt du das Packet in 
deinem repo einfach durch das neuere, welches eine neuere version haben 
muss. Das nächste mal, wenn der Benutzer dann mit apt-get update und 
apt-get upgrade das system aktualisiert, bekommt er dann das neuere 
(sofern er es nicht mit apt-mark hold verhindert oder das Packet neue 
Abhängigkeiten bekommen hat, die dieser noch nicht installiert hat).

Willst du dein Programm in die offiziellen Repos bekommen, musst du 
zuerst schauen, ob es dazu eine standardprozedur gibt. Danach sollte man 
sich mit den Distributoren in verbindung setzen. Meisst gibt es 
Mailinglisten und IRC chats für Distributionen/Entwickler/etc. Gerade 
bei IRC kann man schnell mal etwas nachfragen und die wichtigen Leute 
etwas kennen lernen. Am Ende ist es dann ganz den Distributoren 
überlassen, ob sie das Packet aufnehmen wollen, oder nicht.

> - um meine Windows-Programme im Falle von Neuinstallationen nicht jedes
> Mal von neuem irgendwo herunterladen zu müssen, habe ich sie auf einer
> externen Festplatte abgespeichert. Ist soetwas unter Linux total
> unüblich?

Ich habe dafür einen lokalen mirror auf meinem Server in meinem Hais, 
der mir alle Packete regelmässig herunter läd. Den verwende ich dan als 
repo für die PCs in meinem haus.

Ich habe auch ein PXE boot environment, bei dem das gesamte System auf 
einen readonly NFS Server ist, wodurch ich eigentlich keine lokale Linux 
installation mehr bräuchte.

Grundsätzlich ist es auch möglich, Programme auf externe Festplatten zu 
installieren, debian basierte Systeme sind jedoch eigentlich nicht dafür 
vorgesehen, bzw. dass man die Festplatte entfernt ist nicht vorgesehen.

Ich denke um zu verstehen wie man Programme auf externe Datenträger 
installiert, muss man ersteinmal verstehen, was alles passiert wenn man 
eins ausführt. Wenn du in der shell einen Befehl eingibst, sucht es an 
jedem Ort, der in der Umgebungsvariable PATH angegeben ist, nach einer 
ausfürbaren Datei die so heisst wie der Befehl. Dann wird diese Datei 
ausgeführt. Dabei muss diese eventuell noch Libraries laden*. Dabei wird 
an orten wie lib /usr/lib/, etc. gesucht. Mit der LD_LIBRARY_PATH 
Umgebungsvariable kann man ändern, wo nach libraries gusucht wird. Falls 
jedoch beim linken der Anwendung der Pfad der Library fest angegeben 
wurde, hilft dass nicht weiter.

Wenn man also Anwendungen an einen anderen Ort packen will, genügt es 
meistens, dieses und seine abhängigkeiten an den Wunschort zu kopieren, 
und danach einfach beim Starten den PATH und den LD_LIBRARY_PATH 
anzupassen. Dies ist aber sehr aufwendig und fehleranfällig.

Eine andere möglichkeit ist, falls möglich, das Programm beim 
Kompillieren so statisch zu linken, dass es nachher keine anderen 
abhänigkeiten mehr hat. Man hat dann eine Standalone anwendung.

Man kann auch ein Vollständiges linux System in einen Ordner auf der 
externen festplatte packen. Unter debian systemen kann man dafür z.B. 
debootstrap verwenden. Danach kann man mit chroot, oder mittels 
containertechnologie (kernel namespaces) in dieses system und darin 
Programme ausführen.

Was auch noch wichtig sein könnte: wenn du auf debian systemen in der 
/etc/apt/sources.list auch angegeben hasst, dass du auch die quell 
listen willst (deb-src), kannst du mit apt-get source die quellen holen. 
Mit apt-get build-dep kannst du die build dependencies instalieren (sind 
nicht immer vollständig). Mit debuild kannst du es dann kompilieren. Das 
kann nützlich sein, wenn man z.B. ein installationsprefix im packet 
einrichten will (meistens debian/rules anpassen dass --prefix=/irgendwo 
übergeben wird) Denke einfach daran, dass wen du etwas an einen ort mit 
apt installierst, und diesen dann entfernst, apt nicht weiss dass etwas 
fehlt. So kann man sich schnell das System kaputt machen.

> Interessante Programme müßte ich dann nach Möglichkeit als
> *.deb archivieren?

Kommt drauf an, was du damit vor hast.

* stark vereinfacht, siehe ld.so für details: 
http://man7.org/linux/man-pages/man8/ld.so.8.html

von M. K. (kichi)


Lesenswert?

Manche Programme kann man auch einfach irgendwohin kopieren und von dort 
ausführen, sofern die Abhängigkeiten installiert sind oder entsprechend 
mit dorthin kopiert wurden.

Oder man schaut ob es die gewünschte Applikation als AppImage gibt. Dort 
sind alle Abhängigkeiten mit drin und die Images können direkt 
ausgeführt werden.

In beiden Fällen gilt:

Axel S. schrieb:
> Allerdings entfallen damit die Vorteile des Packaging-Systems:
>
> - Upgrades (manuell oder automatisch)
> - Archivierung/Mergen von Konfigurationsänderungen

von Markus (Gast)


Lesenswert?

Danke für die ausführlichen Erläuterungen, ist mir jetzt etwas klarer 
geworden.

von Sven B. (scummos)


Lesenswert?

Michael K. schrieb:
> Oder man schaut ob es die gewünschte Applikation als AppImage gibt. Dort
> sind alle Abhängigkeiten mit drin und die Images können direkt
> ausgeführt werden.

Jo, das ist quasi das was Windows seit 20 Jahren immer macht: einfach 
alles reinwerfen. Hat seine Nachteile insb. bezüglich 
Sicherheitsupdates, aber funktioniert halt. Für die Entwickler ist es 
unter Windows furchtbar so einen Installer zu erstellen und unter Linux 
noch furchtbarer ... aber es funktioniert halt. Dass man für alles ein 
Debian-Paket hat was auch noch für die Debian-Version gebaut ist die da 
grad zufällig rumfliegt ist für nicht-Standard-Kram eine ziemliche 
Traumwelt ...

Am ehesten hat man da noch eine Chance mit irgendwie CentOS 6, das 
bleibt halt 10 Jahre gleich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.