Jak utworzyć własny niestandardowy PPA, aby udostępnić go społeczności Ubuntu? Próbuję utworzyć własny zestaw niestandardowych pakietów i naprawdę chciałbym go udostępnić społeczności.
Jak utworzyć własny niestandardowy PPA, aby udostępnić go społeczności Ubuntu? Próbuję utworzyć własny zestaw niestandardowych pakietów i naprawdę chciałbym go udostępnić społeczności.
Odpowiedzi:
Korzystając z osobistego pakietu pakietów ( PPA ), możesz rozpowszechniać oprogramowanie i aktualizacje bezpośrednio wśród użytkowników Ubuntu. Utwórz pakiet źródłowy, prześlij go, a Launchpad zbuduje pliki binarne, a następnie umieści je w swoim własnym repozytorium apt.
Oto szczegółowe wyjaśnienie .
To jest samouczek na temat tworzenia podstawowego pliku .deb z danego przykładowego skryptu. W tym samouczku najpierw tworzymy przykładowy program w bash, który po prostu pokazuje „CZEŚĆ Z PROGRAMU”. Następnie tworzymy plik kontrolny dla programu, aby stworzyć instalator Debiana. Na koniec są pakowane do .deb
pliku.
utwórz przykładowy program w bash
mkdir "$HOME/create_deb/pgmdir"
gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
wklej do niego następujący kod
#!/bin/bash
echo 'HELLO FROM PROGRAM' | zenity --text-info
Spraw, aby program był wykonywalny
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
Utwórz plik kontrolny dla pakietu debian
Utwórz plik o nazwie control
wewnątrz folderuDEBIAN
mkdir "$HOME"/create_deb/DEBIAN
gedit "$HOME"/create_deb/DEBIAN/control
i wklej następujące szczegóły
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.
Możesz edytować zawartość, jeśli chcesz. Przeczytaj więcej o formacie tego pliku tutaj i tutaj .
Utwórz postinst
skrypt, który jest wykonywany natychmiast po instalacji pakietu
gedit "$HOME"/create_deb/DEBIAN/postinst
następnie wklej
#!/bin/sh
set -e
echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
i uczynić go wykonywalnym
chmod +x "$HOME/create_deb/DEBIAN/postinst"
Utwórz prerm
skrypt, który jest wykonywany przed usunięciem pakietu
#!/bin/sh
set -e
echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
i uczynić go wykonywalnym
chmod +x "$HOME/create_deb/DEBIAN/prerm"
Twórz strukturę pakietów i kopiuj programy, dane itp.
Utwórz strukturę zainstalowanych programów i ich danych. W tym przykładzie umieściliśmy plik w /bin
.
mkdir -p "$HOME"/create_deb/bin
cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
Zbuduj plik .deb .
dpkg-deb --build "$HOME"/create_deb .
.
Zostanie automatycznie nazwę .deb
pliku z wersji, łuk itp lub nazwę niestandardowego
dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
Lub jeśli zbudujesz plik .deb
debuild -k'your GPG key here' -S
następnie możesz przesłać go do Ubuntu Launchpad za pomocą
dput ppa:<lp-username>/<ppa-name> packet-source.changes
jak opisano tutaj (źródło: utwórz pakiet .deb ze skryptów lub plików binarnych )
Zainstaluj nowo utworzony .deb
pakiet. Możesz go otworzyć za pomocą, software-center
ale może nie pozwolić na instalację. Dlatego polecam użyć gdebi
menedżera pakietów.
sudo apt-get install gdebi
gdebi "$HOME"/create_deb/hellodeb.deb
Teraz możesz go zainstalować. Podczas instalacji powinien zostać wyświetlony dialog gtk
Instalowanie programu: zenity_hello.sh ......
Po zainstalowaniu otwórz terminal i wpisz zenity_hello
. Jeśli program został poprawnie zainstalowany i wszystko w porządku, powinieneś zobaczyć okno dialogowe GTK
CZEŚĆ Z PROGRAMU
Usuwanie pakietu
sudo apt-get remove zenity_hello
Ponieważ OP chce prostego sposobu na opublikowanie swoich pakietów, daję łatwy hack.
wymaganie: konto dropbox (lub dowolna inna usługa, na przykład github ) z folderem publicznym.
Utwórz folder w folderze publicznym Dropbox, w którym umieścisz pliki * .deb:
mkdir ~/Dropbox/Public/deb-packages
lub utwórz ten folder gdzie indziej i umieść dowiązanie symboliczne w swoim folderze publicznym:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
Przejdź do tego folderu i utwórz skrypt, który po uruchomieniu tworzy Packages.gz, zawierający wszystkie potrzebne informacje o twoich pakietach deb. Stwórz:
gedit import.sh
włóż to w to:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
spraw, by był wykonywalny:
chmod x import.sh
Skopiuj niektóre pliki * .deb do folderu. Może to być twoje własne lub niektóre, które nie są dostępne za pośrednictwem innych repozytoriów. Następnie przejdź do folderu i uruchom skrypt, który tam umieściliśmy:
cd ~/deb-packages/
./import.sh
To powinno stworzyć tak zwany plik Packages.gz , który będzie szukał informacji, które pakiety znajdują się w tym repozytorium.
Teraz poczekaj, aż Dropbox zsynchronizuje folder i pobierz publiczny adres URL zPackages.gz
. Powinno to wyglądać mniej więcej tak:
http://dl.getdropbox.../Packages.gz
Pozbądź się końca tego linku, dodaj do niego kilka słów, a teraz możesz użyć i wypełnić następujący wiersz dla sources.list:
deb http://dl.getdropbox.../deb-packages ./
To jest to, że masz własne repozytorium deb. Zawsze synchronizowany lokalnie, ale dostępny dla każdego, zawsze i wszędzie.
UWAGA: dpkg-scanpackages
jest dostępny w celach dpkg-dev
informacyjnych
releases/
patrz github.com/rubo77/mouse-speed/blob/master/release/…
debuild -us -uc -k'your GPG key here'
, możesz przesłać go dput ppa:<lp-username>/<ppa-name> packet-source.changes
do Launchpada w sposób opisany tutaj (źródło: utwórz pakiet .deb ze skryptów lub plików binarnych )
debuild -k'your GPG key here' -S
ponieważ Launchpad utworzy plik deb (jeśli nie zostanie odrzucony) - co byłoby dla `-us -uc`?