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?
> 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...
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
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
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/
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.
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.
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.
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
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
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.
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.
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
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
Danke für die ausführlichen Erläuterungen, ist mir jetzt etwas klarer geworden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.