Chciałbym stworzyć zupełnie nowy pakiet deb, aby zainstalować serię plików. Jeśli to w ogóle możliwe, chciałbym rozpakować folder zawierający te pliki w ramach instalacji do znanej lokalizacji folderów. W przeciwnym razie bardzo przydatna byłaby wiedza na temat pakowania folderów źródłowych i plików.
Pytanie brzmi - czy jest to możliwe, a jeśli tak - w jaki sposób?
Podajmy przykład:
~/mypluginfolder/
zawiera pliki x
, y
podfolder o nazwie abc
i wewnątrz tego innego pliku o nazwie z
.
Chcę tar tego folderu: tar -cvf myfiles.tar ~/mypluginfolder
Zakładam, że wyglądałby mój pakiet debian
myfiles.tar.gz
myfiles+ppafoss_0.1-1/
myfiles.tar
DEBIAN
changelog, compat, control, install, rules source
Czy można w jakiś sposób rozpakować myfiles.tar
do znanej lokalizacji folderu na przykład
/usr/share/rhythmbox/plugins/
Zatem końcowy wynik byłby:
/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z
Jeśli - zakładając, że starter potrzebuje źródła, szuka się porady, gdzie powinienem upuścić foldery i pliki źródłowe do struktury pakietu deb.
To ostatecznie stanie się serią indywidualnych pakietów PPA startera.
To, co wolę (ale może nie być w stanie osiągnąć ...), to ograniczenie mojego opakowania do minimum - utwórz serię pakietów z szablonu i dostosuj absolutne minimum (dziennik zmian itp. Struktura pliku / pliku tar i folderu tar) .
źródło
Odpowiedzi:
Poniżej zakładam, że źródło jest otwarte (np. Skrypty Pythona), które w związku z tym nie są powiązane z żadną architekturą (np. Amd64 lub i386), stąd „wszystko”. Jeśli masz jakieś źródło C, musisz użyć
Architecture: amd64 i386
w swoimcontrol
pliku źródłowym .tworzenie pakietu gotowego na Launchpad
Launchpad akceptuje tylko pakiety źródłowe, więc utwórz plik,
rules
który instaluje pliki we właściwych miejscach. Dla wygody skorzystam z debhelpera . Katalog z twoimi plikami powinien wyglądać następująco:debian/copyright
Plik może być również użyteczny dla informowania użytkowników o pozwoleniach związanych z pakietem. Nie sądzę, że potrzebujeszpostinst
skryptu, ponieważ musisz tylko wyodrębnić niektóre pliki.compat
powinien zawierać poziom kompatybilności debhelpera, powiedz „8”. ( więcej szczegółów znajduje się na stronie podręcznika debhelpera )changelog
Plik można edytować zdch
poleceniem, dostępny zdevscripts
pakietem.rules
( Za pomocą debhelpera) powinien zawierać:Zrób to za pomocą
chmod 755 debian/rules
. Pakiet źródłowy można zbudować za pomocądebuild -S
. Pamiętaj, aby znajdować się w katalogu o nazwie<package-name>-<version>
. Więcej informacji na tematoverride_
zachowania idh
polecenia można znaleźć na stronie podręcznika .Przewodnik dla nowych opiekunów pakietów Debiana był dla mnie bardzo cenny, aby to zrozumieć, zaleca się przeczytanie. Przykładowe opakowanie można znaleźć na https://github.com/Bumblebee-Project/bumblebee-ppa .
tworzenie pakietu z istniejącego drzewa plików
dpkg-deb -b
może być użyty do tworzenia tarballi z istniejącego drzewa plików. Najpierw zacznij od utworzenia katalogu, który powinien nosić nazwę od twojego pakietu. Zakładam, że chcesz to nazwaćmyplugin
i włożyć/usr/share/rhythmbox/plugins/mypluginfolder
. Ponadto utwórzDEBIAN
katalog (wielkie litery!) Do przechowywania informacji o pakiecie:Skopiuj swoje pliki:
Następnie potrzebujesz tak zwanego pliku kontrolnego , w
myplugin/DEBIAN/control
którym znajduje się opis pakietu. Zawartość takiego pliku znajduje się poniżej:Teraz możesz opcjonalnie zweryfikować zawartość paczki. Następne polecenie wyświetla listę wpisów w pliku i katalogu
myplugin
:Jeśli jesteś zadowolony, skompiluj pakiet w bieżącym katalogu:
Pojawi się nowy plik o nazwie jak
<package>_<version>_<architecture>.deb
w tym przykładziemyplugin_1.0-1_all.deb
. Możesz użyćless
programu, aby zajrzeć do pliku. Na przykładless myplugin_1.0-1_all.deb
.źródło