Как мне избежать make для создания и установки справочных страниц?

Насколько я знаю, лучший способ для дистрибутивов на основе apt, таких как Debian или Ubuntu, - это установить alien , который преобразует отдельные RPM в собственный формат deb , а затем установите их по отдельности с помощью dpkg .

Запуск от имени root:

apt-get install alien

alien package-name.rpm

dpkg -i package-name.deb

Очевидно, что это не разрешит зависимости автоматически, и dpkg откажется устанавливать, пока они не будут выполнены. Кто-то другой может знать, как это упростить или автоматизировать.

0
16.03.2018, 15:36
2 ответа

Перед запуском ./configureотредактируйте Makefile.inв корне проекта, убрав docиз переменной SUBDIRS. Это приведет к тому, что все в подкаталоге docбудет игнорироваться во время сборки и установки.

sed -i '/SUBDIRS/s/doc//' Makefile.in
4
28.01.2020, 02:23

Если вы заглянете в make-файл, то увидите ряд правил, представляющих собой строки без пробелов в начале.Правило, к которому вы, вероятно, привыкли, это install, которое обычно помещается в конец make-файла, но обычно есть много других правил. Ищите правило, которое относится к исходным файлам справочной страницы (, они обычно имеют однозначное расширение файла )или какой-либо каталог документации. Как только вы найдете его, у вас есть три варианта :1 )сделать его нулевым правилом, удалив его команды (т.е. строки после него, начинающиеся с пробела )или 2 ), удаляют ссылки на него, (, т.е. поищите в других правилах команды с названием этого правила или 3 )найдите уже -существующее правило установки, которое его не выполняет.

Позвольте мне привести вам пример, используя отрывок из реального make-файла:

default: all

all: lisp info

info:
    cd doc && $(MAKE) EMACS="$(EMACS)"

install: install-lisp install-info

install-lisp: lisp
    @$(SHELL) $(srcdir)/mkinstalldirs "$(DESTDIR)$(lispdir)";\

install-info: info
    @echo "cd doc && $(MAKE) EMACS=\"$(EMACS)\" 

dist: Makefile foo.elc
    $(MAKE) tarball \

clean:
    -rm -rf $(PACKAGE)* ;\

distclean: clean
    -rm -f config.log config.status config.cache Makefile 

В приведенном выше примере можно либо удалить строку после info:и install-info:, сделав ее нулевым правилом, либо, что лучше, удалить слово install-infoиз правила install(. начало строкиinstall:)

Теперь, что касается третьего (лучшего )варианта, взгляните еще раз на файл моего примера и обратите внимание, что существует команда install-lisp, которая, как вы видите, делает все, кроме установки документации, потому что они только две команды в команде install. Так что в этом примере действительно не нужно ничего менять, просто вместо запуска make installзапустите make install-lisp. Ваш файл make может предоставить вам аналогичную опцию. Не изучив его, это невозможно узнать.

Наконец, что, если вы не хотите выполнять make install? Может быть, вы просто хотите исполнить ваниль make. Для этого найдите правило с именем default; это будет правило, используемое при вызове makeбез конкретной команды. В моем примере вы видите, что правило defaultпросто указывает на другое правило с именем all, и это правило вызывает два других правила:lispи info. Когда я вставлял пример, я вырезал большую часть строк для краткости, поэтому текста правила lispздесь нет,но должно быть очевидно, что вы хотите использовать эту команду, а не команду info, поэтому вы можете просто запустить make lisp.

0
28.01.2020, 02:23

Теги

Похожие вопросы