Як створити власний власний PPA для спільного використання з спільнотою Ubuntu? Я намагаюся створити свій власний набір пакунків, і я дуже хотів би поділитися ним із спільнотою.
Як створити власний власний PPA для спільного використання з спільнотою Ubuntu? Я намагаюся створити свій власний набір пакунків, і я дуже хотів би поділитися ним із спільнотою.
Відповіді:
За допомогою архіву особистого пакета ( PPA ) ви можете розповсюджувати програмне забезпечення та оновлення безпосередньо користувачам Ubuntu. Створіть свій вихідний пакет, завантажте його, і Launchpad створить бінарні файли, а потім розмістить їх у вашому власному сховищі.
Ось детальне пояснення .
Це підручник зі створення базового файлу .deb із заданого зразкового сценарію. У цьому підручнику спочатку ми створюємо зразкову програму в bash, яка просто показує "Привіт від програми". Потім ми створюємо контрольний файл для програми, щоб зробити інсталятор 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"
Створіть структуру пакету та скопіюйте програми, дані тощо.
Створіть структуру встановлених програм та її даних. У цьому прикладі ми ставимо файл /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 файл за допомогою
debuild -k'your GPG key here' -S
тоді ви можете завантажити його на Labupad Ubuntu за допомогою
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 ......
Після установки відкрийте термінал і введіть zenity_hello
. Якщо програма встановлена правильно і все гаразд, ви повинні побачити діалог gtk
ПРАВО З ПРОГРАМИ
Видалення пакета
sudo apt-get remove zenity_hello
Оскільки ОП хоче простий спосіб опублікувати свої пакети, я даю легкий злом.
вимога: Dropbox (або будь-яка інша служба, наприклад, github ) обліковий запис у загальнодоступній папці.
Створіть папку у своїй папці Public-Dropbox, куди ви помістите файли * .deb:
mkdir ~/Dropbox/Public/deb-packages
або створіть цю папку десь в іншому місці та вставте символьне посилання у свою загальнодоступну папку:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
Зайдіть у цю папку і створіть сценарій, який при виконанні створює Packages.gz, що містить всю необхідну інформацію про ваші деб-пакети. створити:
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
Позбавтеся від кінця цього посилання, додайте до нього ще кілька слів, і тепер ви можете використовувати та заповнити наступний рядок для source.list:
deb http://dl.getdropbox.../deb-packages ./
Ось це у вас працює власне сховище боргів. Завжди синхронізовано локально, але доступне для всіх, у будь-який час та в будь-якому місці.
ПРИМІТКА: dpkg-scanpackages
доступний із dpkg-dev
посилання
releases/
див. github.com/rubo77/mouse-speed/blob/master/release/…
debuild -us -uc -k'your GPG key here'
тоді ви можете завантажити його dput ppa:<lp-username>/<ppa-name> packet-source.changes
на Launchpad, як описано тут (джерело: створити .deb-пакет із сценаріїв або двійкових файлів )
debuild -k'your GPG key here' -S
оскільки Launchpad створить файл deb (якщо він не буде відхилений) - що чи був би "-us -uc"?
Для створення PPA вам знадобиться обліковий запис Launchpad.net. Просто натисніть на свого користувача на Launchpad (натисніть своє ім’я в лівій верхній частині) і створіть PPA. Можливо, вам доведеться спершу підписати Кодекс поведінки та зареєструвати у вашому обліковому записі ключ GPG.