From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergey Vlasov To: devel@linux.iplabs.ru Subject: Re: [devel] Re: [mdk-re] /etc/emacs/site-start.d Message-Id: <20010505171647.7044e4ca.vsu@mivlgu.murom.ru> In-Reply-To: <20010505144359.40eee02d.vsu@mivlgu.murom.ru> References: <20010505130858.499354fc.vsu@mivlgu.murom.ru> <20010505144359.40eee02d.vsu@mivlgu.murom.ru> X-Mailer: Sylpheed version 0.4.66claws2 (GTK+ 1.2.9; i586-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Sender: devel-admin@linux.iplabs.ru Errors-To: devel-admin@linux.iplabs.ru X-BeenThere: devel@linux.iplabs.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: devel@linux.iplabs.ru List-Help: List-Post: List-Subscribe: , List-Id: IPLabs Linux Team Developers mailing list List-Unsubscribe: , List-Archive: X-Original-Date: Sat, 5 May 2001 17:16:47 +0400 Date: Sat, 5 May 2001 17:16:47 +0400 Archived-At: List-Archive: List-Post: On Sat, 5 May 2001 14:43:59 +0400 Sergey Vlasov wrote: > On Sat, 5 May 2001 14:07:38 +0400 (MSD) > Ivan Zakharyaschev wrote: > > > On Sat, 5 May 2001, Sergey Vlasov wrote: > > > > > On Sat, 5 May 2001 00:39:29 +0400 (MSD) > > > Ivan Zakharyaschev wrote: > > > > > > > Я отчасти поддерживаю идею об использовании > /etc/emacs/site-start.d > > > -- > > > > по > > > > аналогии с, например, /etc/profile.d; сравнение с старт-стоп > > > скриптами > > > > не > > > > очень подхолит, так как они настраивают сервер, а profile задает > > > > конфигурацию для отдельного пользователя. > > > > > > > > Удобство такой директории понятно: не нужно лезть в один файл, > чтобы > > > > что-то добавить, достаточно просто положить в директорию. > > > > > > > > Но есть, по-моему, и большие неудобства. Они связаны как раз с > > > разницей > > > > между initscripts и profile: раз это конфигурация для > пользователя, > > > то > > > > неплохо бы каждому отдельному пользователю иметь контроль над тем, > > > что у > > > > него будет грузиться, а что нет. А тут получается, как > администратор > > > > скажет, так всем и жить. > > > > > > Можно попробовать решить эту проблему, создав структуру > директорий, > > > > похожую на ту, что есть в initscripts: есть > > /etc/emacs/site-start.d/, > > > > где > > > > лежат скрипты, но не выполняются, и у каждого есть > > > > ~/.emacs/site-start.d/, > > > > куда кладутся ссылки на реальные скрипты из > /etc/emacs/site-start.d/ > > > > (можно будет их включать/выключать у разных пользователей, как и > > > сервисы > > > > в разных runlevels). Не слишком ли это громоздко? > > > > > > Не получится, ~/.emacs уже занят. :-) > > > > > > Ладно, имя придумать можно, но опять же после установки пакета в > этот > > > каталог автоматически ничего не попадет, и опять у начинающих > > > пользователей возникнут вопросы - "а вот я тут поставил XXX, а его > не > > > видно". А вариант с помещением команд загрузки в /etc/skel*/.emacs, > > > чтобы > > > они попадали в ~/.emacs каждому новому пользователю, не лучше? Кому > не > > > нравится автозагрузка - может удалить их и загружать частями только > > то, > > > что ему нужно. > > > > skel-то этим и неудобен: он одноразового использования и изменения > > отразяться только на вновь создаваемых пользователях. > > > > Чтобы у всех сразу заработало то, что ставится новое, можно сделать > так, > > чтобы изначально у только что созданного пользователя этот > > ~/.emacs-user-start.d был просто ссылкой на /etc/emacs/site-start.d/ > > (или > > какое-нибудь другое место, в котором лежат все возможные скрипты > > автозагрузки для Emacs -- название site-start.d тут не очень > подходит). > > И > > тогда такой пользователь будет получать все новое, совершая минимум > > усилий > > головой и пальцами: у него будет грузиться все. > > > > Если же он задумается об этом и захочет сам определить набор того, что > > будет авто-загружаться у него, то он сможет убрать ссылку > > /.emacs-user-start.d, и завести на ее месте свою директорию, внутри > > которой будут свои скрипты и ссылки на отдельные скрипты из общей > > /etc/emacs/site-start.d/. Перед таким пользователем проблемы в том, > что > > что-то у него не запускается, хотя это и установлено, стоять не > должно: > > он > > сам на себя взял ответственность за слежение за этим. Для облегчения > его > > работы можно сделать специальный скрипт наподобие chkconfig. > > > > Может, это и слишком громоздко, но большинство пользователей будет > > избавлено от соприкосновения с этим ссылкой на общую > > /etc/emacs/site-start.d/. Ее-то и надо положить в /etc/skel*. > > > > Кажется, что никаких преимуществ такой конструкции по сравнению с > > использованием просто ~/.emacs нет. Но они все-таки есть: все > > существующие > > пользователи при раскладе по умолчанию будут получать автозагружаемыми > > новые, установленные после появления этих пользователей компоненты > > Emacs. > > Я предлагал добавить в /etc/skel*/.emacs следующее: > > (mapcar 'load-file (directory-files "/etc/emacs/site-start.d" t > "\\.el$")) > > При этом будет тот же эффект: пользователи будут получать компоненты, > установленные после появления этих пользователей - в соответствии с > содержимым /etc/emacs/site-start.d. Правда, судя по названию каталога, > прописывать такую команду предполагалось все-таки в общесистемный > /usr/share/emacs/site-lisp/site-start.el, но в этом случае у > пользователя > нет простого способа отменить загрузку этих файлов. Вот еще один вариант реализации. В /usr/share/emacs/site-lisp кладем файл package-autoload.el: ;;; package-autoload.el --- run package autoload files ;; Copyright (C) 2001 by Free Software Foundation, Inc. ;; Author: Sergey Vlasov ;; Keywords: extensions ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; This file loads .el files from /etc/emacs/site-start.d. Files in ;; this directory are supposed to be autoload files for Emacs add-on ;; packages. ;;; Code: (mapcar 'load-file (directory-files "/etc/emacs/site-start.d" t "\\.el$")) (provide 'package-autoload) ;;; package-autoload.el ends here В этом же каталоге в файле default.el пишем: (require 'package-autoload) В /etc/skel*/.emacs в начало добавляем: (require 'package-autoload nil t) В результате получаем следующее: 1. У новых пользователей с ~/.emacs из нового etcskel в начале обработки ~/.emacs загрузятся все файлы автозагрузки из /etc/emacs/site-start.d. При этом require в default.el молча проигнорируется. 2. У пользователей со старым ~/.emacs файлы автозагрузки будут грузиться из default.el, т.е. после обработки ~/.emacs. Из-за этого в ~/.emacs нельзя будет настраивать эти пакеты, если не добавить предварительно строку (require 'package-autoload). Если дополнительно не настраивать, все будет работать и так. 3. Пользователи, которым по каким-то причинам не нравится автозагрузка файлов из /etc/emacs/site-start.d, могут выбросить из ~/.emacs соответствующую команду и отменить загрузку default.el, установив inhibit-default-init. 4. Наконец, если в системе установлен новый пакет etcskel, но старый emacs, в котором нет файла package-autoload.el, проблем при запуске Emacs тоже не возникнет (за исключением незагрузки файлов из /etc/emacs/site-start.d), поскольку (require 'package-autoload nil t) игнорирует отсутствие запрошенного файла. Ваши замечания? _______________________________________________ Devel mailing list Devel@linux.iplabs.ru http://www.logic.ru/mailman/listinfo/devel