Почему 'заставляет установку' не произвести об/мин?

Вот то, как я сделал бы это путем парсинга pkg, информация произвела:

$ pkg info archiver/gnu-tar | nawk '
/^ *[A-Za-z ]*:/ {
    gsub("^ *","",$1)
    if(NR>1) printf("\n")
    name=substr($0,1,index($0,":")-1);
    value=substr($0,index($0,":")+1);
    gsub(" ","_",name);
    printf("%s=%s",name,value)
    next
}
{
  gsub("^ *","",$1)
  printf("%s",$0)
} ' | sed -e 's/= /="/' -e 's/$/"/'

Вывод:

Name="archiver/gnu-tar"
Summary="GNU version of the tar archiving utility"
Description="Tar is a program for packaging a set of files as a singlearchive in tar format."
Category="Development/GNU"
State="Installed"
Publisher="solaris"
Version="1.26"
Build_Release="5.11"
Branch="0.175.0.0.0.2.537"
Packaging_Date="October 19, 2011 09:11:16 AM"
Size="1.73 MB"
FMRI="pkg://solaris/archiver/gnu-tar@1.26,5.11-0.175.0.0.0.2.537:20111019T091116Z"
0
01.02.2014, 00:32
3 ответа

make install не сделает Вас RPM-пакетом, он просто переместит скомпилированные исполняемые файлы в надлежащие места (как/usr/bin/local). Никогда действительно необходимо использовать make install; это - просто удобство, которое помещает Ваши исполняемые файлы в центральное расположение вместо того, чтобы оставить их, где они были созданы в любом каталоге, Вы помещаете источник. Места, в которые это перемещает материал, находятся также, вероятно, в Вашем PATH, таким образом, Вы не должны вводить полный путь, когда Вы хотите выполнить свой материал.

Нет действительно никакого такого понятия как установка в Linux, поскольку это включает ключи реестра и тайные файлы, скрытые в углах ОС как в Windows. Это просто помещает файлы в более удобные, organizable места. Часто сами программы будут обрабатывать конфигурацию создания и каталоги хранилища. Создание RPM-пакетов несколько более сложно и требует, среди прочего, чтобы Вы записали a .spec файл, который указывает вещи как имя, версия, и описание, а также инструкции для того, что диспетчер пакетов, как предполагается, делает, чтобы создать и установить необработанные внутренности.

Если Вы смотрите на тот вывод:

libtool: install: /usr/bin/install -c autocutsel /usr/local/bin/autocutsel  
libtool: install: /usr/bin/install -c cutsel /usr/local/bin/cutsel 

install просто файлы копий вокруг и верные полномочия наборов на тех файлах. autocutsel и cutsel были уже скопированы в /usr/local/bin.

И последние две строки:

make[1]: Nothing to be done for `install-data-am'.  
make[1]: Leaving directory `/root/Desktop/autocutsel-0.9.1'   

install-data-am отдельное, делают цель, и по любой причине там не имеет отношения для него в Вашей системе. Это не ошибка, просто уведомление.

На данном этапе, если Вы просто входите autocutsel или cutsel надлежащая программа должна работать. Обратитесь к документации autocutsel для всего с тех пор.

2
28.01.2020, 02:20
  • 1
    , Это - вещь..., когда я ввожу autocutsel/cutsel, это просто показывает 'команду, не найденную'. –  Gh0sT 31.01.2014, 11:21
  • 2
    Это в /usr/local/bin? Ваш ПУТЬ включает тот каталог? –  Backgammon 31.01.2014, 11:28
  • 3
    Да это находится в/usr/local/bin. Я однако не знаю о ПУТИ. Можно ли уточнить.. –  Gh0sT 31.01.2014, 11:50
  • 4
    ПУТЬ является переменной среды (своего рода параметр настройки системы) содержащий набор каталогов. Что-либо в тех каталогах может быть выполнено, просто введя имя файла на командной строке. Обычно, необходимо ввести полный путь файла, который Вы хотите выполнить. Вот более полное объяснение: замена команды linfo.org/path_env_var.html –  Backgammon 31.01.2014, 11:55
  • 5
    Вы, возможно, также должны работать hash -r, или запустите новую оболочку. –  Mikel 01.02.2014, 05:48

Некоторые (немногие!) исходные пакеты предлагают a make-rpm или подобная цель, но я не положил бы, что результатом являются на должном уровне относительно Вашего распределения упаковочные инструкции. Инструкции по об/мин Fedora являются, возможно, самыми обширными, и вероятно применимыми с небольшим изменением в RHEL.

Посмотрите, если пакет доступен для RHEL, или проверьте EPEL на него. Если Вы хотите немного более новую версию, чем одно доступное, можно запустить путем захвата исходного об/мин, распаковать его и отредактировать его для дегустации. Но дистрибутивы enterprisey (RHEL, SLES, Oracle Linux, CentOS, и т.д.) предпочитают не увеличивать номера версий когда-либо (их пользователи чрезвычайно даже против незначительных интерфейсных изменений!), поэтому если Вы видите древнюю версию чего-то, на которых половине интернет-криков невероятно небезопасно и цитируют дюжину CVEs и страшные истории, больше othen, чем не, распределение решило проблемы путем бэкпортирования патчей к их старинным вещам.

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

1
28.01.2020, 02:20
  • 1
    "В любом случае, с помощью доморощенного об/мин делает Вас ответственными за интеграцию с системой, отслеживая (и исправляя) ошибки, после восходящего потока... это - большая работа, и если у Вас нет очень специализированных потребностей, я избегал бы его". Это не хуже, чем использование исходного пакета или использование случайного стороннего об/мин. Если Ваше распределение не имеет поддерживаемого пакета, и я не мог бы найти, что подходящее третье лицо один, создавая мой собственный двоичный пакет - то, что я сделал бы. –  Faheem Mitha 25.01.2015, 10:14

make запускает скрипт, названный соответственно достаточно, make-файл. Аргумент Вы даете make указывает цель в том make-файле.

Цели могут сделать что-либо, хотя их исходная и наиболее распространенная цель состоит в том, чтобы работать, список команд раньше компилировал исходный код. Вы не должны знать эти команды, все, что Вы делаете измениться на правильный каталог и сделать a make - возможно с некоторыми опциями в случае необходимости. Исходный код обычно разделяется на многие файлы (тысячи, если Вы говорите о чем-то как ядро Linux) - make существует для разрешения компиляции всех файлов с одной командой вместо многих.

Исполняемый файл конечного результата может быть в корне того каталога в подкаталоге build, или другие - это составило, кто бы ни записал make-файл.

Некоторые проекты/авторы включают install цель в make-файле. Обычно это поместит исполняемый файл в каталог как /usr или /bin, и скопируйте по любым файлам библиотеки в правильных местах, если они были также скомпилированы. Таким образом, после a make install обычно можно использовать программу путем вызова его на командную строку. Это - конвенция, не стандарт, таким образом, определенное поведение может отличаться в зависимости от автора или проекта.

make install должен работать, какой менеджер по распространению или диспетчер пакетов у Вас есть продолжение.

Я уверен, что некоторые авторы/проекты обеспечивают make-файлы, которые создают пакеты, но на том уровне они могут также создать и распределить пакет непосредственно.

1
28.01.2020, 02:20

Теги

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