Как мне создать свой собственный PPA, чтобы поделиться с сообществом Ubuntu? Я пытаюсь создать свой собственный набор пакетов, и мне бы очень хотелось поделиться им с сообществом.
Вам понадобится учетная запись Launchpad.net для создания PPA. Просто нажмите на своего пользователя на Launchpad (нажмите на свое имя в левом верхнем углу) и создайте PPA. Возможно, вам придется сначала подписать Кодекс поведения и зарегистрировать ключ GPG в вашей учетной записи.
Это руководство по созданию базового файла .deb из заданного примера сценария. Сначала в этом уроке мы создадим пример программы на bash, в которой просто показан «HELLO FROM PROGRAM». Затем мы создаем управляющий файл для программы, чтобы сделать установщик Debian. Наконец, они упакованы в файл .deb
.
создать пример программы в bash
mkdir "$HOME/create_deb/pgmdir"
gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
и вставить в нее следующий код
#!/bin/bash
echo 'HELLO FROM PROGRAM' | zenity --text-info
Сделать программу исполняемой
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
Создать файл управления для пакета debian
Создать файл с именем control
внутри папки DEBIAN
mkdir "$HOME"/create_deb/DEBIAN
gedit "$HOME"/create_deb/DEBIAN/control
и вставьте следующие детали
Package: hellodeb
Version: 0.1
Architecture: all
Maintainer: totti
Installed-Size: 6
Depends: zenity, bash
Section: testing
Priority: optional
Homepage: http://askubuntu.com
Description: This is my first debian package.
Guided by Totti Torvalds.
In Description new line start with a space.
Вы можете редактировать содержимое, если хотите. Подробнее о формате этого файла читайте здесь и здесь .
Создать скрипт postinst
, который выполняется сразу после установки пакета
gedit "$HOME"/create_deb/DEBIAN/postinst
, затем вставить
#!/bin/sh
set -e
echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
и сделать его исполняемый файл
chmod +x "$HOME/create_deb/DEBIAN/postinst"
Создайте сценарий prerm
, который выполняется перед удалением пакета
#!/bin/sh
set -e
echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
и сделайте его исполняемым
chmod +x "$HOME/create_deb/DEBIAN/prerm"
[ 1158] Создание структуры пакета и копирование программ, данных и т. Д.
Создайте структуру установленных программ и их данных. В этом примере мы поместили файл в /bin
.
mkdir -p "$HOME"/create_deb/bin
cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
Создайте файл .deb .
dpkg-deb --build "$HOME"/create_deb .
.
автоматически назовет файл .deb
с версией, аркой и т. Д. Или с вашим произвольным именем
dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
Или если вы создадите файл .deb с помощью [ 1185]
debuild -k'your GPG key here' -S
, затем вы можете загрузить его в Ubuntu Launchpad с помощью
dput ppa:<lp-username>/<ppa-name> packet-source.changes
, как описано здесь (источник: создать пакет .deb из скриптов или двоичных файлов). )
Установите только что созданный пакет .deb
. Вы можете открыть его с помощью software-center
, но он может не позволить вам установить. Поэтому я рекомендую использовать gdebi
менеджер пакетов.
sudo apt-get install gdebi
gdebi "$HOME"/create_deb/hellodeb.deb
Теперь вы можете установить его. Во время установки вы должны увидеть диалог gtk
Установка программы: zenity_hello.sh ......
blockquote>
После установки откройте терминал и введите zenity_hello
. Если программа установлена правильно и все в порядке, вы должны увидеть диалог gtk
ПРИВЕТ ИЗ ПРОГРАММЫ
blockquote>
Удаление пакета
sudo apt-get remove zenity_hello
Поскольку ОП хочет простой способ опубликовать свои пакеты, я даю легкий взлом.
требование: учетная запись dropbox (или любая другая служба, например github ) с общей папкой.
Создайте папку внутри вашей Public-Dropbox-Folder, куда вы поместите ваши файлы * .deb:
mkdir ~/Dropbox/Public/deb-packages
или создайте эту папку где-нибудь еще и поместите символическую ссылку в ваш Public folder:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
Перейдите в эту папку и создайте скрипт, который при запуске создает Packages.gz, содержащий всю необходимую информацию о ваших deb-пакетах. создать:
gedit import.sh
положить это в нем:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
сделать его исполняемым:
chmod x import.sh
Скопировать некоторые файлы * .deb в папку. Может быть вашим или некоторыми, которые не доступны через другие репозитории. Затем перейдите в папку и выполните скрипт, который мы там поместили:
cd ~/deb-packages/
./import.sh
Это должно создать так называемый файл Packages.gz , который ищет, чтобы узнать, какие пакеты расположены в это хранилище.
Теперь, подождите, пока Dropbox синхронизирует папку, и извлеките Public-URL из Packages.gz
. Это должно выглядеть примерно так:
http://dl.getdropbox.../Packages.gz
Избавьтесь от конца этой ссылки, добавьте еще несколько слов, и теперь вы можете использовать и заполнить следующую строку для sources.list:
deb http://dl.getdropbox.../deb-packages ./
Вот и все, у вас работает собственный Deb-репозиторий. Всегда синхронизируется локально, но доступно любому, в любое время и в любом месте.
ПРИМЕЧАНИЕ. dpkg-scanpackages
доступен по ссылке dpkg-dev
Используя личный архив пакетов ( PPA ), вы можете распространять программное обеспечение и обновления непосредственно среди пользователей Ubuntu. Создайте исходный пакет, загрузите его, и Launchpad создаст двоичные файлы, а затем разместит их в своем собственном хранилище apt.
Вот подробное объяснение .