Как обновить программу, которая была скомпилирована вручную из исходного кода?
517
fivetech
Каков наилучший способ установить обновление, которое я вручную скомпилировал из исходного кода, в программу, которую я также ранее вручную скомпилировал из исходного кода?
Должен ли я выполнить sudo make uninstall
сначала, а затем выполнить sudo make install
, или этого достаточно, чтобы выполнить только sudo make install
?
Некоторые файлы Makefile не предоставляют цель удаления, и когда я пытаюсь выполнить удаление, я получаю следующую ошибку:
make: *** Нет правила, чтобы сделать цель «удалить». Стоп.
Просто замените его двоичные исполняемые файлы и все зависимости, которые были обновлены
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 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4