Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

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 -

Források

Sok helyről gyűjtöttek információkat, de itt van a két fő:
  • Debian.org: Debian Policy Manual – hivatalos
  • Ubuntu Wiki: Csomagolási útmutató/Alap
Ez a cikk eléggé részletezi a csomagolás alapjait ahhoz, hogy elég hatékony alkalmazástelepítési vezérlést kapjon. A fejlettebb funkciók kimaradnak, de a dokumentációhoz mutató közvetlen hivatkozások az érdeklődők rendelkezésére állnak.
A cikk nem másolata vagy fordítása egyetlen dokumentumnak sem: ez egy olyan tudásgyűjtemény, amely jegyzetek formájában hevert, és most cikkként van formázva. Az érthetőség kedvéért mindenhol vannak példák, pontosítások az ujjakon, kényelmes funkciók, amelyeket találtam, és néhány tipikus hiba, amelyet tudatlanságból lehet elkövetni.

Készítmény

Miért van ez az egész?
Igen, a CheckInstall tud működő csomagot létrehozni, de nem támogatja az összes olyan finomságot, amire a deb csomagok képesek :) Mégpedig:
  • Csomag telepítése előtt, után és ahelyett futó szkriptek :)
  • Konfigurációs fájlok automatikus kezelése: a csomag nem teszi lehetővé, hogy kérés nélkül felülírja a régi konfigurációkat újakkal
  • Munka sablonokkal: lehetőség a felhasználónak kérdéseket feltenni a telepítés során (!!!)
  • Más csomagfájlok módosítása
Mire lesz szükség
Természetesen a tar, gz, archiválók is elegendőek egy teljes értékű csomag létrehozásához, de kiküszöbölhető a felesleges felhajtás, és az életet megkönnyítő eszközöket használhatunk :)
Rakjuk:
$ sudo apt-get install dpkg debconf debhelper lintian
Mit csináljunk
Például egy bizonyos /usr/bin/super.sh szkriptet figyelembe kell venni. Teljesen mindegy, hogy mi van benne, a lényeg, hogy a megfelelő helyen hogyan jelenik meg :)
Mappa előkészítés
A kezdőkönyvtárban (vagy ahol kényelmes) hozzon létre egy mappát, amely a jövőbeli csomag összes fájlját tartalmazza: mkdir ~/supersh . A továbbiakban úgy fogjuk hívni csomag gyökér.
A csomag gyökerében hozzon létre egy "DEBIAN" mappát ( nagybetűvel, fontos!). Ez a mappa csomaggenerálási vezérlési információkat tartalmaz, és a csomag telepítésekor nem másolódik lemezre.
Ezenkívül a csomag gyökérmappája tartalmazza a jövőbeli "lemez gyökerét": a csomag telepítésekor az összes fájl (a "debian" mappa kivételével) a gyökérbe kerül kicsomagolásra. tehát a szkriptünknek ezen az útvonalon kell lennie, a csomag gyökeréhez képest: "usr/bin/super.sh"
Fehér a feketén:
mkdir -p ~/supersh/DEBIAN # vezérlőkönyvtár
mkdir -p ~/supersh/usr/bin # szkript elérési útja
cp super.sh ~/supersh/usr/bin/ # másolja a szkriptünket a megfelelő helyre
Ennek eredményeként a következőkkel rendelkezünk:
supersh/DEBIAN/
supersh/usr/
supersh/usr/bin/
supersh/usr/bin/super.sh

Csomag létrehozása: DEBIAN/*

Mint mondtam, a DEBIAN mappa tartalmazza a telepítés során használt fájlokat. Itt leírom (példákkal) az egyes fájlokat.
Egy teljes értékű csomag létrehozásához elegendő a „control” vezérlőfájl, az összes többi vagy szöveges információk csatolására (módosítási napló, licenc), vagy speciális alkalmazástelepítési lehetőségek kezelésére szolgál.
Az alább leírt fájlok közül a DEBIAN / * mappában válassza ki a szükségeseket és töltse ki az utasításoknak megfelelően :)
Példánkban csak szükséges DEBIAN/kontroll.
DEBIAN/vezérlés: Alapvető információk
control – az összes fő tulajdonságot leíró központi csomagfájl. A fájl egy szöveges fájl, amely "Attribútum: érték" párokból áll. Használhat megjegyzéseket: "#" karakter a sor elején (a funkció a dpkg >= 1.10.11 verzióban lett hozzáadva, ne hagyatkozzon a megjegyzésekre :).
A táblázat felsorolja a vezérlőfájlhoz definiált összes mezőt. A kötelező mezők kiemelve bátor: nélkülük a csomag nem tekinthető helyesnek.
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

Igen, ezek a vezérlőfájl szilárd jellemzői :)
A mi példánkban pedig így néz ki:
Csomag: supersh
Verzió: 1.0-1
szekció: egyéb
Építészet: minden
Függ: bash, sed (>= 3,02-8)
Karbantartó: o_O Tync
Leírás: Super Shell Script
␣ Egy szuper példaszkript.
␣.
␣ Nem csinál semmit :)
DEBIAN/copyright:/licenc
Licenc szövege. A fájl nem kötelező, de jobb, ha aláhúzod a szerzőséget;)
DEBIAN/changelog: változásnapló
Változásnapló speciális formátumban: a dpkg használja a csomag verziószámának, revíziójának, terjesztésének és fontosságának lekérésére. Érdemes belenézni ;) és csak egy példát mondok:
szupersh (1,0-1) stabil; sürgős=közepes

O_O Tync V, 2009. december 13., 00:11:46 +0300

DEBIAN/conffiles: konfigurációs fájlok listája
A csomagok általában üres konfigurációs fájlokat tartalmaznak, például a /etc könyvtárban elhelyezetteket. Nyilvánvalóan, ha a csomagban lévő konfigurációt frissítik, a felhasználó elveszíti a szerkesztett konfigurációját. Ez a probléma könnyen megoldható olyan mappák használatával, mint a "config.d", amelyek tartalma a fő konfigurációban szerepel, helyettesítve az ismétlődő opciókat.
A "DEBIAN/conffiles" fájl más módon oldja meg a problémát: tartalmazza a konfigurációs fájlok listáját (soronként egyet). Ha be jelenlegi verzió csomagban a fájlok egyike frissül, akkor a felhasználó figyelmeztetést kap a konfigurációs verziók ütközéséről, és választhat a törlés, a csere vagy az egyesítés mellett.
Valószínűleg minden linuxos, aki beleásta magát a konfigokba, szembesült ezzel a helyzettel :) És innen nőnek a lábak.
Minden sornak tartalmaznia kell az egyes konfigurációk teljes abszolút elérési útját. Például:
/etc/supersh/init.conf
/etc/supersh/actions.conf
DEBIAN/dirs: a létrehozandó mappák listája
"A program által igényelt, de valamilyen okból nem létrehozott mappák abszolút elérési útjainak listája." - mondja a hivatalos dokumentáció. A gyakorlatban minden olyan mappa, amelyet a program valamilyen módon használ, itt van felsorolva: ahol a binárisok találhatók, és amelyeket a program használ.
Soronként egy. Például:
/var/log/supersh
/var/lib/supersh
Hasznos több üres mappa létrehozásához.
DEBIAN/menu: menüpontok létrehozása
Trükkös fájl menüelemek létrehozásához. Nekem sosem működött :) Az embernek az az érzése, hogy a tartalmát sem szokatlan módon használják ablakkezelők, vagy valami konzol menüben... vagy régebben használták és feledésbe merült :)
Példa:
?package(supersh):needs="text" section="Alkalmazások/Programozás" title="Super Shell Script" command="/usr/bin/super.sh" !}
TODO: derítse ki, miért van szüksége erre. Ez a man5 menüfájlban van megírva, őszintén szólva nem mélyedtem el benne :)
UPD: A menüelem hozzáadásának helyes módja
A /DEBIAN/menu fájl senki sem tudja mit és senki sem tud hol hoz létre: a grafikus menüelemek úgysem jönnek létre. Szóval csináljuk rendesen :)
A /usr/share/applications könyvtárban egy csomó *.desktop fájlt látunk: ezek a menüpontok. Ők képviselik szöveges fájlok ini fájlhoz hasonló szintaxissal. Nyisd meg, tanuld meg, tedd meg ugyanezt, és helyezd a kapott *.desktop fájlt az usr/share/applications/ könyvtárba. Az ikonnak az usr/share/pixmaps mappában kell lennie.
Ezt követően hozzá kell adni az update-menus menü frissítés parancsának végrehajtását a postinst szkripthez:
if [ "$1" = "konfigurálás" ] && [ -x "`melyik frissítési menü 2>/dev/null`" ] ; akkor
frissítési menük
fi

A csomagtelepítő szkriptekkel való munkáról később lesz szó.
Köszi Condorious a tippet :)

DEBIAN/md5sums: fájlok ellenőrző összegei
A csomag sértetlenségének ellenőrzésére szolgál. Fontos fájl.
Így töltve (cwd=package root):
$ md5deep -r usr > DEBIAN/md5sums
DEBIAN/watch: annak az oldalnak a figyelése, ahonnan a programot letöltötték
A funkció akkor hasznos, ha néhány tucatnál több csomagot karbantart, és nehéz nyomon követni az összes frissítést.
A fájl utasításokat tartalmaz az uscan és az uupdate programokhoz. Ezzel a funkcióval nyomon követheti azt az oldalt, ahonnan a csomag forrásai származtak, és biztosíthatja a terjesztés egészének minőségellenőrzését.
Példa:
# Site Directory Pattern Version Script
ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
DEBIAN/(preinst|postinst|prerm|postrm): telepítő szkriptek
Összesen legfeljebb négy szkriptet hozhat létre egy csomagban:

Kérjük, vegye figyelembe, hogy az ezekben a szkriptekben előforduló hibák egyáltalán nincs bejelentkezve: a script visszatérési kódjánál semmi érdekesebb nincs tárolva sehol, a naplózást pedig manuálisan kell elvégezni! Az egyik csomagom felhasználóinak nem sikerült a telepítésük Linux Mint, és még hibanaplót sem lehetett kérni tőlük (ami nincs) az ok kijavításához :)
Azt javaslom, hogy minden szkript elején használd a következő üreset: minden előforduló hibát elment a syslogba.
#!/bin/bash
set -e # sikertelen bármilyen hiba esetén
set -u # az unset változókat hibaként kezeli

# ======[ 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 :)

DEBIAN/sablonok: párbeszédablak sablonok
Mint már említettük, a DEBIAN / config szkriptben kérdéseket tehet fel a felhasználónak: írjon be egy karakterláncot, válasszon egyet a lehetőségek közül, jelölje be, ... Ezt a debconf csomag debhelper függvényeinek bash "könyvtára" teszi. , ami szintén sok hasznos dologra képes. én nem látom őket itt :)
A DEBIAN/templates fájl tartalmazza a kimenetben használt adatokat párbeszédpanelek(GUI vagy ncurses). A fájl blokkokat tartalmaz, amelyek egymástól elválasztva üres karakterlánc. Minden blokk meghatározza az adott párbeszédpanelen használt erőforrásokat.
A fejléc minden típusú párbeszédpanelhez szabványos:
Sablon: szupersh/sablonnév
Típus: string
Alapértelmezett: Alapértelmezett érték
Leírás: A párbeszédpanel címe
␣ Párbeszéd-szöveg

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.

A szöveg, megjegyzés, hibasablonoknak szintén nincs alapértelmezett értéke, mivel csak információkat jelenítenek meg :)
Játsszunk a következő mintával:
Sablon: supersh/üdvözlet
Típus: string
Leírás: Üdvözlő üzenet
␣Az üzenet, amellyel a forgatókönyv köszönti.
Alapértelmezés: Üdvözlöm, mesterem!
A debconf és a debhelper használatának alapjai
Ezek csak működő vázlatok. Az eredetiben itt olvashatsz a sablonokról és a velük való munkáról: man 7 debconf-devel :)
Ha sablonokat szeretne használni a DEBIAN/config konfigurációs szkriptjében, először fel kell vennie a debhelper függvényeket:
. /usr/share/debconf/confmodule . Ennek a fájlnak is szerepelnie kell a postinst szkriptben: különben a DEBIAN/config szkript egyáltalán nem kerül végrehajtásra!
Ezek a funkciók a debconf csomagban elérhetőek, ne felejtsd el függőségként feltüntetni!
Primitív használati példa. DEBIAN/konfigurációs FÁJL
#!/bin/bash -e

# 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

Összegyűjtjük a csomagot! :)

Hurrá! Minden szükséges fájl elkészült, a megfelelő mappákban vannak. Itt az ideje a pakolásnak :)
Az első dolog, hogy rekurzív módon állítsa be a root csomagban található összes fájlt user és root:root csoportba (vagy másokhoz, ha szükséges). Ennek az az oka, hogy a csomagfájlok egy tar.gz archívumba vannak csomagolva, amely megőrzi mind a fájljogosultságokat, mind a tulajdonost. Ezért a következőket kell tennie:
$ sudo chown -R root:root .
Ez azonban nem kötelező. Van egy kiváló fakeroot parancs, amely archívum létrehozásakor a fájl tulajdonosát root-ra cseréli.
Példánkban a szkriptnek rendelkeznie kell a végrehajtható bittel.
Ezután visszamegyünk a mappába, hogy a csomag gyökérmappája látható legyen, és a csomag egy könnyű rúgással létrejön:
$ fakeroot dpkg-deb --build supersh
A létrehozott csomagot át kell nevezni, hogy megfeleljen a *-nak. deb csomagok: <имя пакета>_<версия>_<архитектура>.deb
$ mv supersh.deb supersh_1.0-1_all.deb
Minden, kész a csomag!
Automatikus csomagellenőrzés
Van egy lintian segédprogram, amely lehetővé teszi a csomag ellenőrzését és a szerkezetében előforduló tipikus hibák azonosítását. Ez így történik:
$ lintian supersh_1.0-1_all.deb
Csomag telepítés
$ sudo dpkg -i supersh_1.0-1_all.deb

Hozzon létre saját csomagtárat

Most saját csomagunk van. Ha több van belőlük, és még inkább a függőségek esetén, sokkal kényelmesebb lesz gyorsan létrehozni a saját helyi mikro-tárolót, és felvenni a csomagkezelő források listájába :) Itt leírok egy Gyors Hogyan hozzunk létre saját adattárat. Az ötlet könnyen továbbfejleszthető lesz a vonatkozó dokumentáció elolvasásával :)
Először telepítsük a segédprogramot:
$ sudo apt-get install reprepro
A jövőbeni adattár leírása
Tárolóközpont – leírása. A fő dolog benne a lerakat-összetevők listája. Létrehozzuk a "soft" és a "games" komponenseket.
Válasszon ki egy mappát a jövőbeli tárolóhoz. Minden műveletet a gyökerétől hajtanak végre.
Hozzon létre egy conf/distributions fájlt a következő tartalommal:
Leírás: a helyi adattáram
Eredet: Ubuntu
Suite: tesztelés
AlsoAcceptFor: instabil kísérleti
Kódnév: karmikus
Verzió: 5.0
Architektúrák: i386 amd64 forrás
Összetevők: puha játékok
UDebComponents: puha játékok

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 :)

Adattár létrehozása
A tárhely leírása! Most generáljunk egy üreset a leírás alapján. A parancsok a lerakat gyökerében futnak:
$ reprepro export
$reprepro symlinks létrehozása
És adja hozzá a kész tárolót az /etc/apt/sources.list fájlhoz:
deb file:///path/to/repo/ karmikus lágy játékok
Ez a tárhely webszerver segítségével is megosztható.
Csomagok kezelése tárolóban
A hozzáadandó *.deb fájlokat a tároló gyökerébe helyezzük, és hozzáadjuk a karmikus eloszlás lágy összetevőjéhez:
reprepro -C soft includeeb karmikus *.deb
most már elérhetőek a csomagok a csomagkezelőtől :)
Csomagok eltávolítása:
reprepro -C soft karmikus szupersh eltávolítása

Befejez

A cikk a deb csomagok létrehozásához szükséges anyagokat tárgyalja. A hangsúly azokon a pillanatokon van, amelyekhez nincs elegendő vizuális leírás a hálózatban. Remélem, hogy az egyszerű és világos megfogalmazásra tett kísérletem nem járt kudarccal :)
Házi feladat :)) - elég jól dokumentált dolgok, amiket könnyű megtalálni az emberben "ahs és cikkek:
  • Forrásokat fordító forráscsomagok létrehozása: a Zabbix példáján habrauser mahoro tökéletesen beszélt erről cikkében
  • Debconf, debhelper konfigurációs szkriptekben: debconf-devel és debhelper mana olvasása. Lehetővé teszik egy csomagváz létrehozását is a dh_make paranccsal.
  • Speciális módszerek a dokumentációk csomagokban történő létrehozására: DEBIAN/docs, DEBIAN/manpage.* fájlok
  • Init szkriptek létrehozása
  • cron munkakezelés
  • Adattár aláírása gpg kulccsal

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ó: Szekció: ruby Build-Depends: debhelper (>= 7.0.50~) Prioritás: extra Honlap: https://github.com/slyphon/zookeeper Csomag: ruby-zookeeper Architecture: amd64 Függ: $(shlibs:Depends) , $ (egyéb: attól függ), rubin Leírás: Alacsony szintű több rubinból álló burkoló a ZooKeeper API-kötések körül. A barátságosabb felületért lásd: http://github.com/slyphon/zk. Jelenleg támogatott: MRI: (1.8.7, 1.9.2, 1.9.3), JRuby: ~> 1.6.7, Rubinius: 2.0.testing, REE 1.8.7. . Ez a könyvtár a zookeeper kötések 3.4.5-ös verzióját használja.

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 2015. november 25., szerda 20:01:55 +0300

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.gz
Talá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:

vonal, mint:

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:

Mindent, most telepíthet, például frissen összeszerelve szöveg szerkesztő Sublime Text 2 (nagyszerű utasítások ott), mint mindig: Most a SublimeText telepítéséhez tegye a következőket:
# apt-get install sublimetext

Csomaglisták olvasása... Kész Függőségi fa felépítése Állapotinformációk olvasása... Kész A következő ÚJ csomagok lesznek telepítve: sublimetext 0 frissítve, 1 újonnan telepített, 0 eltávolítandó és 245 nincs frissítve. 0 B/11,4 MB archívumot kell szerezni. A művelet után 17,4 MB további lemezterület kerül felhasználásra. FIGYELEM: A következő csomagok nem hitelesíthetők! sublimetext Ellenőrzés nélkül telepíti ezeket a csomagokat? I A korábban megszüntetett csomag szublimetext kiválasztása. (Adatbázis olvasása... 247813 fájl és könyvtár jelenleg telepítve.) Sublimetext kicsomagolása (a ..././sublimetext_2.0.2_i386.deb-ről) ... A sublimetext beállítása (2.0.2) ... Minden, a csomag ki kell csomagolni és telepíteni, de a tény, hogy a helyi tárolóból származik, itt látható: (a ..././sublimetext_2.0.2_i386.deb-ről)

Következtetés

A bejegyzésben leírt receptek gyorsételek, nem szarvasgombás libamáj. Nagy adattárak vagy összetett csomagok esetén továbbra is meg kell ismerkednie a dokumentációval és a kézikönyvekkel. Használhatja a programot is, amely nem csak tárhelyeket tud létrehozni, hanem CD / DVD lemezekre is írja.

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.

iv_vl

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: