Исходные данные такие: нахожусь в директории /root/test исполняемый файл "hello", который нужно куда-нибудь (КУДА?) инсталлировать; работаю из-под root
Код: Выделить всё
# ./hello
Hello, word!
* install -S 11kw hello
# install -cs -o bin hello /usr/bin/mhello
#
Наверное, файл hello куда-нибудь скопировался, да ведь? Я ведь его инсталлирую как-никак, не хухры-мухры! Смотрим.
Код: Выделить всё
# find / -name hello
/root/test/hello
#
Мда.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
А теперь откуда я взял эти команды "install". Дело в том, что такое вот использование install я взял не где-нибудь, а в штатном (штатном, Карл!) файле Makefile к файлу sh. То есть предполагается, что если в директории, где находится sh (/usr/src/commands/sh) скомандовать ./build
То выполнятся такие три команды (суть содержание /usr/src/commands/sh/build):
Код: Выделить всё
make clean
make all
make install
То sh инсталлируется куда-то. А она не инсталируется, а в Makefile именно такие вот команды "install" и присутствуют, которые я привёл выше. Файл Makrefile я прилагаю, я из него поубирал, что можно поубирать. Но если кто будет смотреть, смотрите просто на две строчки и всё, которые начинаются с install, больше-то ничего не требуется. И они и не работают, ни для sh, ни для hello
В общем, фиктивная какая-то инсталляция, ага. А вся работа ./build заключается в перекомпиляции sh. Ну ладно, умеем мы компилировать. А перетаскивать-то исполняемый файл sh (ну или hello) куда-то там (в */bin, что ли) как, вручную, что ли? Но это же не наш метод! Спасибо, кто откликнется.
Spoiler
Код: Выделить всё
# Makefile for sh
CFLAGS = -O -D_MINIX -D_POSIX_SOURCE -wa
LDFLAGS = -i
CC = exec cc
OBJ = sh1.o sh2.o sh3.o sh4.o sh5.o sh6.o
all: sh
sh: $(OBJ)
cc $(LDFLAGS) -o $@ $(OBJ)
install -S 11kw sh
install: /usr/bin/msh
/usr/bin/msh: sh
install -cs -o bin $? $@
$(OBJ): sh.h
clean:
rm -f sh *.o *.bak core
P. S. man читал, там написано, что всё должно быть OK:
Используемая мной форма install- перваяputs executables, manual pages, and library files in their proper place in the bin, man, and lib directories. The first two forms of the command are like cp(1) copying either one file to another or copying several files to a directory.