Когда я устанавливаю простую программу, она часто использует make && make install
и даже не имеет цели удаления .
Если я хочу обновить программу, это стандартный протокол, предполагающий, что она просто переписывает поверх старой программы?
Как я отслеживаю эти программы; большинство людей просто «запускают и забывают», и если цель удаления не указана, нужно ли мне удалять все вручную?
Ответы:
Установите каждую программу в отдельном дереве каталогов и используйте Stow или XStow, чтобы все программы отображались в общей иерархии. Stow создает символические ссылки из директории программы на общее дерево.
Более подробно, например, выберите каталог верхнего уровня
/usr/local/stow
. Установите каждую программу под/usr/local/stow/PROGRAM_NAME
. Например, организуйте установку исполняемых файлов/usr/local/stow/PROGRAM_NAME/bin
, страниц руководства/usr/local/stow/man/man1
и т. Д. Если программа использует autoconf, то запустите./configure --prefix /usr/local/stow/PROGRAM_NAME
. После запускаmake install
запуститеstow
:И теперь у вас будут такие символические ссылки:
Вы можете легко отслеживать, какие программы вы установили, перечислив содержимое
stow
каталога, и вы всегда знаете, к какой программе принадлежит файл, потому что это символическая ссылка на местоположение в каталоге этой программы. Удалите программу, запустив иstow -D PROGRAM_NAME
удалив каталог программы. Вы можете сделать программу временно недоступной, запустив ееstow -D PROGRAM_NAME
(запустите,stow PROGRAM_NAME
чтобы сделать ее снова доступной).Если вы хотите иметь возможность быстро переключаться между разными версиями одной и той же программы, используйте
/usr/local/stow/PROGRAM_NAME-VERSION
в качестве каталога программы. Чтобы обновить версию 3 до версии 4, установите версию 4 и запуститеstow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Старые версии Stow не выходят далеко за рамки основ, которые я описал в этом ответе. Более новые версии, а также XStow (который не поддерживался в последнее время) имеют более продвинутые функции, такие как возможность игнорировать определенные файлы, лучше справляться с существующими символическими ссылками за пределами каталога хранения (например,
man -> share/man
), автоматически обрабатывать некоторые конфликты (когда два программы предоставляют один и тот же файл) и т. д.Если у вас нет или вы не хотите использовать root-доступ, вы можете выбрать каталог в вашем домашнем каталоге, например
~/software/stow
. В этом случае добавьте~/software/bin
в свойPATH
. Еслиman
не удается автоматически найти справочные страницы, добавьте их~/software/man
на свою страницуMANPATH
. Добавьте~/software/info
к вашемуINFOPATH
,~/software/lib/python
к вашемуPYTHONPATH
и так далее в зависимости от обстоятельств.источник
Вы можете использовать checkinstall для создания пакета (RPM, Deb или Slackware-совместимые пакеты). Таким образом, вы можете использовать менеджер пакетов distros для добавления / удаления приложения (но не для обновления).
Вы используете
checkinstall
вместоmake install
команды (используя параметр -D для Deb; -R - это RPM, а -S - Slackware):checkinstall соберет и установит пакет по умолчанию, или вы можете сделать так, чтобы пакет собирался только без установки.
checkinstall доступно в большинстве репозиториев дистрибутивов.
источник
checkinstall
похоже, что не так активно поддерживается (?) :-(По большей части это было причиной пакетов, портов и других типов менеджеров, чтобы предотвратить подобные вещи.
Я бы сказал, что удаление вручную - это единственный способ установки вручную, если у кого-то еще нет лучшего ответа на этот вопрос, о котором я, возможно, не знаю.
источник
Еще одна альтернатива из подсказок Linux From Scratch :
Больше контроля и управления пакетами с использованием пользователей пакетов
После этого первого грубого предложения я нашел усовершенствованный вариант:
crablfs - система управления пакетами на основе пользователя
Это
crablfs
последний образец управления пакетами, использующий уникальные uid и gids для управления пакетами, но в sourceforge он снова развивается в ulfs:uLFS: ваш управляемый и многократно используемый Linux с нуля
Для причинных пользователей установленных пакетов, я думаю, что LFS-решение «пакетных пользователей» является легким, менее инвазивным и элегантным. Короче говоря, вы устанавливаете пакеты в
/usr/local
или/home/user/local
и отслеживаете файлы, используя уникальные uid и gids для каждого пакета, но помещаете все файлы в традиционные места, общие каталоги/usr/local/bin
,/usr/local/lib
как это есть во всех основных дистрибутивах Linux ... окклюзия файлов и нежелательная перезапись или удаление файлов избегается изящной уловкой Linux, объясненной Матиасом С. Бенкманом в more_control_and_pkg_man.txt, которая требует только обычных манипуляций с разрешениями файлов и каталогов, например, разрешением на закрепление битов для каталогов, чтобы избежать нежелательной перезаписи файлов:Для меня это выглядит как простое и умное решение! Я использовал эту схему в моей сборке LFS, и это рабочее решение ...
источник
tar
файлов из установки,/usr/src/non-rpms
чтобы напомнить вам (это то, что я обычно делаю).источник