Не все программы доступны в официальных или сторонних репозиториях, поэтому вы не можете установить их с помощью обычных менеджеров пакетов.
Иногда приходится устанавливать программы вручную, компилируя их из исходного кода.
Как вы, возможно, уже знаете, когда вы устанавливаете программы из исходного кода, файлы пакета будут скопированы в несколько мест, таких как /usr/local/bin, /usr/local/etc/, в файловой системе.
Если в установленной программе из исходного кода нет встроенного деинсталлятора, удаление пакетов будет утомительной задачей.
Возможно, вам придется потратить пару (или несколько) минут, чтобы найти эти файлы пакета и удалить их вручную.
Это то, чем я занимался до тех пор, пока не наткнулся на утилиту под названием «GNU Stow».
К счастью, у Stow есть фантастический способ легко управлять программами, установленными из исходного кода.
Проще говоря, Stow помогает вам упорядочить файлы пакетов так, чтобы ими было легко управлять.
В этом методе файлы не будут скопированы в несколько мест.
Вместо этого все файлы сохраняются в определенной папке, обычно под самим именем программы, и Stow создает символические ссылки на все файлы программ в соответствующих местах.
Например, /usr/local/bin может содержать символические ссылки на файлы в /usr/local/stow/vim/bin, /usr/local/stow/python/bin и т. д.
А также рекурсивно для любых других подкаталогов, таких как…/share, … /man, и так далее.
В этом руководстве я покажу вам, как с помощью Stow легко управлять программами, установленными из исходного кода, на практическом примере.
Установка GNU Stow
GNU Stow доступен в репозиториях по умолчанию популярных операционных систем Linux.
В Arch Linux и его вариантах выполните следующую команду, чтобы установить Stow.
$ sudo pacman -S stow
на Debian, Ubuntu, Linux Mint:
$ sudo apt install stow
на Fedora:
$ sudo dnf install stow
на RHEL/CentOS:
$ sudo yum install epel-release
$ sudo yum install stow
Как легко удалить программы, установленные из исходников в Linux
Как я уже упоминал ранее, все программные файлы пакета будут сохранены в корневой папке, расположенной в /usr/local/stow/.
В этом корневом или родительском каталоге каждый пакет будет сохранен в своем собственном частном подкаталоге.
Например, если мы установим редактор Vim из исходного кода, все программные файлы и каталоги, связанные с Vim, будут сохранены в папке /usr/local/stow/vim.
Если вы устанавливаете python из исходного кода, все файлы, связанные с python, будут храниться в /usr/local/stow/python и так далее.
Позвольте мне установить программу, например, hello, из исходника.
Сначала скачайте tarball программы “hello”.
$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
Распакуйте загруженный архив с помощью команды:
$ tar -zxvf hello-2.10.tar.gz
Приведенная выше команда создаст каталог с именем «hello-2.10» в текущем рабочем каталоге и извлечет все содержимое в нем.
Переключиться на извлеченный каталог:
$ cd hello-2.10/
Запустите следующую команду с параметром –prefix.
$ ./configure --prefix=/usr/local/stow/hello
Приведенная выше команда сохранит файлы сборки в указанном месте, т.е. в нашем случае /usr/local/stow/hello.
Наконец, соберите и установите программу hello, используя следующие команды:
$ make
$ sudo make install
Программа hello была установлена в /usr/local/stow/hello/location.
Вы можете проверить это командой «ls», как показано ниже.
$ ls /usr/local/stow/hello/ bin share
Наконец, перейдите в каталог /usr/local/stow и выполните следующую команду, чтобы сгенерировать необходимые символические ссылки.
$ cd /usr/local/stow/
$ sudo stow hello
Что только что произошло, так это то, что все файлы и каталоги, содержащиеся в пакете hello, были связаны с каталогом / usr / local /.
Другими словами, / usr / local / stow / hello / bin был связан с / usr / local / bin, а / usr / local / stow / hello / share был связан с / usr / local / share и / usr / local / stow / hello / share / man была связана с / usr / local / share / man и так далее.
Вы можете проверить их, используя команду “ls”:
$ ls /usr/local/bin/ hello
Давайте проверим, работает программа hello или нет, используя команду:
$ hello Hello, world!
Да, она работает!
Точно так же вы можете устанавливать программы, как описано выше, в своем собственном подкаталоге.
Вот содержимое корневого каталога Stow:
$ tree /usr/local/stow/
Видиет? Программа установлена /usr/local/stow/hello/location.
Точно так же все пакеты будут храниться в своем собственном каталоге.
Здесь идет основная часть. Давайте удалим программу hello.
Для этого перейдите в каталог /usr/local/stow/:
$ cd /usr/local/stow/
..и выполните следующую команду:
$ sudo stow --delete hello
Программа hello была только что удалена.
Вы можете проверить, действительно ли она удалена, используя команду:
$ hello -bash: /usr/local/bin/hello: No such file or directory
Обратите внимание, что Stow удалил только символические ссылки.
Все программные файлы и каталоги, связанные с программой hello, по-прежнему доступны в папке / usr / local / stow / hello.
Таким образом, вы можете снова установить программу hello без необходимости загружать исходный файл.
Если вы больше не хотите этого, просто удалите папку.
$ sudo rm -fr /usr/local/stow/hello/
Чтобы узнать больше о Stow, обратитесь к справочным страницам.
$ man stow
Какое говно ваш Линукс. Пол часа ставить программу в одну папку. В Винде давно уже придумали portable программы. Распаковал и запускай в один клик из любого места. Можешь даже на флешке носить и на любом другом компе запускать.
На вкус и цвет
Ты сначала попробуй поработать в линуксе и потом выводы делай что это.