Примеров таких велосипедов тьма тьмущая:
- https://github.com/mcorah/configs/blob/master/install.sh
- https://github.com/nathschmidt/bashrc/blob/master/install.sh
Я думаю и вы писали подобный велосипед. Так что мне пришло в голову это дело обобщить. Быстрый поиск не дал результатов и я написал свою поделку. Может что похожее уже и есть, но мне пока никто на это не указал. Вот как теперь выглядит README.md файл моего репозитория с конфигами:
In order to install config please do:
cd /tmp
git clone https://github.com/OwnInfrastructure/configs.git
cd configs
RC_PATH=.commonrc
curl -s https://raw.githubusercontent.com/b0noI/rcinstaller/master/install.sh | bash /dev/stdin $RC_PATH
Важно обратить внимание вот сюда:
curl -s https://raw.githubusercontent.com/b0noI/rcinstaller/master/install.sh | bash /dev/stdin $RC_PATH
Это пример использования того самого фреймворка с названием “rcinstaller”. Репозиторий с ним можно найти вот тут.
Теперь вам нужно лишь создавать конфиги, а их интеграцию можете оставить этой поделке.
Как начать использовать это на своем репозитории
Проще не бывает, просто добавьте в ваш README файл что-то вроде:
curl -s https://raw.githubusercontent.com/b0noI/rcinstaller/master/install.sh | bash /dev/stdin <path_to_my_awesome_rc_file>
Что эта штука умеет делать?
На момент написания статьи скрипт выполнял нехитрый список шагов:
- Проверяет существует ли директория ~/.profile.d, и если нет то создает ее.
- Добавлчет в .zshrc (если там еще нету этого): “[ -f ${HOME}/.profile.d/.sh ] && source ${HOME}/.profile.d/.sh” .
- Тоже самое но для .bashrc.
- Копирует заданный скрипт в ~/.profile.d.
Как нетрудно догадаться, ваш конфиг должен иметь уникальное имя, так как скрипт тупо перезатрет существующий файл с таким же именем. Пока что поддерживается только один скрипт за раз.
Как вы можете помочь проекту
Если хочется помочь — есть список задач и багов. Ну и конечно можно зайти на мою страничку на Patreon.
ВНИМАНИЕ!
Добрый люди мне уже объяснили что такое использование curl может быть не совсем безопасным.
Комментарии (15)
overmind88
05.01.2017 15:48Я недавно тоже озаботился синхронизацией и автоматизацией установки дотфайлов и остановился на таком решении https://github.com/anishathalye/dotbot
Пока нравитсяfoxmuldercp
06.01.2017 01:12wget mysite.com/.zshrc|,tmux.conf с перелогином в систему решают все мои проблемы сразу
RumataEstora
05.01.2017 17:35Присматривался ко многим коллекциям dotfiles. В настоящее время остановился на .bashrc следующего содержания:
if [ -d "${HOME}/.bash" ] then # Environment, functions, some setings and aliases: in this order for f in "${HOME}/.bash/environ" $( ls ${HOME}/.bash/functions-* 2>/dev/null ) $( ls ${HOME}/.bash/settings-* 2>/dev/null ) "${HOME}/.bash/aliases" do [ -f "$f" ] && . "$f" done fi
Работает под cygwin/linux. Поддерживаю только bash — другие не держим.
Borz
05.01.2017 23:34зачем? этот "велосипед" выполняется ровно один раз — при создании профиля пользователя в системе. Тоже использую подобный "велосипед" из первой ссылки, в котором есть "ln -s ~/Dropbox/.bash_aliases ~/" — этого вполне достаточно, чтобы настроить окружение, т.к. этот файл (~/.bash_aliases) ищется по-умолчанию в debian-based ОС.
iborzenkov
06.01.2017 01:02Быстрый поиск не дал результатов и я написал свою поделку.
http://dotfiles.github.io/
Ну серьезно. Тонны всего уже написано, менеджеры конфигураций, плагинов для bash,zsh,vim и прочего.
Все в олпенсорсе и многое в репах дистрибутивов.
Как вы можете помочь проекту
Лопату принести? Просто после 37 строчек постить Patreon это уже ни в какие ворота.safinaskar
06.01.2017 01:50+1Аааааа! Автора душит жаба. В своей странице на Patreon он обещает обязательно отвечать на комменты за три бакса в месяц (!!!)
rumkin
06.01.2017 01:34+5Нет, нет и еще раз нет! Это извращение! Это не unix-way. Это просто кошмар.
(Простите за эмоциональность, но это правда отвратительно и оскорбительно для меня как адепта unix)
Вот как делать это по канону:
- Создайте в
$HOME
директориюprofile.d
и складывайте туда ваши скрипты. - Добавьте всего одну строку в файл
$HOME/.profile
:
[ -f ~/.profile.d/*.sh ] && source ./profile.d/*.sh
- Забудьте про патчинг profile-файла навсегда.
Если нужно что-то отключить используете
mv
. Если нужно посмотреть, что сейчас подключается используетеls
. Удалить –rm
.
Чтобы не делать это для всех пользователей, сделайте это один раз для пользовательского шаблона (для убунту
/etc/skel
).
Все.
b0noII
06.01.2017 09:03а вот это очень дельно, спасибо, на выходных переделаю скрипт и обновлю REDME. Вот только ради одного этого комментария уже стоило пистаь статью =).
b0noII
09.01.2017 00:38Скрипт измене и теперь работает ближе к той схеме которую вы описали, спасибо большущее!
- Создайте в
Sirikid
Почему нельзя просто написать makefile? Ой, мейкфайлы умеют писать только замшелые сишники и их фанаты.
foxmuldercp
Я, например, ни c, ни с++ не знаю, да и пёрловку не очень умею готовить, но мейкфайл для сборки, например, своей первой версии статического сайта с помощью mandoc, написал неспешно под полтора литра пива и двухчасовой концерт Скорпионс.
Так что не надо тут обижать никого
Sirikid
Никого не хотел обидеть, разве что "велосипедистов", но когда я осознал что ошибся комментарий "стух" и ни удалить, ни стереть его уже было нельзя. А правильные мейкфайлы рулят.
b0noII
Простите, а как makefile решит проблему того что для репозитория с конфигом нужно что-то писать (в данном случае makefile)? Или коментарий не по соновной проблеме которую решаем а о том что в предложенном пути можно вместо shell скрипта использовтаь Makefile?
Sirikid
Не решит, я сначала не совсем понял о чем пост