Новая исходная установка по существующей

Это - давняя ошибка в расширении псевдонима удара. Я мог воспроизвести его на Debian lenny amd64 с ударом 3.2.29 (1), Debian сжимают i386 с 4.1.5 (1), и Windows XP с Cygwin 1.7.7-1 с ударом 4.1.9 (3).

Несколько экспериментов показывают, что ошибка очень чувствительна к вариациям в том, как псевдоним используется. hgfoo или hgfoo : показывает ошибку, но { hgfoo :; } и (hgfoo) хорошо работать. Используя функцию вместо псевдонима также работает.

Я занялся расследованиями немного, пытаясь извлечь меньший пример. Странность, кажется, происходит от наличия новой строки в псевдониме. Вот простой пример, где удар (3.2.29 или 4.1.9) неправильно себя ведет. Этот псевдоним работает как ожидалось (от моего чтения Единственного Unix v3) под pdksh, ksh93, пепел и zsh под Debian lenny, а именно, oops печать foo bar.

$ alias oops='a=$(echo bar)
> echo foo $a'
$ oops
foo foo echo bar

Ошибка может быть связана с ошибкой, о которой сообщают, о “странных отложенных псевдонимах”, но то обсуждение фокусируется на продолжениях строки (новая строка обратной косой черты), которая не используется здесь.


В любом случае используйте функцию! Псевдонимы для острот, где Вы просто указываете некоторые опции по умолчанию для команды. Функция обладала бы дополнительным преимуществом, которому Вы могли передать аргументы hg:

hgfoo () {
  localChanges=$(hg st -m "$@")
  …
}

¹ я первоначально думал, что это было ошибкой Cygwin, но как ak2 указанный, эта ошибка происходит в соответствии с Linux также.

3
15.09.2012, 03:47
3 ответа

Если Вы используете configure, make, make install стандартная программа для установки программного обеспечения под любым дистрибутивом Linux затем новая версия будет обычно перезаписывать предыдущее. Единственный протест состоит в том, что, если более новая версия, оказывается, изменяет местоположение установки или названия определенных файлов затем, можно закончить со старой версией или частями старой версии, остающейся на компьютере.

Поэтому не рекомендуется установить программы таким образом на Slackware. Методические рекомендации состоят в том, чтобы создать a .txz или .tgz пакет, который может быть установлен со стандартным установщиком пакета Slackware installpkg. Это также означает, что можно чисто удалить пакет с removepkg или обновите до новой версии с upgradepkg. Много сценариев для компиляции и создания пакетов, включая один для ffmpeg, могут быть найдены в SlackBuilds. Выполнение сценария, которому предоставляют, с источниками в том же каталоге скомпилирует и произведет a .txz.

Большинство пользователей Slackware делает интенсивное использование Slackbuilds для установки неофициального программного обеспечения.

1
27.01.2020, 21:29
  • 1
    Спасибо, это - ответ, который я искал. Я думал, что это должно проложить себе путь, и вероятно с ldd и which я могу выяснить старое местоположение файлов установки, и с той информацией я могу отредактировать Make-файл. Я, имеют тенденцию использовать источники для установок, потому что это кажется мне этим способом, которым я понимаю систему лучше. –  primero 05.09.2012, 10:41
  • 2
    Хорошая вещь о Slackbuilds состоит в том, что Вы делаете исходную установку, но вместо того, чтобы установить на Вашем HD, Вы - эффективно установка на a .tar.gz. При установке того файла он совпадает со сделавший make install за исключением того, что дорожки Slackware, какие файлы Вы установили и знаете, как удалить или обновить. Если Вы интересуетесь узнаванием системы, я настоятельно рекомендую читать a .SlackBuild сценарий, чтобы видеть, как все это работает. –  SigueSigueBen 05.09.2012, 18:45

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

$ ./configure --prefix=/foo

Не все программное обеспечение сделано этот путь, но необычно не быть. Так как Ваше распределение устанавливает программное обеспечение под/usr, это означает, что у Вас будет две версии в Вашей системе. При установке ffmpeg на/opt/ffmpeg необходимо было бы просто добавить двоичный каталог (вероятно,/opt/ffmpeg/bin) к ПУТИ.

Если Вы действительно интересуетесь источником, смотрите на Linux С нуля и хинду.

1
27.01.2020, 21:29
  • 1
    LFS является следующим шагом А-ч :) –  primero 04.09.2012, 16:16

Можно использовать make (без установки) для компиляции источников протестируйте их и т.д. стр. И затем можно использовать make install помещать новые файлы типа "build" в систему в целом.

0
27.01.2020, 21:29

Теги

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