Как получить последнюю версию gVim на Ubuntu 14.04?

Я хотел бы создать gVim AppImage, используя пакеты от 14.04 (почему не 16.04? Потому что пакеты 16.04 слишком новы, так как AppImages будет работать только в дистрибутивах более новых или того же возраста, что и дистрибутив, для которого они созданы). Теперь я хотел бы, чтобы мой gVim AppImage был для самой последней версии gVim, поэтому мне нужен репозиторий для 14.04, который предоставляет самую последнюю версию gVim. Я искал на Launchpad Vim PPA, которые поддерживаются и не нашли ни одного (все, что я нашел, устарели).

Мои вопросы:

  • Я знаю, что могу собрать последнюю версию gVim в виде пакета Debian с помощью checkinstall, но я хочу использовать gVim из репозитория пакетов, чтобы построить свой gVim AppImage, поскольку он намного упрощает работу. Где я могу найти последний пакет Debian gVim?

  • В качестве альтернативы, как я могу построить контейнер AppImage из произвольного набора двоичных файлов (загруженных где-либо или скомпилированных из исходного кода)?

1 ответ

Решение

AppImage - это в основном просто монтируемый образ файловой системы, который содержит приложение и все, что ему нужно для запуска в одном файле.

Вот пример, который собирает GNU Emacs на Travis CI и упаковывает его как AppImage: https://github.com/probonopd/Emacs.AppImage

Вы должны быть в состоянии сделать то же самое для gVim.

  1. Соберите подходящие двоичные файлы. Если приложение уже скомпилировано, вы можете использовать существующие двоичные файлы (например, содержащиеся в архивах.tar.gz, deb или rpm). Обратите внимание, что двоичные файлы не должны компилироваться в более новых дистрибутивах, чем те, на которые вы ориентируетесь. Другими словами, если вы ориентируетесь на Ubuntu 9.10, вы не должны использовать двоичные файлы, скомпилированные в Ubuntu 10.04. Для проектов верхнего уровня может быть полезно скомпилировать специальные сборки для использования в AppImages, что я и рекомендую в этом случае. Смотрите пример GNU Emacs выше. (Для повторного использования существующих двоичных файлов см. https://github.com/probonopd/AppImages/tree/master/recipes/meta.)
  2. Соберите подходящие двоичные файлы всех зависимостей, которые не являются частью целевых операционных систем, на которые вы ориентируетесь. Например, если вы нацелены на Ubuntu, Fedora и openSUSE, то вам нужно собрать все библиотеки и другие зависимости, необходимые для запуска вашего приложения, которые не являются частью Ubuntu, Fedora и openSUSE при установке по умолчанию.
  3. Создайте рабочий AppDir из ваших двоичных файлов. Работающий AppImage запускает ваше приложение, когда вы запускаете его файл AppRun. Снова, посмотрите пример GNU Emacs, связанный выше.
  4. Превратите ваш AppDir в AppImage. Это сжимает содержимое вашего AppDir в единый, автоматически монтируемый и исполняемый файл. В приведенном выше примере для этого используется функция generate_type2_appimage из functions.sh.
  5. Протестируйте свой AppImage на всех базовых операционных системах, на которые вы ориентируетесь. Это важный шаг, который не следует пропускать. Тонкие различия в распределении делают это обязательным. Хотя в большинстве случаев возможно создание AppImages, которые запускаются в различных дистрибутивах, это не происходит автоматически, но требует тщательной ручной настройки.

Это звучит сложнее, чем на самом деле, все шаги, кроме тестирования, могут быть выполнены на одном маленьком скрипте bash, как в примере. Как вы можете видеть на https://github.com/probonopd/Emacs.AppImage, легко создать AppImage.

Я рекомендую поработать вместе с авторами вышестоящего программного обеспечения, чтобы сам проект верхнего уровня предоставил официальный AppImage. Таким образом, вышестоящий проект может контролировать взаимодействие конечного пользователя с их программным обеспечением; что-то, что оценивают многие проекты приложений. Пользователи также могут быть уверены, что AppImage составлен точно так, как это предполагали первоначальные авторы программного обеспечения, а не каким-либо образом изменен посредниками.

Другие вопросы по тегам