09.10.2021

Mənbədən debi necə qurmaq olar. Öz DEB və RPM paketlərinizi yaradın. Linux -da CheckInstall -un quraşdırılması


Nümunə olaraq ruby-zookeper istifadə edərək deb paketlərinin yaradılması prosesini mümkün qədər asan şəkildə izah etməyə çalışacağam. Təsvir etdiyim yaqut daşlarını qablaşdırma üsulunun səhv olduğunu dərhal xəbərdar edirəm, bunun üçün gem2deb istifadə etmək daha yaxşıdır, amma bəri Ruby-zookeper-in ən son versiyasını gem2deb istifadə edərək mənbələrdən qura bilmədim, burada ən sadə qurma üsuludur.

Tövsiyə edildiyi kimi, gem2deb vasitəsilə yaqut paketləri quracaqsınızsa, xətti əlavə etmək daha yaxşıdır.

DH_RUBY_IGNORE_TESTS ixrac et = hamısı / ixrac DH_RUBY_IGNORE_TESTS = hamısı

debian / qaydalarında.

Çünki yaqut kodu quracağıq, sonra yaquta və deb paketləri qurmaq üçün bir sıra vasitələrə ehtiyacımız var.

Sudo apt-get ruby ​​dpkg-dev quraşdırın

Köhnə bir ruby ​​versiyanız varsa, onda gem əmri yoxdur, rubygems paketini quraşdırmalı və ya yaqut yeniləməlisiniz.

İndi daş quraşdıraq fpm bizim üçün bir debet paketi quracaq.

Sudo gem quraşdırma fpm fpm -s gem -t deb zookeeper

Mövcud qovluqda rubygem-zookeeper_1.4.11_amd64.deb paketimiz var, görünür bu artıq çantadadır, amma bir qaynaq paketinə ehtiyacımız var, ondan debi tərtib edə bilmək üçün, məsələn OBS -də, sonra davam edəcəyik.

Bir quruluş qovluğu yaradaq

Cp rubygem-zookeeper_1.4.11_amd64.deb ~ / cd mkdir -p ruby-zookeeper / fakeroot cd ruby-zookeeper / fakeroot

Yeni yığılmış paketin məzmununu ona daxil edək.

Dpkg-deb -R ~ / rubygem-zookeeper_1.4.11_amd64.deb ruby-zookeeper_1.4.11-1

İndi paketi qurmaq üçün lazım olan faylları yaradacağıq. Debian kataloqunda olmalıdırlar. Faylların bir qismini açılmamış paketdən kopyalaya bilərik.

Debian cp rubygem-zookeeper_1.4.11-1 / DEBIAN / nəzarət debian / control

Növbəti vəziyyətə düzəliş edək. Mühafizəçini dəyişdirməyi unutmayın

Mənbə: yaqut zooparkının saxlayıcısı: Bölmə: ruby ​​Build-Asılıdır: debhelper (> = 7.0.50 ~) Prioritet: əlavə Əsas səhifə: https://github.com/slyphon/zookeeper Paket: yaqut zookeeper Memarlıq: amd64 Asılıdır: $ (shlibs: Asılıdır) , $ (misc: Asılıdır), yaqut Təsvir: ZooKeeper API bağlamaları ətrafında aşağı səviyyəli çoxlu Ruby sarğı. Daha rahat bir interfeys üçün http://github.com/slyphon/zk saytına baxın. Hal -hazırda dəstəklənir: MRT: (1.8.7, 1.9.2, 1.9.3), JRuby: ~> 1.6.7, Rubinius: 2.0.testing, REE 1.8.7. ... Bu kitabxana zookeeper cildlərinin 3.4.5 versiyasından istifadə edir.

Debian / qaydalarına da ehtiyacımız var. Gəlin onu yaradaq. zookeeper kitabxanalarının əlaqəsini yoxlamamaq üçün override_dh_shlibdeps lazımdır, çünki keçmir.

#! / usr / bin / make -f # - * - makefile - * -%: dh [e -poçt qorunur] override_dh_shlibdeps: doğrudur

Debian / qaydalar nişanları tələb olunur və boşluqlarla əvəz edilə bilməz. Gəlin onu icra edilə bilən hala gətirək.

Chmod + x debian / qaydalar

Usr / * var / *

İndi debian / changelog yaradaq və orada yazaq:

Ruby-zookeeper (1.4.11-1) YAYILDI; təcili = orta * İlkin buraxılış - kök Çərşənbə, 25 Noy 2015 20:01:55 +0300

Debian / uyğunluğa da ehtiyacımız var

Echo 7> debian / uyğunluq

Yerli qovluğa quraşdırılacaq faylları kopyalayaq və açılmamış paketi olan qovluğu silək, artıq bizim üçün faydalı olmayacaq.

Mv ruby-zookeeper_1.4.11-1 / (usr, var). rm -r yaqut-zookeeper_1.4.11-1

Mənbə paketi kimi yeni bir paket də quraq.

Dpkg -buildpackage -rfakeroot -uc -F

Yuxarıdakı qovluqda bütün lazımi sənədlərimiz olacaq.

Ll .. cəmi 5528 drwxr-xr-x 3 kök kökü 4096 20 Dekabr 13:32 ./ drwx ------ 12 kök kökü 4096 20 Dekabr 13:31 ../ drwxr-xr-x 5 kök kökü 4096 Dec 20 13:28 fakeroot / -rw-r-r-- 1 kök kökü 1261 20 Dekabr 13:32 ruby-zookeeper_1.4.11-1_amd64. -rw-r-r-- 1 kök kökü 2375044 Dec 20 13: 32 ruby -zookeeper_1.4.11-1_amd64.deb -rw-r-r-- 1 kök kökü 565 Dekabr 20 13:32 ruby-zookeeper_1.4.11-1.dsc -rw-r-r-- 1 kök kökü 3263381 Dec 20 13: 32 yaqut-zookeeper_1.4.11-1.tar.gz

Yaranan deb paketinin məzmununu yoxlaya bilərsiniz

Qeydiyyat paketini quraşdırmaq çox çətin olmamalıdır. DEB paketlərindən istifadə edən əməliyyat sistemlərində quraşdırma əmri ilə aparılır:

# sudo apt-get install checkinstall

RPM paketlərindən istifadə edən bir əməliyyat sistemində qeyd paketi aşağıdakı əmrlə quraşdırılır:

# sudo rpm -i qeyd edin

Əməliyyat sisteminizdə belə bir paket tapılmırsa, layihənin ana səhifəsinə daxil olmalı və paylanmanız üçün lazım olan versiyanı yükləməlisiniz:

http://checkinstall.izto.org/download.php

Proqramın mənbə kodu olan qovluğa gedin

Proqramın mənbə kodu olan qovluğa keçmək olduqca sadədir və heç bir çətinlik yaratmamalıdır.

Sizə çox lazımlı bir Linux əmr satırı vasitəsi - açarı xatırlatmaq istəyirəm TAB... Düymə TAB uzun qovluqların və faylların adını avtomatik olaraq əlavə etməyə imkan verir. Dizin / fayl adının yalnız ilk simvollarını daxil etmək və düyməni basmaq lazımdır TAB, avtomatik olaraq tam adı əlavə edəcək.

Demək olar ki, bütün mənbələr format arxivlərində paylanır tar.gz... Arxivi açmaq üçün əmri yazırıq:

Əməliyyat sisteminiz üçün mənbələri konfiqurasiya edin

Sadə dildə desək, müəyyən bir OS üçün mənbə kodunu "fərdiləşdirmə" prosesidir. Bu proses nəticəsində konfiqurasiyanın təsviri olan bir fayl yaradılır. Mənbələri konfiqurasiya etmək adətən sadə bir əmrlə aparılır:

Bu əmr OS -də heç bir dəyişiklik etməz və buna görə də ona heç bir şəkildə zərər verə bilməz.

Bu mərhələ ən çox vaxt aparır, çünki tərtib edilmiş proqramın mənbə kodunun asılı olduğu bütün əlavə paketləri quraşdırmaq lazımdır. Bu əmrin icrası zamanı ekranda bir səhv mesajı görünürsə və konfiqurasiya prosesi dayanırsa, bu, sistemdən asılı bir paketin olmaması deməkdir.

Məsələn, Pidgin'i konfiqurasiya edərkən bir səhv meydana gəldi:

GTK yoxlanılır ... bəli
PANGO yoxlanılır ... bəli
X11 yoxlanılır ... bəli
GTKSPELL yoxlanılır ... yox
yox
konfiqurasiya edin: səhv:
GtkSpell inkişaf başlıqları tapılmadı.
Ehtiyacınız yoxdursa --disable-gtkspell istifadə edin.

Yuxarıdakı siyahıda, GTK, PANGA, X11 -in tərtib edilmiş mənbə kodunun tələblərinə cavab verdiyini görə bilərsiniz ( bəli) və GTKSPELL yoxlaması dəyər verdi yox... Çox güman ki, bu nümunədə quraşdırmalısınız libgtkspell-dev.

Bu nümunə göstərir ki, bu iş o qədər də çətin deyil. Konfiqurasiya zamanı heç bir səhv baş verməyibsə, proses uğurla başa çatmış hesab olunur.

Mənbələrin tərtib edilməsi

Mənbə kodunu tərtib etmək, əvvəlki nöqtənin uğurla tamamlanması şərti ilə "avtomatik" bir prosesdir.

Səhvlər baş verərsə, çox güman ki, mənbə kodundakı bir problemdir. Səhv olan bəzi çıxış xəttlərini hər hansı bir axtarış sisteminə qoymalı və axtarış nəticəsinə baxmalısınız. Bəlkə də internet ictimaiyyəti bu səhvlə artıq qarşılaşıb.

Bu gün sizə mücərrəd bir nümunə ilə necə edəcəyimi söyləyəcəyəm sağ Ubuntu / Debian üçün * .deb paketi yaradın. Paketi ikili edəcəyik. Mənbədən ikili sənədlər tərtib edən paketlər burada nəzərə alınmır: aşağıda göstərilən biliklərə yiyələnərək gələcəkdə hazır nümunələrdən istifadə edərək mahiyyəti başa düşə və bənzətmə ilə hərəkət edə bilərsiniz :)

Məqalədə "əllə" lazımsız bir oyun olmayacaq: paket formatı olduqca sadə və ən əsası məntiqi bir quruluşa çevrildi və hər şey bir neçə ixtisaslaşdırılmış kommunaldan istifadə edərək sanki diz üzərində aparılır.

Bir bonus olaraq, məqalənin sonunda öz yerli depoyuzu necə tez bir şəkildə yaratmağın bir nümunəsi olacaq: paketləri paketdən yükləmək, asılılıqları avtomatik olaraq izləməyə imkan verir və əlbəttə! - hər şeyi bir konsol əmri ilə bir neçə maşına quraşdırın :)

Linux -da güclü bir proqram quraşdırma sisteminə girmək istəməyənlər üçün CheckInstall proqram saytına daxil olmağı məsləhət görürəm: avtomatik olaraq "make install" əmrindən bir debet paketi yaradır;) Və biz də maraqlı ilə birlikdə -

Mənbələri

Məlumat bir çox yerdən alınır, amma burada iki əsas var:
  • Debian.org: Debian Siyasət Təlimatı - rəsmi
  • Ubuntu Wiki: PackagingGuide / Basic
Bu yazıda, tətbiqin quraşdırılması üzərində kifayət qədər güclü nəzarət təmin etmək üçün kifayət qədər paket yaradılmasının əsasları ətraflı izah edilmişdir. Daha inkişaf etmiş xüsusiyyətlər buraxıldı, ancaq maraqlananlar üçün sənədlərə birbaşa bağlantılar verilir.
Məqalə heç bir sənədin surəti və ya tərcüməsi deyil: qeyd şəklində yalanlanmış və indi məqalə şəklində çərçivəyə salınmış biliklər toplusudur. Aydın olmaq üçün hər yerdə nümunələr, barmaqlardakı izahlar, tapdığım əlverişli xüsusiyyətlər və cahillikdən çıxarıla biləcək bəzi tipik səhvlər var.

Hazırlıq

Niyə bütün bunlar?
Bəli, CheckInstall bir iş paketi yarada bilər, ancaq deb paketlərinin bacardığı bütün gözəllikləri dəstəkləmir :) Yəni:
  • Skriptlər paketi quraşdırmadan əvvəl, sonra və yerinə yerinə yetirilir :)
  • Konfiqurasiya sənədlərinin avtomatik idarə edilməsi: paket köhnə konfiqurasiyaların yeniləri ilə tələb olunmadan yazılmasına imkan verməyəcək
  • Şablonlarla iş: quraşdırma zamanı istifadəçiyə sual vermək bacarığı (!!!)
  • Digər paket sənədlərinin dəyişdirilməsi
Nə tələb olunur
Əlbəttə ki, tar, gz, ar arxivçiləri tam hüquqlu bir paket yaratmaq üçün kifayətdir, ancaq lazımsız təlaşları istisna edə və həyatı asanlaşdırmaq üçün yaradılmış vasitələrdən istifadə edə bilərsiniz :)
Qoyduq:
$ sudo apt-get install dpkg debconf debhelper lintian
Biz nə edəcəyik
Məsələn, /usr/bin/super.sh skriptinə baxılacaq. İçərisində nə olduğu önəmli deyil, əsas odur ki, düzgün yerdə necə görünsün :)
Qovluq hazırlanır
Ev qovluğunda (və ya əlverişli yerdə) gələcək paketin bütün fayllarını ehtiva edən bir qovluq yaradın: mkdir ~ / supersh. Sonrakıda buna ad verəcəyik paket kökü.
Paketin kökündə "DEBIAN" qovluğunu yaradın (böyük hərflərlə bu vacibdir!). Bu qovluqda paketin yaradılmasına nəzarət edən məlumatlar var və paket quraşdırıldıqda diskə kopyalanmır.
Ayrıca, paketin kök qovluğunda gələcək "disk kökü" var: paketi qurarkən bütün fayllar ("debian" qovluğu istisna olmaqla) kökdən açılır /. buna görə də skriptimiz paketin kökünə nisbətən bu yol boyunca uzanmalıdır: "usr / bin / super.sh"
Qara üzərində ağ:
mkdir -p ~ / supersh / DEBIAN # nəzarət qovluğu
mkdir -p ~ / supersh / usr / bin # skript yolu
cp super.sh ~ / supersh / usr / bin / # skriptimizi doğru yerə kopyalayın
Nəticədə əldə edirik:
supersh / DEBIAN /
supersh / usr /
supersh / usr / bin /
supersh / usr / bin / super.sh

Paket yaradılması: DEBIAN / *

Dediyim kimi, DEBIAN qovluğunda quraşdırma zamanı istifadə olunan fayllar var. Burada hər bir faylı (nümunələrlə) təsvir edəcəyəm.
Tam hüquqlu bir paket yaratmaq üçün "nəzarət" nəzarət faylı kifayətdir, qalanların hamısı ya mətn məlumatlarını əlavə etmək (dəyişdirmə, lisenziya) və ya tətbiqlər üçün inkişaf etmiş quraşdırma seçimlərini idarə etmək üçün istifadə olunur.
Aşağıda DEBIAN / * qovluğunda təsvir olunan fayllardan lazım olanları seçin və təlimatlara uyğun olaraq doldurun :)
Bizim nümunədə yalnız DEBIAN / nəzarət tələb olunur.
DEBIAN / nəzarət: Əsas məlumatlar
control, bütün əsas xüsusiyyətləri təsvir edən paketin mərkəzi sənədidir. Fayl "Attribute: value" cütlərindən ibarət bir mətn faylıdır. Şərhlərdən istifadə edə bilərsiniz: sətrin əvvəlindəki "#" simvolu (xüsusiyyət dpkg> = 1.10.11 versiyasına əlavə edilmişdir, şərhlərə ümid etməməlisiniz :).
Cədvəldə nəzarət faylı üçün müəyyən edilmiş bütün sahələr verilmişdir. Lazım olan sahələr vurgulanır qalın: bunlar olmadan paket düzgün sayılmayacaq.
Atribut Təsvir Nümunələr
- əsas -
Paket: Paket adı: - yalnız Latın, rəqəmlər və tire. Quraşdırma zamanı ad istifadə olunur: apt-get install Paket: supersh
Versiya: Paket versiyası (və içərisində olan proqramlar). Yeniləməyin olub olmadığını müəyyən etmək üçün istifadə olunur.
Format belədir:<версия_программы>-<версия_пакета> .
Tövsiyə edin həmişə paketin versiyasını göstərin: paketin quruluşu dəyişdirildikdə rəqəm bir dəfə artır.
İcazə verilən simvollar olduqca pulsuzdur: tarix və hərflərdən istifadə edilə bilər. Bu gün depolarınızdakı nümunələrə baxın :)
Versiya: 1.0-1
Versiya: 2009.12.12-1
Təmin edir Bu paketin quraşdırılması nəticəsində sistemdə qeydiyyatdan keçən tətbiqin (bəlkə də virtual) adı.
Nadir hallarda istifadə olunur, əsasən bir paket adının dəyişdirilməsi lazım olduqda və ya birdən çox paket eyni funksiyanı təklif edərsə. Məsələn, Apache və nginx paketləri httpd təmin edir: təmin edir: httpd daemon qabiliyyəti
Qurmaq istəyərkən yəqin ki, bir səhvlə üzləşdiniz: "virtual paketdir". Bu odur :)
Təmin edir: supersh
Mühafizəçi Paket sahibinin adı və poçtu: tətbiqi "debianlaşdıran" şəxs.
Format ixtiyari olsa da, adı qəbul edilir
Mühafizəçi: o_O Tync
Memarlıq Paketin nəzərdə tutulduğu prosessor arxitekturası.
Etibarlı Dəyərlər: i386, amd64, hamısı, mənbə
hamısı skriptlər üçün istifadə olunur: portativdir, elə deyilmi? :)
source tərtib edilmiş mənbə paketləri üçün istifadə olunur
Memarlıq: hamısı
Bölmə Tətbiqin adətən istifadə olunduğu vəzifəni təyin edir (tətbiq qrupu).
Mümkün dəyərlər: idarəçi, baza, əlaqə, töhfə, inkişaf, sənəd, redaktorlar, elektronika, quraşdırılmış, oyunlar, gnome, qrafika, hamradio, tərcüməçilər, kde, libs, libdevel, poçt, riyaziyyat, misc, şəbəkə, xəbərlər, pulsuz , oldlibs, otherosfs, perl, python, elm, qabıqlar, səs, tex, mətn, utils, web, x11
Bölmə: başqa
Təsvir Paket təsviri.
Təsvir iki hissədən ibarətdir: eyni sətirdə qısa təsvir (70 simvol) və sonrakı sətirlərdə uzun təsvir, boşluqdan başlayaraq.
Genişləndirilmiş təsvirdə bütün yeni sətirlər nəzərə alınmır. \ N daxil etmək üçün tək nöqtə istifadə olunur.
Təsvir: Qısa.
OngUzun
Bura gedir.
␣.
EwYeni xətt.
- əlaqələr və asılılıqlar -
Asılıdır Bu paketi qurmaq üçün lazım olan paketlərin vergüllə ayrılmış siyahısı.
Paket adından sonra operatorlardan istifadə edərək mötərizədə bir versiya məhdudiyyəti təyin edə bilərsiniz:<<, =, >>, <=, >=. Operator göstərilməyibsə -> = istifadə olunur
Asılıdır: dpkg, libz (> = 1.2.3), jpeg (= 6b), png (< 2.0)
Əvvəlcədən asılıdır Bu paketin quraşdırılması zamanı tələb olunan paketlərin siyahısı.
Bu asılılıqlar paket quraşdırma skriptləri üçün tələb oluna bilər: məsələn, flash-quraşdırıcı paketi wget tələb edir
Versiya məhdudiyyətləri istifadə edilə bilər (bax asılıdır).
Əvvəlcədən asılıdır: wget (> = 1.0)
Münaqişələr Eyni zamanda quraşdırıla bilməyən paketlərin siyahısı.
Siyahıda göstərilən paketlərdən ən azı biri artıq quraşdırılıbsa, quraşdırma uğursuz olacaq.
Çatışmazlıqlar: crapscript
Əvəz edir Faylları bu paket tərəfindən dəyişdirilən paketlərin siyahısı.
Nəyisə dəyişən "yamaq paketi" yarandığı təqdirdə tələb olunur: əks halda başqasının paketinin faylları dəyişdirilərkən, quraşdırma xətası baş verəcək. Məsələn, UT2004 yamaqlı və raket atıcısının səsini çıxaran belə bir paketim var :)
Əvəz edir: ut2004
Tövsiyə edir Quraşdırmaq üçün tövsiyə olunan paketlərin siyahısı
Bu paketlər isteğe bağlıdır, lakin adətən indiki paketlə birlikdə istifadə olunur.
Təklif edir: superplatform
Təklif edir Quraşdırma üçün təklif olunan paketlərin siyahısı.
Bu paketlər isteğe bağlıdır, amma proqram onlarla daha yaxşı işləyir :) Teorik olaraq paket meneceri onları quraşdırmağı təklif etməlidir.
Təklif edir: supersh-modulları
Qurmaq-asılıdır (Memarlıq: yalnız mənbə)
Mənbələri tərtib etmək üçün lazım olan paketlərin siyahısı.
Eyni asılıdır, amma məntiqi olaraq ayrıdır.
Quruluşdan asılıdır: smake
- əlavə -
Quraşdırılmış ölçü Paket fayllarının ölçüsü kilobaytdır.
Yalnız ən yaxın tam ədədə yuvarlaqlaşdırılmış bir rəqəm. Lazım olan ümumi disk sahəsini təyin etmək üçün paket meneceri tərəfindən istifadə olunur.
Quraşdırılmış ölçü: 3
Prioritet Paket prioriteti: sistemdə nə qədər önəmlidir
Mümkün dəyərlər: əlavə, isteğe bağlı, standart, vacib, tələb olunur (belə paketlər ümumiyyətlə silinmir!).
Prioritet: isteğe bağlı
Əsas Bu atributu yes olaraq təyin etsəniz, paket silinə bilməz. Əsas: bəli
Mənşəyi Xətt: paketdəki proqramların haradan gəldiyi. Tipik olaraq müəllifin sayt URL, e -poçt və ya adı istifadə olunur. Mənşəyi: beyin
X-Mənbə * .Tar.gz mənbə arxivinə tam keçid X-Mənbə: ... *. Tgz

Bəli, nəzarət faylının belə möhkəm imkanları var :)
Və nümunəmizdə belə görünür:
Paket: supersh
Versiya: 1.0-1
Bölmə: başqa
Memarlıq: hamısı
Asılıdır: bash, sed (> = 3.02-8)
Mühafizəçi: o_O Tync
Təsvir: Super Shell Script
Super Super bir nümunə ssenari.
␣.
Nothing Heç nə etmir :)
DEBIAN / müəllif hüquqları: / lisenziya
Lisenziya mətni. Fayl tələb olunmur, ancaq müəllifliyinizi vurğulamaq daha yaxşıdır;)
DEBIAN / changelog: changelog
Xüsusi formatdakı Changelog: paket nömrəsinin versiyasını, düzəlişini, paylanmasını və əhəmiyyətini öyrənmək üçün dpkg tərəfindən istifadə olunur. Baxmaq daha yaxşıdır;) ancaq bir nümunə verəcəyəm:
supersh (1.0-1) sabit; təcili = orta

O_O Tync Günəş, 13 Dekabr 2009 00:11:46 +0300

DEBIAN / conffiles: konfiqurasiya fayllarının siyahısı
Paketlərdə adətən / və s. -də yerləşənlər kimi konfiqurasiya fayllarının boşluqları olur. Aydındır ki, paketdəki konfiqurasiya yenilənsə, istifadəçi düzəliş edilmiş konfiqurasiyasını itirəcəkdir. Bu problem, məzmunu əsas konfiqurasiyaya daxil olan "config.d" kimi qovluqlardan istifadə etməklə, təkrar variantları əvəz etməklə asanlıqla həll olunur.
DEBIAN / conffiles faylı problemə fərqli bir həll təqdim edir: konfiqurasiya fayllarının siyahısını ehtiva edir (hər sətirdə bir). Paketin cari versiyasında bu fayllardan biri yenilənirsə, istifadəçi konfiqurasiya versiyalarının ziddiyyəti barədə xəbərdarlıq alır və seçə bilər: silmək, dəyişdirmək və ya birləşdirmək.
Bu vəziyyət, ehtimal ki, konfiqurasiya qazan hər Linux istifadəçisi ilə qarşılaşır :) Və ayaqları buradan böyüyür.
Hər bir sətrin hər bir konfiqurasiya üçün tam mütləq yolu olmalıdır. Misal üçün:
/etc/supersh/init.conf
/etc/supersh/actions.conf
DEBIAN / dirs: yaradılacaq qovluqların siyahısı
"Proqram tərəfindən tələb olunan, lakin nədənsə yaradılmayan qovluqların mütləq yollarının siyahısı." - rəsmi sənədləri oxuyur. Praktikada, proqramın bu və ya digər şəkildə istifadə etdiyi bütün qovluqlar burada verilmişdir: ikili faylların yerləşdiyi və proqram tərəfindən istifadə olunan qovluqlar.
Hər sətirdə bir. Misal üçün:
/ var / log / supersh
/ var / lib / supersh
Birdən çox boş qovluq yaratmaq üçün istifadə etmək rahatdır.
DEBIAN / menyu: menyu elementləri yaradın
Menyu elementləri yaratmaq üçün çətin bir fayl. Mənim üçün heç vaxt işləməmişdir :) İçindəkilərin ya qeyri -adi pəncərə menecerlərində, ya da bir növ konsol menyusunda istifadə edildiyi hiss olunur ... ya da daha əvvəl istifadə edilmiş və unudulmuşdur :)
Misal:
? pack (supersh): needs = "text" section = "Applications / Programming" title = "(! LANG: Super Shell Script" command="/usr/bin/super.sh" !}
TODO: nəyə ehtiyacınız olduğunu öyrənin. Bu man5 menyu -da yazılıb, düzünü desəm, dərindən araşdırmamışam :)
UPD: Menyu elementi əlavə etməyin düzgün yolu
Fayl / DEBIAN / menyu bilinməyənləri yaradır və harada olduğu aydın deyil: qrafik menyunun elementləri hələ də yaradılmamışdır. Buna görə də bunu düzgün edəcəyik :)
/ Usr / share / applications -da bir dəstə *. Masa üstü faylları görürük: bunlar menyu elementləridir. İni faylına bənzər sintaksisi olan mətn sənədləridir. Açırıq, öyrənirik, eyni şeyi edirik və ortaya çıxan * .desktop faylını usr / share / applications / -ə yerləşdiririk. Bunun nişanı usr / share / pixmaps olmalıdır.
Bundan sonra, postinst skriptinə update-menyu menyusu yeniləmə əmrini əlavə etməlisiniz:
əgər ["$ 1" = "configure"] && [-x "` which update-menus 2> / dev / null` "]; sonra
yeniləmə menyuları
fi

Paket quraşdırma skriptləri ilə işləmək aşağıda müzakirə olunacaq.
Məsləhət üçün Condorious -a təşəkkürlər :)

DEBIAN / md5sums: faylların checksums
Paketin bütövlüyünü yoxlamaq üçün istifadə olunur. Vacib bir fayl.
Bu şəkildə doldurulur (cwd = paket kökü):
$ md5deep -r usr> DEBIAN / md5sums
DEBIAN / izləmək: proqramın yükləndiyi saytın monitorinqi
Bir neçə onlarla paketi saxlasanız bu funksiya faydalıdır və bütün yeniləmələri izləmək çətindir.
Fayl uscan və yeniləmə proqramları üçün təlimatları ehtiva edir. Bu xüsusiyyətdən istifadə edərək, paket mənbələrinin əldə edildiyi saytı izləyə və bütövlükdə paylamanın keyfiyyətinə nəzarət edə bilərsiniz.
Misal:
# Site Directory Pattern Version Script
ftp.essession.se / gentoo gentoo - (. *) \. tar \ .gz debian uupdate
DEBIAN / (preinst | postinst | prerm | postrm): quraşdırma skriptləri
Ümumilikdə bir paketdə ən çox dörd skript yarada bilərsiniz:

Bu skriptlərdə səhvlərin olduğunu unutmayın heç bir şəkildə qeyd olunmur: Skript qaytarma kodundan daha maraqlı bir şey hər yerdə saxlanılır və giriş əl ilə aparılmalıdır! Paketlərimdən birinin istifadəçiləri Linux Mint -ə quraşdırılarkən uğursuz oldular və səbəbini bildirmək üçün onlardan bir səhv jurnalını (orada olmayan) istəmək imkanı belə yox idi :)
Hər bir skriptin əvvəlində aşağıdakı boşluğu istifadə etməyi məsləhət görürəm: syslogda baş verən bütün səhvləri saxlayacaq.
#! / bin / bash
set -e # hər hansı bir xətada uğursuzluq
set -u # təyin olunmamış dəyişənləri səhv kimi qəbul edir

# ====== [Tuzaq Səhvləri] ====== #
set -E # shell funksiyalarının ERR tələsini miras almasına icazə verin

# Normal olmayan çıxış siqnallarını tut:
# 1 / HUP, 2 / INT, 3 / QUIT, 15 / TERM, ERR
tələ err_handler 1 2 3 15 ERR
err_handler funksiyası (
local exit_status = $ (1: - $?)
logger -s -p "syslog.err" -t "ootync.deb" "supersh.deb skript" $ 0 "səhv kodu $ exit_status ($ BASH_LINENO sətri:" $ BASH_COMMAND ")"
$ exit_status -dan çıxın
}

Quraşdırma skript kodunuz ...

XƏBƏRDARLIQ: boşluq hələ geniş yoxlanılmayıb, yenidən yoxlayın! Bu yaxınlarda ayıklamanın mümkünsüzlüyünə rast gəldim :)

DEBIAN / şablonlar: dialoqlar üçün şablonlar
Artıq qeyd edildiyi kimi, DEBIAN / config skriptində istifadəçiyə suallar verə bilərsiniz: bir sətir daxil edin, seçimlərdən birini seçin, işarələyin, ... Bu, debconf paketinin bash debhelper funksiyalarının "kitabxanası" tərəfindən edilir, həm də çox faydalı şeylərə qadirdir. Onları burada hesab etmirəm :)
DEBIAN / şablon faylı, informasiya qutularını (GUI və ya ncurses) göstərmək üçün istifadə olunan məlumatları ehtiva edir. Fayl boş bir sətirlə ayrılmış blokları ehtiva edir. Hər bir blok müəyyən bir informasiya qutusunda istifadə olunan mənbələri müəyyənləşdirir.
Bütün növ dialoqlar üçün başlıq standartdır:
Şablon: supersh / template-name
Növ: simli
Varsayılan: Varsayılan dəyər
Təsvir: Dialoq başlığı
␣Dialoq mətni

Şablon - unikal (bir paket daxilində) şablon identifikatoru. Skriptdə müəyyən bir dialoqa zəng etmək lazımdırsa, bu ad istifadə olunur.
Tip - şablonun növü. Aşağıdakı növlər müəyyən edilir: string, parol, boolean, select, multiselect, text, note, error.
Varsayılan dəyər - standart dəyər: istifadəçi bununla razılaşa bilər.
Təsvir - nəzarət sənədində olduğu kimi iki sahədən ibarətdir: qısa təsvir və uzun mətn. Birincisi, "pəncərə" nin adıdır, ikincisi istifadəçidən tələb olunanların daha ətraflı təsviridir. "Daxil et" kimi sözləri istifadə etməməyiniz tövsiyə olunur, ancaq dərhal mahiyyəti: "Ssenariyə salam vermək", "Bağlama nöqtəsi", ...

Növü Şablonun təsviri
sim Mətn sətri istəyin
parol Şifrə sorğusu.
Açıq səbəblərə görə bu tip şablonlar üçün Varsayılan dəyər yoxdur :)
boolean Yoxlama işarəsi :) "true" və ya "false" simli dəyərə malikdir
seçin Bir neçə variantdan birini seçmək bacarığı.

Seçimlər: bəli, yox, bəlkə də
çox seçimli İşarələri olan bir neçə variant seçmək imkanı.
Seçimlər əlavə şablon atributunda təklif olunur:
Seçimlər: seks, narkotik, rok-n-roll
mətn Mətni göstərir: bəzi vacib olmayan məlumatlar
Qeyd Mətni göstərir: vacib məlumatlar
səhv Mətni göstərir: çox vacib məlumatlar, kritik.

Mətn, qeyd, səhv şablonları üçün Varsayılan dəyər də yoxdur, çünki onlar yalnız məlumat göstərirlər :)
Aşağıdakı şablonla oynayaq:
Şablon: super / salam
Növ: simli
Təsvir: Xoş mesaj
␣ Ssenarinin sizi qarşılamasını arzuladığınız mesaj.
Varsayılan: Salam, ağam!
Debconf və debhelper istifadə etməyin əsasları
Bunlar yalnız işləyə bilən eskizlərdir. Orijinalda şablonlar və onlarla işləmək haqqında burada oxuya bilərsiniz: man 7 debconf-devel :)
Şablonları DEBIAN / config konfiqurasiya skriptinizdə istifadə etmək üçün əvvəlcə debhelper funksiyalarını aktiv etməlisiniz:
... / usr / share / debconf / confmodule. Ayrıca, bu fayl postinst skriptinə daxil edilməlidir: əks halda DEBIAN / config skripti heç icra olunmayacaq!
Bu xüsusiyyətlər debconf paketində mövcuddur, onu asılılıqlara daxil etməyi unutmayın!
İstifadənin ibtidai bir nümunəsi. DEBIAN / konfiqurasiya faylı
#! / bin / bash -e

# Debconf əmrlərini birləşdirir

"1 dollar" qutusu
konfiqurasiya | yenidən qurmaq)
# Sorğu


# Cavab işlənir

salam = "$ RET"
echo "$ salamlama"> /etc/supersh/greeting.txt
;;
*)
\ "$ 1" "> & 2 naməlum arqumenti ilə çağırılan echo" konfiqurasiyası
çıxış 1
;;
esac
# Sorğu
db_input orta "üst / salamlama" || doğru # başlanğıc
db_go || true # sorğunu ekranda göstərin

# Cavab işlənir
db_get "supersh / greeting" # Dəyəri $ RET dəyişəninə daxil edin
salam = "$ RET"
echo "$ salamlama"> /etc/supersh/greeting.txt

Burada artıq xoşagəlməz bir pusqu var: db_input funksiyasının orta dialoqun prioritetinə keçdiyini unutmayın. Debconf üçün minimum prioriteti təyin edə bilərsiniz: aşağıda göstərilməyən, lakin standart dəyər (Varsayılan şablon) alınmış prioritetli dialoqlar! Bunun tam olaraq baş verməməsi üçün kritik prioritetdən istifadə edirik :) Bundan əlavə, GUI -dən yükləyərkən sualların göstərilməsi həddi daha yüksəkdir və bir çoxu ümumiyyətlə göstərilmir.
Mümkün prioritetlər: aşağı - hər zaman istifadə olunur, orta - defolt ümumiyyətlə yaxşıdır, yüksək - defolt arzuolunmazdır, kritikdir - istifadəçinin diqqəti vacibdir.
|| true, bash-a keçən "-e" açarı səbəbiylə skriptin ölməsinin qarşısını almaq üçün istifadə olunur.
Bu skriptdə, səhvləri düzəltmək üçün həmin diskin istifadə edilməsi də tövsiyə olunur, əks təqdirdə ayıklama zamanı yenidən bölüşdürülə bilən paketlə bağlı problemlər yarana bilər :)
Debconf istifadə etmənin bütün incəlikləri (funksiyalar, metodlar, parametrlər, səhv kodları) olduqca dolğun bir manada təsvir edilmişdir: man debconf-devel.

Nəhayət, paketi təmizləmə - debconf əmri ilə sildikdə paket məlumatlarını verilənlər bazasından da təmizləməlidir. Məsələn, istifadəçinin seçimini db_input sorğuları arasında saxlayır.
Bu məlumatları təmizləmək üçün postinst skriptinə aşağıdakıları əlavə etməlisiniz:
əgər ["$ 1" == "təmizləmə"] && [-e / usr / share / debconf / confmodule]; sonra
... / usr / share / debconf / confmodule
db_purge
fi

Bir paket hazırlayırıq! :)

Vay! Lazım olan bütün fayllar yaradılıb, lazımlı qovluqdadır. İndi paketi qurmağın vaxtı gəldi :)
Ediləcək ilk şey, paketin kökündəki bütün faylları istifadəçiyə və qrup kökünə təyin etməkdir: root (və ya lazım olduqda digərləri). Paket sənədlərinin həm fayllara, həm də sahibinə olan icazələri qoruyan tar.gz arxivinə yığılması zəruridir. Buna görə icra etməlisiniz:
$ sudo chown -R kök: kök.
Ancaq bu tələb olunmur. Mükəmməl bir fakeroot əmri var ki, bir arxiv yaradılarkən faylın sahibini köklə dəyişdirər.
Bizim nümunəmizdə, skriptin icra edilə bilən bir biti olmalıdır.
Sonra qovluğa qayıdırıq ki, paketin kök qovluğu görünsün və paket kiçik bir vuruşla yaradılsın:
$ fakeroot dpkg-deb-supersh qurun
Yaradılmış paket * .deb paketlərinin adlandırılma sırasına uyğun olaraq yenidən adlandırılmalıdır:<имя пакета>_<версия>_<архитектура>.deb
$ mv supersh.deb supersh_1.0-1_all.deb
Budur, paket hazırdır!
Paketin avtomatik yoxlanılması
Bir paketi yoxlamağa və quruluşundakı ümumi səhvləri təyin etməyə imkan verən lintian adlı bir yardım proqramı var. Bu belə edilir:
$ lintian supersh_1.0-1_all.deb
Paketin quraşdırılması
$ sudo dpkg -i supersh_1.0-1_all.deb

Öz paket anbarınızı yaradın

İndi öz paketimiz var. Bir neçəsi olduqda və daha da çoxu - asılılıqlarla, öz yerli mikro anbarınızı tez bir zamanda qaldırmağın və paket menecerinin mənbələri siyahısına daxil etməyin daha rahat olduğu ortaya çıxacaq :) Burada "Öz anbarınızı necə yaratmağınızı" sürətli bir şəkildə izah edəcəyəm. Müvafiq sənədləri oxuyaraq fikri inkişaf etdirmək asan olacaq :)
Əvvəlcə köməkçini quraşdıraq:
$ sudo apt-get reprepro quraşdırın
Gələcək deponun təsviri
Depo mərkəzi - onun təsviri. İçindəki əsas şey, deponun komponentlərinin siyahısıdır. "Yumşaq" və "oyunlar" komponentlərini yaradacağıq.
Gələcək depo üçün bir qovluq seçin. Bütün hərəkətlər kökündən həyata keçirilir.
Aşağıdakı məzmunlu bir conf / distributions faylı yaradın:
Təsvir: yerli depom
Mənşəyi: Ubuntu
Suite: test
HəmçininAcceptFor: qeyri -stabil eksperimental
Kod adı: karmik
Versiya: 5.0.0
Memarlıq: i386 amd64 mənbəyi
Komponentlər: yumşaq oyunlar
UDebComponents: yumşaq oyunlar

Sadə bir depo yaratmaq işimizdə bütün sahələr əsas rol oynamır və yalnız "nə olduğunu" vizual olaraq təyin etmək üçün istifadə olunur :)

Bir depo yaratmaq
Depo təsvir edilmişdir! İndi təsvirə əsasən bir boşluq yaradaq. Əmrlər deponun kökündə icra olunur:
dollarlıq ixrac
$ reprepro əlaqələr yaradır
Və /etc/apt/sources.list-ə hazır bir depo əlavə edin:
deb faylı: /// path / to / repo / karmic soft games
Bu depo bir veb server istifadə edərək də paylaşıla bilər.
Anbarda paket idarəçiliyi
Əlavə etmək üçün deponun kökünə * .deb fayllarını qoyuruq və onları karmik paylamanın yumşaq komponentinə əlavə edirik:
reprepro -C yumşaq daxil karmik * .deb
İndi paketlər paket menecerindən əldə edilə bilər :)
Paketlərin çıxarılması:
reprepro -C yumşaq karmik supersh çıxarın

Finiş

Məqalədə debet paketləri yaratmaq üçün materiallar müzakirə olunur. Diqqət, şəbəkənin kifayət qədər təsviri bir təsvirə malik olmadığı nöqtələrə yönəldilmişdir. Ümid edirəm sadə və aydın şəkildə təqdim etmək cəhdim uğursuz alınmadı :)
Ev tapşırığı :)) - insanda tapılması asan olan kifayət qədər sənədləşdirilmiş şeylər "ah və məqalələr:
  • Mənbələri toplayan mənbə paketləri yaratmaq: Zabbix nümunə olaraq, mahoro habrauser məqaləsində bu barədə mükəmməl danışdı
  • Debconf, konfiqurasiya skriptlərində debhelper: debconf-devel və debhelper tərəfindən manna oxuyun. Dh_make əmri ilə bir paket skeleti yaratmağa da imkan verirlər.
  • Paketlərdə sənəd yaratmağın inkişaf etmiş yolları: DEBIAN / docs, DEBIAN / manpage.
  • Init skriptlərinin yaradılması
  • Cron işlərini idarə etmək
  • Gpg düyməsi ilə depoya imza atın

Proqramları quraşdırmağın bir neçə yolu var. Demək olar ki, hər kəsin ortaq bir hissəsi var - mənbələri açmaq:

Tar xvfj mega_app.tar.bz2

Tar xvfz mega_app.tar.gz

Komandanı icra edin ./ konfiqurasiya edin, sonra etmək... Bu əmrlər mənbə kodlarından icra olunan faylları, kitabxanaları və s. Qurmaq üçün istifadə olunur.
Ayrı olaraq ilk əmri qeyd etməyə dəyər - ./ konfiqurasiya edin
İcra etsəniz ./configure --help sonra ötürülə biləcək parametrlərin siyahısını alacaqsınız ./ konfiqurasiya edin
Məsələn, aşağıdakı əmr çox vaxt mümkündür:

./configure --prefix = / opt / mega_app

Və ya nədənsə öz -özünə tapılmayan kitabxanaya gedən yolu göstərin:

./configure --kerberos-lib = / opt / kerberos / lib

Klassik.
Beləliklə, ardıcıllığı edirik:

./ Yapılandır

Proqramın bütün komponentlərini əslində sistemə quraşdıran əmr:

Quraşdırın

XƏBƏRDARLIQ !!! Bu metoddan istifadə etməklə sonradan çox ciddi problemlərlə qarşılaşmaq asandır. Birincisi, yəqin ki, proqramı silə bilməyəcəksiniz (silin).

Checkinstall proqramından istifadə edirik.
Doğru yol. Ümumi hissəni tamamladıqdan sonra işə salın:

Proqramın özü hər şey haqqında soruşacaq və ya hər yerdə ENTER düyməsini basa bilərsiniz.
kişi qeydiyyat həm də çox yaxşı bir yoldur :))

Debian üçün mənbədən bir paket qurmaq.
Bu ayrı və çətin bir yoldur - deb paketlərinin (və ya hər hansı digərinin) yaradılmasının bir çox aspektlərini başa düşməlisiniz. Bu yol burada tam təsvir olunmayacaq, sadəcə əvvəlcədən hazırlanmış materiallardan bir paketin necə yığılacağına bir nümunədir.
Beləliklə, burada bir nümunə var. Packages.ubuntu.com saytına daxil oluruq, lazım olan paketi tapırıq (məsələn, fərq) və iki faylı yükləyirik - mənbə (http: //archive.ubuntu.com/ubuntu/pool/main/d/diffutils/diffutils_2.8.1. o ...) və mənbələri düzəldəcək və içərisində sehrli qaydalar faylı olan bir debian qovluğu yaradacaq bir yamaq (http: //archive.ubuntu.com/ubuntu/pool/main/d/diffutils/diffutils_2. 8.1-1 ...).
Onları ~ / test qovluğuna kopyalayın və əvvəlcə mənbələri açın:

Tar xvfz diffutils_2.8.1.orig.tar.gz

Sonra yamağı tətbiq edin:

Cd diffutils-2.8.1 / gzip -cd ../diffutils_2.8.1-11ubuntu4.diff.gz | yamaq -p1

İndi etməliyik debian / qaydalar icra edilə bilən:

Chmod + x debian / qaydalar

Və paketi toplayın:

Fakeroot debian / ikili qaydalar

Daimi bir istifadəçi tərəfindən bir paket qurmaq üçün Fakeroot lazımdır (adətən tələb olunan əməliyyatların çoxu paket qurmağa imkan verməz).

Ls ../ diff_2.8.1-11ubuntu4_i386.deb diffutils-2.8.1 diffutils_2.8.1-11ubuntu4.diff.gz diffutils_2.8.1.orig.tar.gz

Gördüyünüz kimi, paket hazırdır.

Və ya Debian:

wget package_name.dsc, package_name.diff.gz, package_name.orig.tar.gz dpkg -source -x package_name.dsc cd ./ package_name/ dpkg -buildpackage -rfakeroot

Nəticə
Başlanğıcdan sona qədər bir paket hazırlamaq üsulları da var. Dağıtım dəstinizdən paket yaratmaq təlimatını götürməlisiniz və bu prosesi oradan öyrənməlisiniz. Yaxşı və lazımlı bir çox paket hazırlayın. Yaxşı bir quruluş yaratmısınızsa-paylama dəstini hazırlayanlara göndərin, onu yeniləyin. Unutmayın ki, saxladığınız bir paket belə dünyada yüzlərlə insana faydalı ola bilər.

Qısa bir ara verək və SEO saytının optimallaşdırılması haqqında bir video izləyək:

Paketlərin siyahısını hazırlayırıq:

$ dpkg-scanpackages. / dev / null | gzip -9c> ./Packages.gz
Bəlkə belə bir mesaj alacağıq:

Dpkg-scanpackages: xəbərdarlıq: Arxivdəki paketlər, lakin ləğv faylında yoxdur: dpkg-scanpackages: xəbərdarlıq: fosil linux-headers-3.8.0-avl9-pae linux-image-3.8.0-avl9-pae pdfsam sublimetext virtualbox-4.2 xserver -xorg-input-wacom zotero dpkg-scanpackages: info: Paket faylını çıxarmaq üçün 8 giriş yazdı.
İndi depomuzda 8 paket var. Əla, depomuzu fayla əlavə edin:

kimi xətt:

Deb faylı: /// home / istifadəçi adı / zips / virensdebianrepository ./
İndi paketlərin siyahısını yeniləməlisiniz ki, quraşdırıla bilsinlər:

Budur, indi, məsələn, təzə yığılmış Sublime Text 2 mətn redaktorunu (əla təlimatlar) həmişəki kimi quraşdıra bilərsiniz: İndi SublimeText -i quraşdırmaq üçün bunu etmək kifayətdir:
# apt-get sublimetext quraşdırın

Paket siyahılarını oxuyur ... Tamamlandı Bağlılıq ağacı vəziyyət məlumatlarını oxudu ... Bitti Aşağıdakı YENİ paketlər quraşdırılacaq: alt mətn 0 təkmilləşdirilmiş, 1 yeni quraşdırılmış, 0 silinəcək və 245 təkmilləşdirilməmişdir. 0 B / 11.4 MB arxiv almaq lazımdır. Bu əməliyyatdan sonra 17.4 MB əlavə disk sahəsi istifadə ediləcək. XƏBƏRDARLIQ: Aşağıdakı paketlər təsdiqlənə bilməz! sublimetext Bu paketlər yoxlanılmadan quraşdırılsın? Y Daha əvvəl seçilməmiş paket alt mətninin seçilməsi. (Verilənlər bazası oxunur ... Hal -hazırda quraşdırılmış 247813 fayl və qovluq.) Sublimetin açılması (... /. / Sublimetext_2.0.2_i386.deb -dən) ... Sublimetin qurulması (2.0.2) ... Budur, paket paketdən çıxarılacaq və quraşdırılacaq, ancaq bunun yerli depodan olmasını burada görmək olar: (... /. / sublimetext_2.0.2_i386.deb)

Nəticə

Bu yazıda təsvir olunan reseptlər, truffle foie gras deyil, sürətli yeməklərdir. Böyük depolar və ya kompleks paketlər üçün sənədləri və dərsləri oxumalısınız. Yalnız depolar yarada bilməyən, həm də CD / DVD disklərinə yaza biləcək bir proqramdan da istifadə edə bilərsiniz.

Yoldaşa xüsusi təşəkkürlər beyin axını, PRE mühitinin göstərilməsi ilə yazıda bir xətaya işarə etdi. Bu, pandoc kimi Haskell sənətkarlıqlarına güvəndiyiniz zaman olur :-)

Bəli, əlavə edəcək bir şeyiniz varsa - şərhlərdə yazın, ancaq unutmayın ki, Debian Qablaşdırma Təlimatlarını və digər kvant fizikasını yenidən oxumağa ehtiyac olmadan yazının tələsik olduğunu unutmayın.

Anonim şərhlər ...

Mətninizdə bir səhv var:
"İndi Skype -ı quraşdırmaq üçün bunu etmək kifayətdir:

# apt-get sublimetext yükləyin "

Anonim şərhlər ...

Paketləri dpkg-deb vasitəsilə aça bilərsiniz:
$ dpkg -deb -x what.deb harada /

Anonim şərhlər ...

Bir paketi tamamilə açmaq və nəzarət sənədlərindəki faylları və ya asılılıqları tez bir zamanda düzəltmək üçün həmişə dpkg -e və dpkg -x istifadə olunur. Bir şey tərtib edərkən bir paket yaratmaq üçün install install yerinə checkinstall istifadə etdim. Düşünürəm ki, bu proqramlar haqqında danışmağa dəyər.

bakirə şərhlər ...

Debian mənbəyindən paketlər hazırlamaq hiyləgərdir! İndi təcrübəmi xatırlayacağam:

1. Deb-paketində saxlayıcı və digər cəfəngiyatlar olmalıdır, bunsuz (sürpriz-sürpriz!) Paket yığılmayacaq.

2. Montaj etdiniz, qurdunuz və bunun olduğunu düşünürsünüzmü? Belə deyil, yaxşı bir qabiliyyət başqa bir şey qurarkən paketi cəhənnəmə uçurur. Bu hissi bilirsən: necə? harda? nə? Bu paketi artıq quraşdırmışam !!! Yaxşı, o belə bir qabiliyyətdir - hamısı pravoslavdır, yəni patriarxal olduğu və sərbəst düşünməyə icazə vermədiyi deməkdir.

3. Buna görə təcili olaraq bir manevr lazımdır: qabiliyyət tutma paketi. "Nə, yaxşı dayanırsan? İndi, xahiş edirəm, soyun!" (c) Çünki bundan sonra qabiliyyət, paketinizi yıxmadan asılılıqları həll edə bilməyəcəyindən şikayət edəcək.

4. Bunun üzərinə əsəblərim itdi ... Və Gentounu kəşf etdim və saçlarım yenidən yumşaq və ipək oldu!

bakirə şərhlər ...

@iv_vl şərhləri ...
Və Gentoo və saçlarımı kəşf etdim ...
Təcavüzkar PR Ghent?! V mənim blojik ??? Başqa yol yoxdur! ;-)

1. Deb-paketində saxlayıcı və digər cəfəngiyatlar olmalıdır
Standart siyasət - qırıq bir paket üçün kimin üzünə vuracağını bilməlisən :-) Və sonra, bu RPM fedors və zyuzi -də gedən bedlamdan fərqli olaraq daha yaxşıdır.

2. Montaj etdiniz, qurdunuz və bunun olduğunu düşünürsünüzmü? Belə deyil, yaxşı bir qabiliyyət başqa bir şey qurarkən paketi cəhənnəmə uçurur.
Yalnız paketin köhnə bir versiyasını quraşdırırsınızsa - məsələn, Lenny -dən quraşdırdığım IceWM -i tutmalıyam (axmaq qulluqçusu Squeeze -də sındırılmış qab ilə buz qoydu). Bacarıq, bu cür manevrlərdən əvvəl sizi xəbərdar edəcək.

3. Buna görə təcili olaraq bir manevr lazımdır: qabiliyyət tutma paketi .... qabiliyyət, asılılıqları həll edə bilməyəcəyinə and içəcək.
Bu yalan və təxribatdır: yalnız gcc və ya glibc kimi bir şeyi tutmasanız, normal olaraq asılılıqları həll edəcək. "Yaxşı, etmədim, etmədim" üslubunda dərhal imtina etməyi sevən RPM-lərdən fərqli olaraq :-)

Asılılıqları həll etmək problemləri ola bilər, bu bir həqiqətdir, amma təzə KDE ghentinin toplanmasının bitməsini gözləyərkən prosessor üzərində yumurta və pastırma qızartmaqdan daha yaxşıdır ...

4. Bunun üzərinə əsəblərim təslim oldu ...
Nədənsə tez uçdun. Yeri gəlmişkən, bəylərdəki asılılıqlar haqqında nə demək olar? Hər hapşırma üçün orada konpelya ilə necə yaşayırsınız?
Mən ... üçün maraqlanmıram ... insanlar maraqlanır.

iv_vl

2021
maccase.ru - Android. Markalar. Dəmir. xəbərlər