MSYS (MSYS2) portabel machen

1078
user287749

Unter Windows habe ich einen C: \ msys32-Ordner (der meiner Meinung nach eine MSYS2-Installation enthält) für / von einer ESP32-Entwicklungsumgebung (in ~ / esp) erstellt. Der MSYS-Home-Ordner enthält meinen Windows-Benutzernamen.

Wenn ich nun die Installation auf einen anderen Computer kopiere, ändert der Ordner plötzlich Namen, die ich selbst als störend empfinde, da dies nicht "mein Ordner" ist. Dies ist nur ein Name, um eine Linux-Anforderung zu umgehen. kanonischer) Name wie "Benutzer".

Dies bedeutet, dass meine Installation nicht portierbar ist. Wenn ich den msys32-Ordner auf einen anderen Computer kopiere, ist entweder alles kaputt oder macht keinen Sinn. Für mich wäre es am besten, wenn der Benutzername einfach aus dem Pfad entfernt würde, aber ich nehme den zweiten Platz, nämlich einen festen Namen. Wie kann ich das machen?

PS Ich verstehe das Ziel von msys, eine Linux-Umgebung neu zu erstellen, aber bedenken Sie, dass "Multi-User" in der heutigen Welt ein Dinosaurier ist, in dem die meisten Leute "Multi-Computer" sind.

2
Es sollte portabel sein, aber wenn Ihr Benutzername auf der neuen Maschine anders ist, wird eine neue / home / erstellt.Verzeichnis natürlich. Es ist auch möglich, dass einige Änderungen in / etc / fstab oder / etc / passwd vorgenommen wurden. Neuere Versionen von cygwin / msys benötigen / etc / passwd nicht und in Ihrem Fall ist auch eine benutzerdefinierte / etc / fstab nicht notwendig, denke ich. T Nierath vor 5 Jahren 0
@TNierath Hinweis Ich möchte diese Dinge ausdrücklich NICHT wissen: tragbar ist tragbar. Der Benutzername ist redundant. Dies ist keine echte Installation, sondern nur eine Entwicklungsumgebung. Das "natürlich", das Sie erwähnen, ist für mich wirklich nicht "natürlich". DasSie erwähnen, besser etwas Festes. Ich glaube, dass die meisten Benutzer besser bedient werden, da sich niemand um die Benutzernamen kümmert, solange sie unterschiedlich sind. Aber danke, Sie wissen offensichtlich, wovon Sie sprechen. user287749 vor 5 Jahren 0
Beachten Sie, dass dies bei einer portablen Installation wirklich zu Bruch geht: Apps wie Eclipse verwenden den Home-Ordner, und dies ist falsch. Eine globale Suche und Ersetzung des Benutzernamens wird nicht aufgelöst. user287749 vor 5 Jahren 0
Nun, es ist in diesem Sinne nicht tragbar. Cygwin simuliert eine POSIX-Umgebung, dh wenn Sie eine Shell starten, erwartet sie einen Benutzernamen, der von Ihrem Windows-Konto abgeleitet wird. Die Programme in / usr / bin und die Einstellungen in / etc sind immer gleich, da es sich um globale Einstellungen handelt. Für Ihre Bedürfnisse sollte es keine Rolle spielen, ob ein neues Benutzerverzeichnis mit Standardkonfigurationsdateien im laufenden Betrieb erstellt wird. Da die Installation jedoch von "ESP32" erstellt wurde, konnte die / etc-Konfigurationsdatei geändert werden. T Nierath vor 5 Jahren 0
@TNierath "Das heißt, wenn Sie eine Shell starten, erwartet sie einen Benutzernamen, der von Ihrem Windows-Konto abgeleitet wird". Das mag Ihnen völlig logisch erscheinen, ist es aber wirklich nicht. Warum sollte dieser Benutzername mit meinem Windows-Konto identisch sein? Warum erlaubt es mir * mir nicht zu wählen? Diese einfache Option würde Portabilität ermöglichen. Portabilität bedeutet das Ende vieler Frustrationen, für die normale Menschen keine Zeit oder Mittel haben, um sie zu lösen. Aber es gibt keine Möglichkeit, einen vom Benutzer ausgewählten Benutzernamen (oder einen privaten Ordner) zu erzwingen. Vielen Dank. user287749 vor 5 Jahren 0
Ja, Sie können einfach einen benutzerdefinierten Basisordner festlegen. Dies kann über / etc / fstab oder einfach durch Festlegen von% HOME% als normale Windows-Umgebungsvariable erfolgen. Weitere Informationen finden Sie unter: https://cygwin.com/cygwin-ug-net/ntsec.html T Nierath vor 5 Jahren 0
Durch die Bearbeitung von /msys32/etc/nsswitch.conf und das Ändern von db_home in / home / user werden zumindest Änderungen im Home-Pfad vermieden. Ich muss noch bestätigen, ob dies ausreicht (für den Benutzernamen geht noch etwas anderes). Bitte @TNierath füge eine Antwort hinzu, damit ich dir Kredit geben kann. user287749 vor 5 Jahren 0
Wenn Sie keine vollständige MSYS-Umgebung benötigen, können Sie [mobaxterm] (https://mobaxterm.mobatek.net/download-home-edition.html) mit einer portablen Version verwenden phuclv vor 5 Jahren 0

3 Antworten auf die Frage

0
T Nierath

Ich bin mir nicht ganz sicher, was ich davon halten soll "alles bricht oder macht keinen Sinn" und ob ich Ihnen dabei helfen kann.

In Bezug auf die verschiedenen Benutzerprofile, Home-Pfade, Benutzernamen und deren Beziehung zueinander. Beachten Sie, dass jedes lokale Benutzerkonto unter Windows sowieso immer eindeutig ist. Sie können sich bei zwei Windows-Computern mit demselben Kontonamen und demselben Kennwort anmelden, die SIDs sind jedoch immer unterschiedlich. Dies ist normalerweise für Sie unerheblich, nur weil die Standard-Dateiberechtigungen für "Authentifizierte Benutzer" und ähnliche abstrakte Gruppen festgelegt sind.

In ähnlicher Weise kümmern Sie sich unter Unix normalerweise um den Inhalt Ihres Home-Ordners und um die Dateizugriffsrechte. Abgesehen davon sind der Benutzername oder die zugrunde liegende UID nicht von großer Bedeutung, es ist lediglich der Name, den Sie beim Anmelden angeben müssen.

Wenn "ESP32" nicht mit den /etcKonfigurationsdateien freaky war, sollten die Dinge einfach funktionieren, egal wie der Benutzername auf der Eingabeaufforderung angezeigt wird. Die Einstellung %HOME%über die Windows-Systemeigenschaften ist mein bevorzugter Ansatz, um mein benutzerdefiniertes Ausgangsverzeichnis anzugeben, da Programme wie das Windows-Build von Emacs respektieren auch diese Einstellung. Wenn Sie eine vollständig in sich geschlossene, tragbare Lösung für genau einen Benutzer wünschen, /etc/nsswitch.confsollten Sie dies tun.

Genaue Information:

PS: Msys ist eine von Cygwin abgeleitete Build-Umgebung, die dem Windows-Port von gcc und Freunden (zusammenfassend als mingw bezeichnet) beim Erstellen von Software unter Windows dient, die theoretisch plattformübergreifend ist, jedoch hauptsächlich auf Unix basiert und zum Erstellen auf Unix-Tools angewiesen ist. Das ist es. Cygwin geht weit über das hinaus, und wenn Sie beispielsweise einen SSH-Server mit Privilegentrennung ausführen möchten, wird Cygwin de-facto aufgrund von Problemen wie Dateiberechtigungsproblemen und fehlenden Konten nicht mehr portabel.

Ich habe Ihnen wegen meiner niedrigen Punktzahl in diesem Abschnitt keine Noten gegeben, deshalb habe ich dies in einigen anderen Fragen getan user287749 vor 5 Jahren 0
0
user287749

Für meine Bedürfnisse war es ausreichend, "db_home: / home / user" in "C: \ msys32 \ etc \ nsswitch.conf" zu bearbeiten, bevor Sie mingw32.exe ausführen.

Nach dem Ausführen von ming32.exe wird c: \ msys32 \ home \ user mit den üblichen Dateien erstellt. Es ist der neue Heimatordner. Jetzt sind alle Pfade im Benutzerraum konstant und Installationen können gezippt und auf einen anderen PC kopiert werden. Alle Installationsprobleme verschwinden.

0
ollydbg23

Heute habe ich hier ein schönes msys2-Paket gefunden: MSYS2 Portable 2017.09.18 Dev Test 1 | PortableApps.com - Portable Software für USB-, tragbare und Cloud-Laufwerke