Чтобы определить, как удалить часть программного обеспечения, установленного таким образом, вам нужно прочитать сценарий, используемый для выполнения установки, и определить, что он сделал, а затем отменить это. Использование паттернов стиляcurl | sh
-означает, что скрипт установки не сохраняется, поэтому нам нужно загрузить текущую версию и надеяться, что его поведение не изменилось с момента установки.
В данном конкретном случае удаление выполняется просто, если исходить из значений по умолчанию.:
~/.mos/bin/mos
— это единственный файл, добавляемый при установке; ~/.mos/bin
пусто, удалить его, а затем, если ~/.mos
пусто, удалить его; ~/.bashrc
или ~/.profile
, чтобы удалить строку, добавив ~/.mos/bin
к PATH
. Если вы указали другой DESTDIR
при установке, вам нужно вместо этого удалить mos
из этого каталога.
файлы создаются пользователем, работающим внутри контейнера. если ваша контейнерная команда запускается как root
, то все файлы будут созданы как root.
Если вы хотите, чтобы ваши файлы создавались от имени другого пользователя, запустите контейнер от имени этого другого пользователя. например.
docker run -v "$(pwd)/output":/root/output -u $(whoami) test
примечание :в зависимости от вашего контейнера это может не работать из коробки (например. потому что внутри контейнера вам нужно открыть привилегированный порт, или ваш скрипт доступен только данному (суперпользователю ))
У меня тоже была эта проблема, но, вероятно, по другой причине, чем у большинства здесь, и я хотел бы избавить тех, кто находится в одной лодке, с некоторым разочарованием.
У меня двойная загрузка, а образы и код Docker хранились на диске NTFS -3G. Я пробовал все грязные трюки с chmod и chown, но это просто не сработало.
Когда пенни упал с NTFS -3G был причиной проблемы, я вернул Docker к конфигурации по умолчанию. Затем изображения и контейнеры находятся в /var/lib/docker
, а мой код я переместил в ~/code/project
.
Теперь снова летает с вменяемыми разрешениями после запуска контейнера.