Когда это возможно, я стараюсь использовать приложения, библиотеки и плагины, поставляемые через официальный APT Ubuntu.
Однако иногда я пытаюсь скомпилировать что-нибудь, например плагин resynthesizer
для GIMP. Во многих случаях компиляция требует от меня выполнения sudo make
и sudo make install
. Без этого сценарии не работают, потому что они пытаются скопировать файлы в папки, у которых есть права доступа root.
Поскольку я не являюсь автором программы, я очень боюсь это делать (выполнять такие сценарии как суперпользователь). Боюсь, что это сломает систему. Можно ли безопасно компилировать программы без использования sudo
?
Всегда можно скомпилировать программное обеспечение "локально" в вашем собственном домашнем каталоге - насколько легко его установить и запустить локально, зависит от разработчиков программного обеспечения.
Для программного обеспечения с открытым исходным кодом, использующего знакомый рецепт automake
./configure
make
make install
,скрипт configure
должен обычно предоставлять параметр --prefix
, который устанавливает корень путь установки — например,
./configure --prefix=$HOME
приведет к установке сгенерированных двоичных файлов в ~/bin
вызывающего пользователя, библиотек в ~/lib
, файлов конфигурации в ~ /etc
и так далее. Каталоги будут созданы автоматически, если они еще не существуют.
Однако в конкретном случае с плагином gimp resynthesizer шаг make install
, по-видимому, по-прежнему пытается установить пару файлов в $(GIMP_LIBDIR)/plug- ins
, где GIMP_LIBDIR = /usr/lib/gimp/2.0
жестко запрограммировано, а не получено из значения --prefix
.
Это может быть недосмотр со стороны разработчиков программного обеспечения или может быть связано с совместимостью с самим GIMP. Однако вы можете преодолеть это, изменив рецепт следующим образом:
./configure --prefix=$HOME
make
make GIMP_LIBDIR=$HOME/lib/gimp/2.0/ install
что должно привести к следующей структуре каталогов плагинов:
$ find ~/lib -newermt yesterday
/home/username/lib
/home/username/lib/gimp
/home/username/lib/gimp/2.0
/home/username/lib/gimp/2.0/plug-ins
/home/username/lib/gimp/2.0/plug-ins/plugin-map-style.py
/home/username/lib/gimp/2.0/plug-ins/plugin-heal-transparency.py
/home/username/lib/gimp/2.0/plug-ins/plugin-resynth-enlarge.py
/home/username/lib/gimp/2.0/plug-ins/plugin-render-texture.py
/home/username/lib/gimp/2.0/plug-ins/resynthesizer
/home/username/lib/gimp/2.0/plug-ins/resynthesizer_gui
/home/username/lib/gimp/2.0/plug-ins/plugin-resynth-sharpen.py
/home/username/lib/gimp/2.0/plug-ins/plugin-uncrop.py
/home/username/lib/gimp/2.0/plug-ins/plugin-heal-selection.py
/home/username/lib/gimp/2.0/plug-ins/plugin-resynth-fill-pattern.py