Как обновить программу, которая была скомпилирована вручную из исходного кода?

495
fivetech

Каков наилучший способ установить обновление, которое я вручную скомпилировал из исходного кода, в программу, которую я также ранее вручную скомпилировал из исходного кода?

Должен ли я выполнить sudo make uninstallсначала, а затем выполнить sudo make install, или этого достаточно, чтобы выполнить только sudo make install?

Некоторые файлы Makefile не предоставляют цель удаления, и когда я пытаюсь выполнить удаление, я получаю следующую ошибку:

make: *** Нет правила, чтобы сделать цель «удалить». Стоп.

1
Просто замените его двоичные исполняемые файлы и все зависимости, которые были обновлены Ramhound 7 лет назад 0
Разве это не заняло бы много времени, если бы программа имела много зависимостей? fivetech 7 лет назад 0
Да, так и будет. Вот почему менеджеры пакетов являются находкой: упаковщики сделали тяжелую работу за вас. reinierpost 7 лет назад 0
@reinierpost Да, я использую их каждый день. Однако мне нужно скомпилировать некоторые программы, такие как OpenCV, dlib и т. Д., Чтобы получить новейшие функции и настроить их. fivetech 7 лет назад 0
Если вы устанавливаете в `/ usr / local` с помощью` stow`, как, например, описано здесь [http://unix.stackexchange.com/questions/325923/for-convention-in-which-folder-should-i- Place-no-Installable-Applications), вы можете легко удалить, просто удалив символические ссылки с `Stow -D`. Это работает, даже если ваш источник не поддерживает удаление через Makefile (как в вашем случае), или если удаление не завершено (происходит достаточно часто). Поэтому никогда не устанавливайте в обычную иерархию как root напрямую, оставьте это менеджерам пакетов. dirkt 7 лет назад 0
Это то, что я делаю (за исключением того, что я использую свой собственный скрипт вместо `stow`, потому что я не знал о` stow`, когда писал его). Я устанавливаю программное обеспечение в каталог для конкретной версии, а затем использую свой сценарий для символической ссылки на общие пути. Таким образом, я могу установить несколько версий, выбрать одну для использования и удалить остальные. Это становится более опасным, когда задействованы зависимости, потому что зависимости не будут отслеживаться таким образом. Это должен быть ответ ... reinierpost 7 лет назад 0
Что ж, вы сказали, что компилируете вручную, я считаю, что вы не используете систему сборки Ramhound 7 лет назад 0
«Компиляция вручную» с использованием «stow» обычно будет выглядеть как «wget https://www.example.com/path/to/foo-1.2.3.tar.gz && tar xvf foo-1.2.3.tar.gz && cd foo-1.2.3 && ./configure --with-path = / usr / local / stow / foo-1.2.3 && make && sudo -u localowner make install && sudo -u localowner stow foo-1.2.3 && cd .. && rm -rf foo-1.2.3. * `(в абсолютно идеальном случае). reinierpost 7 лет назад 0

0 ответов на вопрос

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