Как сделать MSYS (MSYS2) портативным

884
user287749

В Windows у меня есть папка C: \ msys32 (содержащая то, что я считаю установкой MSYS2), созданная для / средой разработки ESP32 (находится в ~ / esp). Домашняя папка MSYS содержит мое имя пользователя Windows.

Теперь, когда я копирую эту установку на другой компьютер, эта папка внезапно меняет имена, которые меня беспокоят, так как это не «моя папка», это просто имя, чтобы обойти требование Linux, оно может быть исправлено ( каноническое) имя, такое как «пользователь».

Что еще более важно, это означает, что моя установка не переносима. Когда я копирую папку msys32 на другой компьютер, все либо ломается, либо не имеет никакого смысла. Для меня было бы лучше, если бы это имя пользователя было просто удалено из пути, но я возьму второе, то есть дать ему фиксированное имя. Как я могу это сделать?

PS Я понимаю, что цель msys - воссоздать среду Linux, но учтите, что «многопользовательский» - это динозавр в современном мире, где большинство людей «многопользовательские».

2
Он должен быть переносимым, но если ваше имя пользователя на новом компьютере будет другим, то он создаст новый / home /каталог конечно. Также возможно, что произошли некоторые изменения в / etc / fstab или / etc / passwd. Более новые версии cygwin / msys не нуждаются в / etc / passwd, и в вашем случае пользовательский / etc / fstab также не нужен, я думаю. T Nierath 5 лет назад 0
@TNierath Примечание Я явно НЕ хочу знать эти вещи: портативный это портативный. Имя пользователя является избыточным, это не настоящая установка, а просто среда разработки. Так что «конечно», о котором вы говорите, на самом деле не «конечно» для меня. ТотВы упоминаете, лучше быть что-то исправлено. Я считаю, что лучше будет посещать большинство пользователей, так как никто не заботится об именах пользователей, если они различаются. Но спасибо, вы, очевидно, знаете, о чем говорите. user287749 5 лет назад 0
Обратите внимание, что это действительно нарушает переносимые установки: приложения, такие как Eclipse, используют домашнюю папку, и это будет неправильно. Глобальный поиск и замена имени пользователя не разрешаются. user287749 5 лет назад 0
Ну, это не портативно в этом смысле. Cygwin имитирует среду POSIX, то есть, когда вы запускаете оболочку, она ожидает имя пользователя, которое получено из вашей учетной записи Windows. Программы в / usr / bin и настройки в / etc всегда одинаковы, так как они являются глобальными настройками. Для ваших нужд не должно иметь значения, создается ли новый пользовательский каталог с файлами конфигурации по умолчанию. Однако, поскольку установка была создана "ESP32", она могла изменить файлы конфигурации / etc. T Nierath 5 лет назад 0
@TNierath «это означает, что когда вы запускаете оболочку, она ожидает имя пользователя, которое получено из вашей учетной записи Windows». Это может показаться вам совершенно логичным, но на самом деле это не так. Почему это имя пользователя должно совпадать с моей учетной записью Windows? Почему это не позволяет * мне * выбирать? Этот простой вариант сделает возможным переносимость. Переносимость означает конец многих разочарований, из-за которых у нормальных людей нет времени или средств для решения. Но, во всяком случае, нет способа заставить выбранное пользователем имя пользователя (или домашнюю папку)? Благодарю. user287749 5 лет назад 0
Да, вы можете просто установить собственную домашнюю папку, это можно сделать через / etc / fstab или просто установив% HOME% в качестве обычной переменной среды Windows. Для получения дополнительной информации см .: https://cygwin.com/cygwin-ug-net/ntsec.html T Nierath 5 лет назад 0
редактирование /msys32/etc/nsswitch.conf и изменение db_home на / home / user по крайней мере позволяет избежать изменений в домашнем пути. Мне еще предстоит подтвердить, достаточно ли этого (для имени пользователя продолжается еще что-то). Пожалуйста, @TNierath добавить ответ, чтобы я мог дать вам кредит. user287749 5 лет назад 0
если вам не нужна полная среда MSYS, вы можете использовать [mobaxterm] (https://mobaxterm.mobatek.net/download-home-edition.html) с переносной версией phuclv 5 лет назад 0

3 ответа на вопрос

0
T Nierath

Я не совсем уверен, что делать со «все или ломается, или не имеет никакого смысла», и если я могу помочь вам с этим.

Относительно различных профилей пользователей, домашних путей, имен пользователей и того, как они связаны друг с другом. Имейте в виду, что каждая учетная запись локального пользователя в Windows всегда уникальна, вы можете войти на две машины Windows с одинаковым именем учетной записи и одним и тем же паролем, но их идентификаторы безопасности всегда разные. Это обычно не имеет значения для вас, только потому, что разрешения для файлов по умолчанию установлены для «Прошедших проверку» и подобных абстрактных групп.

Точно так же в Unix вы обычно заботитесь о содержимом вашей домашней папки и правах доступа к файлам, кроме того, что имя пользователя или базовый UID не представляют большой проблемы, это просто имя, которое вы должны указать при входе в систему.

Если «ESP32» не сделал что-то странное с /etcфайлами конфигурации, все должно работать, независимо от того, какое имя пользователя указано в приглашении, поэтому настройка %HOME%через системные свойства Windows - мой предпочтительный подход для указания моего собственного домашнего каталога, поскольку такие программы, как сборка Windows Emacs также уважает этот параметр. Если вы хотите полностью автономное портативное решение для ровно одного пользователя, то вам /etc/nsswitch.confследует выполнить эту работу.

Подробная информация:

PS: Msys - это среда сборки, основанная на cygwin, которая помогает порту gcc и друзьям в Windows (вместе именуемым mingw) создавать программное обеспечение для Windows, теоретически кроссплатформенное, но в основном построенное на Unix и использующее инструменты Unix для сборки. Вот и все. Cygwin стремится намного выше этого, и если вы хотите, например, запустить ssh-сервер с разделением привилегий, то Cygwin де-факто перестает быть переносимым из-за таких вещей, как проблемы с правами доступа к файлам и отсутствие учетных записей.

Мне было запрещено давать вам оценки, учитывая мой низкий балл в этом разделе, поэтому я сделал это в некоторых других вопросах user287749 5 лет назад 0
0
user287749

Для моих нужд было достаточно отредактировать «db_home: / home / user» в «C: \ msys32 \ etc \ nsswitch.conf» перед запуском mingw32.exe.

После запуска ming32.exe будет создан каталог c: \ msys32 \ home \ user с обычными файлами в нем. Это новая домашняя папка. Теперь все пути в пользовательском пространстве являются константами, и установки могут быть заархивированы и скопированы на другой ПК, и все проблемы установки исчезнут.

0
ollydbg23