deb fájl egy archívum formátumban ar, amely tartalmazza beállítási fájlok programok, a programra vonatkozó információk, valamint a program telepítése és eltávolítása előtt és után végrehajtott szkriptek (parancsfájlok) (a szkriptek jelenléte nem kötelező - előfordulhat, hogy nem szerepelnek a csomagban).
A deb fájl formátumát a man pages (man pages) deb(5) írja le – ez a súgó akkor jelenik meg, ha beírja a terminálba a man deb parancsot. Az interneten számos oldal is tartalmazza ezeket az információkat – csak írja be a deb(5) kifejezést a keresősávba, hogy megtalálja őket. Ez a kézikönyv nem szerepel itt, mert a hivatalos Debian Fejlesztői Kézikönyv, a Package Format Reference (amely az írás idején a következő címen található: http://www.debian.org/doc/manuals/debian-faq/ch- pkg_basics.en.html) azt írják, hogy a csomagok formátuma változhat, ezért javasolt a dpkg-deb segédprogram használata velük dolgozni. A dpkg-deb segédprogrammal kapcsolatban segítséget kaphat, ha beírja a terminálba a man dpkg-deb parancsot.
A GUI-deb program feladata pontosan az, hogy létrehozza a szükséges adatokat tartalmazó könyvtárat, és lefuttatja a dpkg-deb programot, megadva ezt a könyvtárat és a többi szükséges paramétert.
A dpkg-deb számára a telepítőcsomag létrehozásához szükséges megfelelő könyvtárnak először is tartalmaznia kell egy "DEBIAN" alkönyvtárat. Ennek a könyvtárnak tartalmaznia kell minden olyan adatot, amelyet nem másol a rendszerbe, hanem a programok közvetlenül használnak a csomagokkal való munkához - a csomagra vonatkozó információkat, a telepítés előtt és után végrehajtott szkripteket stb. A DEBIAN könyvtárban található fájlok nem kerülnek annak a számítógépnek a fájlrendszerére, amelyre a csomag telepítve van, amikor a csomag telepítve van.
A "DEBIAN" könyvtáron kívül vannak azok a fájlok, amelyek annak a számítógépnek a fájlrendszerébe másolódnak, amelyre a csomag telepítve lesz. A fájloknak abban a könyvtárban kell elhelyezkedniük, amelybe a csomag telepítésekor kerülnek. Vagyis a dpkg-deb számára létrehozott könyvtáron belül létre kell hozni egy másolatot a fájlrendszer számunkra szükséges részeiről - mintha ez a könyvtár lenne a gyökér ("/"). Például, ha annak a könyvtárnak a neve, amely alapján a csomag létrejön, "~/TMP_DEBS/MyProgram", és ez szükséges a telepítéskor fájlrendszer a "MyProgram.png" fájlt a "/usr/share/pixmaps" könyvtárba írták - létre kell hozni az "usr" könyvtárat a "~/TMP_DEBS/MyProgram" könyvtárban, benne - a "share" könyvtárat, belül a "share" - a "pixmaps" könyvtár ", és már a "pixmaps" könyvtárban helyezze el a "MyProgram.png" fájlt. Ennek eredményeként a fájl teljes elérési útja a következő lesz: "~/TMP_DEBS/MyProgram/usr/share/pixmaps/MyProgram.png". Csomag létrehozásakor a "~/TMP_DEBS/MyProgram" könyvtár egy része csonkolásra kerül, és a telepítés során a "MyProgram.png" fájl csak a kívánt "/usr/share/pixmaps" címre kerül. Így minden fájlhoz létre kell hozni a szükséges könyvtárakat.
A könyvtár létrehozása után már csak a dpkg-deb futtatása van hátra, átadva a szükséges paramétereket. A csomagok felépítéséhez szükséges legfontosabb dpkg-deb beállítások a "Dpkg-deb segédprogram parancssori beállításai" részben találhatók. Ha nincs hiba a vezérlőfájlban, akkor létrejön a telepítőcsomag.
Leírtam a program forrásból való felépítését, valamint egy egyszerű deb csomag létrehozását. Ezúttal az alkotásukkal szeretnék részletesebben foglalkozni. Ez az útmutató nem állítja, hogy útmutató a fejlesztők vagy karbantartók számára, ezért a végén hivatkozásokat adok részletes útmutatók fejlesztőktől Debian.
A deb-csomag létrehozásának számos módja van. Itt nem írom le a build szervereken használt nagy build rendszereket, mert a legtöbb embernek nincs rá szüksége. A legtöbb közül kettőt írok le egyszerű módokon csomagod elkészítése. Először is telepítenünk kell néhány eszközt a munkához:
sudo apt-get install build-essential git automake devscripts make libtool fakeroot automake autotools-dev
Ezután létre kell hoznia egy digitális kulcsot. Ez a lépés nem kötelező, de ha a csomagok újraosztását tervezi, rendkívül bölcs dolog lenne aláírni azokat a kulcsával. Ez lehetővé teszi a csomagot letöltő felhasználó számára, hogy ellenőrizze, hogy Ön hozta-e létre azt. Kulcs létrehozásához használhat grafikus segédprogramokat ( tengeri ló, kgpg) vagy a terminálban:
DEBEMAIL="az Ön e-mail címe, amelyet a kulcs létrehozásakor megadott"
DEBFULLNAME="Az Ön neve (vagy álneve)"
export DEBEMAIL DEBFULLNAME
Ez automatikusan hozzáadja az Ön digitális aláírás csomagok aláírásakor. Ezután szükségünk van egy archívumra forráskód. Egy egyszerű példát fogok levezetni, mert a program összetettségétől függően további konfigurációra van szükség (telepítés utáni szkriptek létrehozása, összeállítási szabályok stb.). Tegyük fel, hogy van egy archívumunk a program forráskódjával "programom" - myprogramm_1.0.tar.gz. Csomagolja ki a saját könyvtárába (vagy bárhová, ahol szeretné). Kérjük, vegye figyelembe: a kicsomagolás utáni könyvtárban szerepelnie kell a névnek myprogram-1.0. Név, majd kötőjel – verziószám. Most nyisson meg egy terminált, és futtassa:
cd ~/myprogram-1.0
dh_make --createorig
Beköltöztünk a forráskönyvtárba, és létrehoztunk vele egy archívumot és egy alap debianizálást. A második parancs után egy üzenet jelenik meg, ahol ki kell választani a csomag típusát: s (egyetlen, egyszeri), m (több, több csomag), l (könyvtár, könyvtár), k (kernel modul, kernel modul). Esetünkben ez az s. Most egy kicsit be kell állítanunk a dolgokat. Lépjen a /myprogramm-1.0/debian könyvtárba, és nyissa meg a fájlt ellenőrzés bármelyik szövegszerkesztőben. Ez a fő fájl a csomag felépítéséhez. Minden alapvető információt tartalmaz. Valahogy így néz ki:
Forrás: myprogram
szakasz: admin
Prioritás: nem kötelező
Fenntartó: Aleksey Samoilov
Build-Depends: debhelper (>= 5)
Szabványok – Verzió: 3.9.6
Honlap: http://www.example.com
Csomag: myprogram
Építészet: minden
Függ: $(shlib:Depends), $(misc:Depends)
szakasz: admin
Prioritás: nem kötelező
Leírás: Az új programom
A programom egy egyszerű példa a saját deb-csomag létrehozására
Menjünk sorban. Az első szakasz a forráscsomag nevét tartalmazza. Ezután a szoftver rész (in ez az eset admin). Ezután a prioritás (nem kötelező), a karbantartó neve és e-mail címe (azaz az Öné), build függőségek (az építéshez szükséges csomagok), a szabvány verziója (on Ebben a pillanatban 3.9.7), majd a csomag neve a build után, az architektúra, amelyre készült (minden támogatott architektúra), a szoftverrész, a prioritás, Rövid leírásÉs Teljes leírás. Mivel a példánk egyszerű, ez elég az induláshoz. Meg is nyithatja a fájlt szerzői jogés oda írja be a nevét és az e-mail címét. Fájlban változási napló tartalmazza a szoftver minden verziójához tartozó változtatások listáját. Mivel ez az első build, jeleznie kell, hogy ez az első kiadás, és be kell zárnia egy bizonyos hibát (hiányzik ezt a csomagot az adattárban). A hibaszám a buldózerről írható. Ha újraépít egy csomagot, először módosítsa a verzióját a paranccsal dch-i A debian könyvtárban lévő fájlok kiterjesztéssel .volt példák. Bonyolultabb csomagok készítésekor ezekre lesz szüksége további fájlok. Ilyenek például a telepítés utáni szkriptek ( postinst), egy fájl, amely ellenőrzi új verzió tarball forráskóddal ( néz) stb. Fájl szabályokat egy makefile, a csomag összeállításának szabályai. Mert egyszerű programok nem módosíthatja, más esetekben - szerkesztenie kell, meg kell adnia az összeállítási paramétereket, vagy telepítenie kell az ikonokat. Sok dolog.
Most, hogy kitöltötte a vezérlőfájlt, elkezdheti az építést. Ehhez futtassa a parancsot, miközben a forráskóddal rendelkező könyvtárban van felépíteni. A rendszer konfigurálja, lefordítja a programot, csomagba csomagolja, ellenőrzi a gyakori hibákat a debianizálás során, és kétszer kéri, hogy adja meg a kulcs jelszavát (ha nem Ön hozta létre, akkor nem történik semmi). Most az egy szinttel magasabb könyvtárban (esetünkben a home könyvtárban) több fájlt fog látni, köztük a keresett deb csomagot. Most már telepíthető a paranccsal sudo dpkg -i myprogramm-1.0-1.deb vagy a Gdebi grafikus kezelőjében.
Így állíthatsz össze egy egyszerű csomagot. De mi van akkor, ha nem akarja telerakni a rendszert egy csomó felépítési függőséggel? Ezen túlmenően, egyes csomagok összeállításakor néhány módosított fájl is felhasználható. Például a könyvtárak újabb verziói, ha háttérportokról frissítette a rendszert, vagy különféle változtatások a konfigurációkban. Tovább hasonló esetek Te tudod használni Virtuális gép, konténer, vagy használjon speciális pbulder nevű eszközt. pbuilder egy eszköz egy tiszta környezet létrehozására, amely csak azt tartalmazza, ami az építéshez szükséges. A rendszer nem tömődik el. felesleges fájlok, a program összeállítása pedig a laboratóriumban történik. Telepítés:
sudo apt install pbuilder
Mondok egy példát a konfigurációmra, amivel nem csak a különböző Debian kiadásokhoz, hanem Ubuntuhoz is lehet csomagokat építeni.
sudo nano /etc/pbuilderrc
Illessze be a következő tartalmat:
STABLE_CODENAME="stabil"
OLDSTABLE_CODENAME="régi istálló"
DEBIAN_SUITES=($UNSTABLE_CODENAME, $TESTING_CODENAME, $STABLE_CODENAME $STABLE_BACKPORTS_SUITE $OLDSTABLE_CODENAME
"sid" "nyúlik" "jessie" "ziháló")
UBUNTU_SUITES=("pontos" "megbízható" "xenial")
UBUNTU_MIRROR="mirror.yandex.ru"
DEBIAN_MIRROR="tükör.yandex.ru"
: $(DIST:="$(lsb_release --short --codename)")
: $(ARCH:="$(dpkg --print-architecture)")
NÉV="$DIST"
if [ -n "$(ARCH)" ]; akkor
NÉV="$NAME-$ARCH"
# a következő sor szükséges a különböző architektúrákhoz való építéshez
DEBOOTSTRAPOPTS=("--arch" "$ARCH" "$(DEBOOTSTRAPOPTS[@])")
fi
BASETGZ="/home/sunderland93/pbuilder/$NAME-base.tgz"
DISTRIBUTION="$DIST"
BUILDRESULT="/home/sunderland93/pbuilder/$DIST/eredmény/"
APTCACHE="/home/sunderland93/pbuilder/$NAME/aptcache/"
BUILDPLACE="/home/sunderland93/pbuilder/build/"
if $(echo $(DEBIAN_SUITES[@]) | grep -q $DIST); akkor
MIRRORSITE="http://$DEBIAN_MIRROR/debian/"
COMPONENTS="fő hozzájárulás nem ingyenes"
elif $(echo $(UBUNTU_SUITES[@]) | grep -q $DIST); akkor
MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
COMPONENTS="fő korlátozott univerzum multiverzum"
más
echo "Ismeretlen terjesztés: @DIST"
kilépés 1
fi
export DPKG_GENSYMBOLS_CHECK_LEVEL=4
USE_PDEBUILD_INTERNAL=igen
Cserélje le a sunderland93-at a rendszer nevére. Így tudunk majd csomagokat építeni Debian 7, 8, tesztelő és instabil, valamint Ubuntu 12.04, 14.04 és 16.04 verziókhoz. Az összeállításhoz letöltött függőségek bekerülnek pbuilder/terjesztési név/aptcache. Ez egyébként nagyon hasznos - lesz egy alaparchívumunk, amely nem tömődik el baloldali függőségektől, és több gigabájtot nyom. A környezetet pedig programonként külön-külön készítik elő. Ezeket a függőségeket be lehet varrni az alaparchívumba, de ezt nem javaslom. Most hozzunk létre egy alaparchívumot, amely tiszta építési környezetet tartalmaz. Vegyük például a 64 bites Debian 8-at:
sudo DIST=jessie ARCH=amd64 pbuilder --create
Megkezdődik az archívum létrehozási folyamata. Miután elkészült, elkezdheti felépíteni a programot. Ehhez nyisson meg egy terminált, lépjen a forráskóddal rendelkező könyvtárba, és futtassa:
sudo DIST=jessieARCH=amd64 pdebuild
És mi várunk. A letöltött csomagok gyorsítótárban lesznek, és legközelebb nem fogom letölteni. A felépítés után a kész deb csomag megjelenik a könyvtárban pbuilder/jessie/result. Ez minden.
Ma egy elvont példán elmondom, hogyan Jobb*.deb csomag létrehozása Ubuntu/Debian számára. A csomagot binárissá tesszük. Itt nem vesszük figyelembe azokat a csomagokat, amelyek forrásokból binárisokat állítanak össze: az alább bemutatott ismeretek elsajátításával a jövőben, kész példák segítségével megértheti a lényeget és analógia útján cselekedhet :)
A cikkben nem lesz felesleges „kézi” felhajtás: a csomagformátum meglehetősen egyszerű, és ami a legfontosabb, logikus szerkezetté fejlődött, és minden szó szerint térdre esik, néhány speciális segédprogram segítségével.
Bónuszként a cikk végén lesz egy példa a saját helyi tárhely gyors létrehozására: a csomagok telepítése a tárolóból lehetővé teszi a függőségek automatikus nyomon követését, és természetesen! - telepítse az összeset konzol parancs több gépen is :)
Azok számára, akik nem akarnak belemenni a nagy teljesítményű Linux szoftvertelepítő rendszerbe, javaslom, hogy látogassanak el a CheckInstall program oldalára: a „make install” parancsból automatikusan létrehoz egy deb csomagot;) És mi a kíváncsiakkal együtt -
Tulajdonság | Leírás | Példák |
---|---|---|
- alap - | ||
csomag: | Csomag neve: - csak latin nyelv, számok és kötőjelek. A telepítés során használt név: apt-get install |
Csomag: supersh |
változat: | A csomag (és a benne lévő program) verziója. A frissítés meghatározására szolgál. Az elfogadott formátum a következő:<версия_программы>-<версия_пакета> . ajánlom Mindig jelölje meg a csomag verzióját: a csomag szerkezetének megváltoztatásakor a szám eggyel nő. Az érvényes karakterek meglehetősen szabadok: használhatja a dátumot és a betűket. Tekintse meg ma a példákat az adattárban :) |
Verzió: 1.0-1 Verzió: 2009.12.12-1 |
Biztosítja | Az alkalmazásnév (esetleg virtuális), amely a csomag telepítése eredményeként regisztrálva van a rendszerben. Ritkán használatos: többnyire akkor, ha módosítani kell a csomag nevét, vagy ha egynél több csomag ugyanazt a funkciót kínálja. Például az Apache és az nginx csomagok biztosítják a httpd démon képességet: Biztosítja: httpd Biztosan hibába ütközött a telepítés során: "virtuális csomag". Ez van :) |
Biztosítja: szupersh |
karbantartó | A csomag karbantartójának neve és e-mail címe: az alkalmazást "debianizáló" személy. A formátum tetszőleges, de a név elfogadott |
Karbantartó: o_O Tync |
építészet | A processzor architektúrája, amelyhez a csomagot szánják. Érvényes értékek: i386, amd64, all, source mindet a szkriptekhez használják: hordozhatóak, igaz? :) A forrás a lefordított forráscsomagokhoz használatos |
Építészet: minden |
Szakasz | Megadja azt a feladatot, amelyhez az alkalmazást általában használják (alkalmazáscsoport). Lehetséges értékek: admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome, grafika, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-free , oldlibs, otherosfs, perl, python, tudomány, shell, hang, tex, szöveg, segédprogramok, web, x11 |
szekció: egyéb |
Leírás | A csomag leírása. A leírás két részből áll: egy rövid leírásból (70 karakter) ugyanabban a sorban, és egy hosszú leírásból a következő sorokban, szóközzel kezdve. A kiterjesztett leírásban minden új sor figyelmen kívül marad. \n egyetlen pontot használ a beszúráshoz. |
Leírás: rövid. ␣ Hosszú ␣ ide megy. ␣. ␣Új vonal. |
- kapcsolatok és függőségek - | ||
Attól függ | A csomag telepítéséhez szükséges csomagok vesszővel elválasztott listája. A csomagnév után az operátorok használatával megadhat egy verziókorlátot zárójelben:<<, =, >>, <=, >=. Ha az operátor nincs megadva, a >= használatos. |
Függ: dpkg, libz (>= 1.2.3), jpeg (= 6b), png (< 2.0) |
Előre függ | A csomag telepítéséhez szükséges csomagok listája. Ezekre a függőségekre szükség lehet a csomagtelepítési szkriptekhez: például a flash-installer csomaghoz a wget szükséges Verziókorlátozásokat használhat (lásd: Függ). |
Előre függ: wget (>= 1,0) |
Konfliktusok | Azon csomagok listája, amelyek nem telepíthetők ezzel egy időben. A telepítés sikertelen lesz, ha a felsorolt csomagok közül legalább egy már telepítve van. |
konfliktusok: crapscript |
Lecseréli | Azon csomagok listája, amelyek fájljait ez a csomag módosította. Szükséges, ha olyan "patch csomagot" hoz létre, amely megváltoztat valamit: ellenkező esetben, ha valaki más csomagjának fájljait lecseréli, telepítési hiba lép fel. Például van egy ilyen csomagom, ami foltozza az UT2004-et, és eltávolítja az irányadó rakétavető hangját :) |
Csere: ut2004 |
Ajánlások | A telepítéshez ajánlott csomagok listája Ezek a csomagok nem kötelezőek, de általában az árammal együtt használatosak |
Ajánlott: szuperplatform |
Javaslatok | A telepítésre kínált csomagok listája. Ezek a csomagok opcionálisak, de a program még jobban működik velük :) Elméletileg a csomagkezelőnek kellene felajánlania a telepítésüket. |
Javaslatok: supersh-modules |
Felépítéstől függ | (Csak az építészethez: forrás) A források összeállításához szükséges csomagok listája. Ugyanaz, mint a függ, de logikailag elválasztva. |
Build-Depends: cmake |
- extra - | ||
Telepített méret | A csomagfájlok mérete kilobájtban. Csak egy szám a legközelebbi egész számra kerekítve. A csomagkezelő a szükséges teljes lemezterület meghatározásához használja. |
Telepített méret: 3 |
kiemelten fontos | Csomag prioritás: mennyire fontos a rendszerben Lehetséges értékek: extra, opcionális, standard, fontos, kötelező (az ilyen csomagokat egyáltalán nem távolítják el!). |
Prioritás: nem kötelező |
Alapvető | Ha ezt az attribútumot "igen"-re állítja, a csomag nem távolítható el. | Alapvető: igen |
Eredet | Karakterlánc: honnan származnak a csomagban lévő programok. Általában a szerző webhelyének, e-mail címének vagy nevének URL-jét használják. | Eredete: agy |
X forrás | Teljes link a *.tar.gz forrásarchívumhoz | X-Forrás: ...*.tgz |
O_O Tync
A csomagtelepítő szkriptekkel való munkáról később lesz szó.
Köszi Condorious a tippet :)
# ======[ Csapdahibák ]======#
set -E # hagyja, hogy a shell függvények örököljék az ERR trap-et
# Trap nem normál kilépési jelek:
# 1/HUP, 2/INT, 3/QUIT, 15/TERM, ERR
trap err_handler 1 2 3 15 ERR
function err_handler(
local exit_status=$(1:-$?)
logger -s -p "syslog.err" -t "ootync.deb" "supersh.deb script "$0" hibakód: $exit_status ($BASH_LINENO sor: "$BASH_COMMAND")"
kilépés $exit_status
}
A beállító szkript kódja...
FIGYELEM: a lemezt még nem tesztelték széles körben, ellenőrizze újra! Nemrég találkoztam a hibakeresés lehetetlenségével :)
Sablon – egyedi (ugyanazon a csomagon belüli) sablonazonosító. Ha egy szkriptnek egy adott párbeszédablakot kell meghívnia, akkor ezt a nevet használjuk.
Típus - sablon típusa. A következő típusok vannak meghatározva: karakterlánc, jelszó, logikai érték, kijelölés, többszörös kijelölés, szöveg, megjegyzés, hiba.
Default-value – az alapértelmezett érték: a felhasználó egyszerűen egyetérthet vele.
Leírás - a vezérlőfájlhoz hasonlóan két mezőből áll: egy rövid leírásból és hosszú szöveg. Az első az "ablak" címe, a második a felhasználótól elvárt részletesebb leírás. Javasoljuk, hogy ne olyan szavakat használjunk, mint az „enter”, hanem azonnal a lényeget: „Script üdvözlés”, „Csatlakozási pont”, ...
típus | Sablon leírása |
---|---|
húr | Szöveges karakterlánc prompt |
Jelszó | Jelszókérés. Nyilvánvaló okokból nincs alapértelmezett érték ehhez a sablontípushoz :) |
logikai érték | Pipa :) A karakterlánc értéke "true" vagy "false" |
válassza ki | Több lehetőség közül választhat. Választási lehetőségek: igen, nem, talán |
többszörös választás | Több lehetőség kiválasztásának lehetősége jelölőnégyzetekkel. Az opciók egy további sablonattribútumban állnak rendelkezésre: Választási lehetőségek: szex, drog, rock-n-roll |
szöveg | Szöveg megjelenítése: néhány nem nagyon fontos információ |
jegyzet | Szöveg megjelenítése: fontos információk |
hiba | Szöveget jelenít meg a képernyőn: nagyon fontos információ, kritikus. |
# Debconf parancsok csatlakoztatása
"$1" tok
konfigurálás|újrakonfigurálás)
# Kérés
# A válasz kezelése
üdvözlés = "$RET"
echo "$greeting" > /etc/supersh/greeting.txt
;;
*)
echo "a konfiguráció ismeretlen argumentummal meghívva: \`$1"" >&2
kilépés 1
;;
esac
# Kérés
db_input médium "supersh/greeting" || igaz # inicializálás
db_go || igaz # jelenítse meg a kérést a képernyőn
# A válasz kezelése
db_get "supersh/greeting" # Érték beolvasása a $RET változóba
üdvözlés = "$RET"
echo "$greeting" > /etc/supersh/greeting.txt
Már itt van egy kellemetlen les: vegye figyelembe, hogy a médium párbeszédpanel prioritása a db_input függvénynek van átadva. A debconf esetében beállíthatunk egy minimális prioritást: az alatta lévő prioritású párbeszédpanelek nem jelennek meg, de az alapértelmezett érték (a sablon alapértelmezése) veszik át! Hogy ez PONTOSAN ne forduljon elő, a kritikus prioritást használjuk :) Ráadásul grafikus felhasználói felületről telepítve magasabb a küszöb a kérdések megjelenítésére, és ezek közül sok egyáltalán nem jelenik meg.
Lehetséges prioritások: alacsony - az alapértelmezett mindig használatos, közepes - az alapértelmezett általában megfelelő, magas - az alapértelmezett nem kívánatos, kritikus - a felhasználó figyelme létfontosságú.
|| A true arra szolgál, hogy megakadályozza a szkript elhalását a bash-nak átadott "-e" opció miatt.
Ebben a szkriptben is azt javasoljuk, hogy a pigot használja a hibák elkapására, különben az újraterjeszthető csomagban problémák adódhatnak a hibakeresés során :)
A debconf használatának minden finomsága (függvények, metódusok, opciók, hibakódok) egy meglehetősen bőbeszédű manában van leírva: man debconf-devel .
Egy utolsó dolog: ha egy csomagot eltávolítanak a purge paranccsal, a debconf-nak a csomaginformációkat is ki kell törölnie az adatbázisából. Például elmenti a felhasználó választását a db_input lekérdezésekre.
Az adatok törléséhez hozzá kell adnia a következőket a postinst szkripthez:
if [ "$1" == "tisztítás" ] && [ -e /usr/share/debconf/confmodule ] ; akkor
. /usr/share/debconf/confmodule
db_purge
fi
Egy egyszerű adattár létrehozásával foglalkozó vállalkozásunkban nem minden mező játszik alapvető szerepet, és csak a „mi az mi” vizuális meghatározására szolgál :)
Megpróbálom a lehető legvilágosabban elmagyarázni a deb csomagok létrehozásának folyamatát a ruby-zookeper példaként. Azonnal figyelmeztetem, hogy az általam leírt rubin drágakövek csomagolási módszer hibás, ehhez jobb a gem2deb használata, de mivel építs ruby-zookeper-t forrásból a gem2deb segítségével legújabb verzió Nem sikerült, akkor itt a legegyszerűbb összeszerelési mód.
Ha rubincsomagokat fog építeni a gem2deb-en keresztül az ajánlásoknak megfelelően, jobb, ha hozzáadja a sort
Exportálás DH_RUBY_IGNORE_TESTS=összes/exportálás DH_RUBY_IGNORE_TESTS=minden
debian/rules-ban.
Mert Mivel ruby kódot fogunk építeni, szükségünk lesz rubyra és egy sor eszközre a deb csomagok felépítéséhez.
sudo apt-get install ruby dpkg-dev
Ha a ruby régi verziója van, akkor nincs benne gem parancs, telepítenie kell a rubygems csomagot vagy frissítenie kell a rubyt.
Most telepítsük a drágakövet fpm, amely begyűjti nekünk a deb csomagot.
sudo gem install fpm fpm -s gem -t deb zookeeper
A jelenlegi könyvtárban a rubygem-zookeeper_1.4.11_amd64.deb csomag van, úgy tűnik, hogy az ügy már a zsákban van, de mivel kell egy forrás csomag, hogy abból deb-t tudjunk építeni pl OBS-ben, akkor folytatjuk.
Hozzon létre egy összeállítási könyvtárat
cp rubygem-zookeeper_1.4.11_amd64.deb ~/ cd mkdir -p ruby-zookeeper/fakeroot cd ruby-zookeeper/fakeroot
Kivonjuk bele az újonnan épített csomag tartalmát.
dpkg-deb -R ~/rubygem-zookeeper_1.4.11_amd64.deb ruby-zookeeper_1.4.11-1
Most létrehozzuk a csomag felépítéséhez szükséges fájlokat. A debian könyvtárban kell lenniük. A fájlok egy részét a kicsomagolt csomagból másolhatjuk.
mkdir debian cp rubygem-zookeeper_1.4.11-1/DEBIAN/control debian/control
Szerkesszük a következő állapotra. Ne felejtse el karbantartót cserélni
Forrás: ruby-zookeeper Karbantartó:
Még mindig szükségünk van debianra/szabályokra. Hozzuk létre. Az override_dh_shlibdeps-re azért van szükség, hogy ne ellenőrizzük a zookeeper könyvtárak összekapcsolását, mert nem jut át.
#!/usr/bin/make -f # -*- makefile -*- %: dh $@ override_dh_shlibdeps: igaz
A debian/rules tabulátorok kötelezőek, ezeket nem helyettesítheti szóközökkel. Tegyük végrehajthatóvá.
Chmod +x debian/rules
Usr/* var/*
Most hozzuk létre a debian/changelogot és írjuk oda:
Rubin-zookeeper (1.4.11-1) KIADVA; sürgős=közepes * Kezdeti kiadás -- gyökér
Debian/compat is kell
Echo 7 > debian/compat
Másoljuk át a telepítésre kerülő fájlokat egy helyi könyvtárba, és töröljük a mappát a kicsomagolt csomaggal, már nem lesz rá szükségünk.
Mv ruby-zookeeper_1.4.11-1/(usr,var) . rm -r rubin-zookeeper_1.4.11-1
Építsünk egy új csomagot, valamint egy forráscsomagot.
dpkg-buildpackage -rfakeroot -uc -F
A fenti könyvtárban minden szükséges fájl megtalálható lesz.
Ll .. összesen 5528 drwxr-xr-x 3 gyökér gyökér 4096 december 20 13:32 ./ drwx------ 12 gyökér gyökér 4096 december 20 13:31 ../ drwxr-xr-x 5 gyökér 4096 dec 20 13:28 fakeroot/ -rw-r--r-- 1 root root 1261 Dec 20 13:32 ruby-zookeeper_1.4.11-1_amd64.changes -rw-r--r-- 1 root root 2375044 Dec 20 13: 32 ruby-zookeeper_1.4.11-1_amd64.deb -rw-r--r-- 1 gyökérgyökér 565 december 20 13:32 ruby-zookeeper_1.4.11-1.dsc -rw-r--r-- 1 gyökérgyökér 3263381 december 20. 13:32 ruby-zookeeper_1.4.11-1.tar.gz
Ellenőrizheti a kapott deb csomag tartalmát
Hozzon létre egy listát a csomagokról:
$ dpkg-scanpackages . /dev/null | gzip -9c > ./Packages.gzTalán kapunk egy ilyen üzenetet:
dpkg-scanpackages: figyelmeztetés: A csomagok az archívumban vannak, de hiányoznak a felülbíráló fájlból: dpkg-scanpackages: Figyelmeztetés: Fossil linux-headers-3.8.0-avl9-pae linux-image-3.8.0-avl9-pae xpdfsam sublimetext virtualbox-4. -xorg-input-wacom zotero dpkg-scanpackages: info: 8 bejegyzést írt a kimeneti csomagok fájlba.
Jelenleg 8 csomag van a raktárunkban. Rendben, adjuk hozzá a tárhelyünket a fájlhoz:
Deb file:///home/username/zips/virensdebianrepository ./
Most frissítenie kell a csomagok listáját, hogy elérhetővé váljanak a telepítéshez:
# apt-get install sublimetext
Külön köszönet Com. agyfolyam, amely egy hibára mutatott rá a PRE környezet renderelésével kapcsolatos bejegyzésben. Ez akkor történik, ha megbízol a Haskell-féle kézművesekben, például a pandocban :-)
Igen, ha van hozzáfűznivalód, írd meg kommentben, de ne feledd, hogy a poszt sietős, anélkül, hogy újra el kellene olvasnod a Debian Packaging Guidelines könyveket és más kvantumfizikát.
Névtelen kommentek...
Hiba van a szövegedben:
"Most a Skype telepítéséhez tegye a következőket:
# apt-get install sublimetext"
Névtelen kommentek...
A csomagokat a dpkg-deb segítségével csomagolhatja ki:
$ dpkg-deb -x what.deb where/
Névtelen kommentek...
Mindig is a dpkg -e és a dpkg -x parancsokat használtam a csomagok teljes kibontására, és a vezérlőfájlokban lévő fájlok vagy függőségek gyors javítására. A make install helyett a checkinstall parancsot is használtam csomag létrehozásához, amikor valamit fordítok. Szerintem érdemes megemlíteni ezeket a segédprogramokat.
virens kommentjei...Csomagokat építeni forrásból a Debianban gonosz! Most eszembe jut a tapasztalatom:
1. A deb-csomagnak tartalmaznia kell egy karbantartót és egyéb hülyeségeket, ami nélkül (meglepetés-meglepetés!) nem épül fel a csomag.
2. Összeszerelte, telepítette és azt hiszi, ennyi? Nem szerencse, a jó alkalmasság a pokolba robbanthatja a csomagot, ha valami mást telepít. Ismered ezt az érzést: hogyan? Ahol? Mit? Már telepítettem ezt a csomagot! Nos, ez a rátermettsége – ő maga mind ortodox, ami azt jelenti, hogy patriarchális, és nem engedi a szabadgondolkodást.
3. Ezért sürgősen szükség van egy manőverre: alkalmassági tartási csomagra. "Mi van, jól bírja? És most légy kedves - oldd ki!" (c) Mert ezentúl az aptitude panaszkodik, hogy nem tudja feloldani a függőséget a csomag lebontása nélkül.
4. Ezen a ponton feladtak az idegeim... És felfedeztem a Gentoo-t, és újra puha és selymes lett a hajam!
virens kommentjei...@iv_vl kommentek...
És felfedeztem Gentoo-t és a hajam...
Pimasz PR Genta?! BAN BEN az én blogger??? Nem lehetséges! ;-)
1. A deb csomagnak kell lennie karbantartónak és egyéb hülyeségeknek
Szabványos házirend – tudnia kell, kit üthet arcon egy törött csomagért :-) És akkor más a helyzet jobb annál a bedlam, ami az RPM fedorákban és zyuzes-ben megy.
2. Összeszerelte, telepítette és azt hiszi, ennyi? Nem szerencse, a jó alkalmasság a pokolba robbanthatja a csomagot, ha valami mást telepít.
Csak ha csomagot teszel régi verzió- például van egy tartásom az IceWM-en, amit Lennytől telepítettem (az idióta karbantartó jeget tömött egy törött tálcával a Squeeze-be). Az Aptitude figyelmeztetni fogja Önt az ilyen manőverek előtt, ha van ilyen.
3. Ezért sürgősen szükség van egy manőverre: aptitude hold csomag.... az aptitude esküdni fog, hogy nem képes feloldani a függőségeket
Ez hazugság és provokáció: hacsak nem tartasz vissza valamit, mint a gcc vagy glibc, az általában megoldja a függőségeket. Ellentétben az RPM-esekkel, akik szeretnek egyből feladni a "hát nem tudtam, nem tudtam" stílusban :-)
Lehetnek gondok a hibakereséssel, ez tény, de jobb, mint szalonnát és tojást sütni a CPU-n, miközben a friss KDE gentoy végére várunk...
4. Ezen elmentek az idegeim...
Valahogy gyorsan felrobbantál. Amúgy mi a helyzet a függőségekkel Gentben? Hogy éled meg ott, hogy minden tüsszentésnél káromkodsz?
Én ... nem a kedvéért trollkodok ... az embereket érdekli.