Očarljiva čarovnija konfiguracije, izdelave in izdelave namestitve. Namestitev programov v sistemu Linux (.tar, .gz, .bz, RPM in DEB) Zahtevana programska oprema

Pogosto je potrebne pakete mogoče najti samo v izvorni obliki; ta članek opisuje metodo za namestitev paketa iz izvorne kode.

Razpakiranje

Programi se običajno distribuirajo v zapakiranih arhivih, to so datoteke s končnicami

.tar.gz (včasih .tgz) .tar.bz2

Razumeti morate razliko med arhivatorjem in pakirnikom.

Program se uporablja za arhiviranje imenikov in datotek katran; rezultat njegovega dela je datoteka s pripono .tar. Grobo rečeno, to je kopija datotečnega sistema - imeniki in datoteke s svojimi atributi in pravicami dostopa, postavljeni v eno datoteko.

Ta datoteka bo nekoliko večja od skupne velikosti datotek, ki so bile arhivirane. Zato (ali morda iz drugega razloga) uporabljajo pakirnike - programe, ki vam omogočajo zmanjšanje velikosti datoteke brez izgube podatkov.

Program katran lahko razpakiram, zato ni treba klicati gunzip, lahko pa preprosto poveste programu katran da je treba datoteko najprej razpakirati. Na primer ukaz

tar -xvf< some_app_name>.tar.gz

bo takoj razpakiral in razpakiral. Razlika med datotekami in končnicami

.tar.gz

.tar.bz2

le da so bili uporabljeni različni pakerji, program katran samodejno določi način stiskanja in dodatne možnosti v tem primeru ni potrebno.

Po razpakiranju morate iti v nastali imenik; vsi spodaj opisani ukazi se izvajajo v imeniku z izvorno kodo paketa.

CD< имя_пакета>*

Gradnja paketa

Za izdelavo programov v GNU/Linuxu uporabite (večinoma) program narediti, ki izvaja navodila iz Makefile, a ker obstaja veliko distribucij GNU/Linux in so vse različne, morate za izdelavo programa za vsako distribucijo posebej določiti poti, kjer se nahajajo knjižnice in datoteke glave. Programerji ne morejo preučiti vsake distribucije in ustvarjati za vsako posebej Makefile. Zato so se domislili konfiguratorjev, ki “preučujejo” sistem in v skladu s pridobljenim znanjem ustvarjajo Makefile. Vendar se niso ustavili pri konfiguratorju in so prišli do konfiguratorjev konfiguratorjev ... tu so se ustavili

Za gradnjo potrebujemo prevajalnike: navedeni so v odvisnostih paketa zgraditi bistveno, zato je dovolj, da ga namestite z vsemi odvisnostmi. Še vedno potreben autoconf in avtomobilska izdelava.

Torej, če želite zgraditi nekaj iz izvorne kode, morate najprej zgraditi konfigurator; kako zgraditi konfigurator je opisano v datoteki configure.in. Če želite zgraditi konfigurator, morate zagnati

./ bootstrap ./ autogen.sh

Če v arhivu ni takih skriptov, lahko zaporedno zaženete naslednje ukaze:

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

Vsi ti ukazi uporabljajo datoteko configure.in. Po izvedbi teh ukazov bo ustvarjena datoteka konfigurirati. Po tem morate zagnati konfigurator, da preverite prisotnost vseh odvisnosti, pa tudi namestiti dodatne možnosti gradnje (če je mogoče) in si ogledati rezultat namestitve (neobvezno - morda ni prisoten)

./ konfiguriraj

Konfigurator bo zgradil Makefile na podlagi pridobljenega znanja in datoteke makefile.am. Konfiguratorju lahko posredujete možnosti v izvornih kodah programa, ki vam omogočajo, da omogočite/onemogočite nekatere funkcije programa; običajno jih lahko izveste z ukazom

./ configure --help

Obstaja tudi niz standardnih možnosti, kot je

Predpona=

Ki določa, kateri imenik naj se uporabi za namestitev. Ponavadi za Ubuntu

--prefix =/ usr --prefix =/ usr/ local

BREZ poševnica na koncu! Zdaj lahko začnete postopek gradnje samega programa z ukazom

narediti

Privilegiji navadnega uporabnika zadostujejo za gradnjo. Konec gradnje lahko štejemo za trenutek, ko se ukazi v konzoli prenehajo izvajati "naključno" in ni besede napaka. Zdaj je vse sestavljeno in pripravljeno za namestitev.

Namestitev

Prizadevanja, porabljena za Pravilna namestitev v prihodnje se bodo več kot povrnili v primeru odstranitve ali posodobitve nameščene programske opreme.

Pravilna namestitev (možnost št. 1)

Namestitev s pomočjo pripomočka preverite namestitev. Za namestitev:

sudo apt-get install checkinstall

minus ta metoda: preverite namestitev ne razume vseh virov, saj lahko avtor programa napiše posebne namestitvene skripte in preverite namestitev jih ne bo razumel.

Če želite ustvariti in namestiti paket deb, morate zagnati

sudo checkinstall

Pravilna namestitev (Možnost št. 2)

Hitro ustvarite paket deb ročno.

Glavna razlika od prejšnje metode je, da v tem primeru ročno ustvarite paket in spremljate vse spremembe, ki jih naredite. Ta metoda vam bo ustrezala tudi, če viri ne podpirajo gradnje paketa z preverite namestitev.

    Namestimo v začasni imenik, kjer dobimo celoten nabor nameščenih datotek:

fakeroot make install DESTDIR=`pwd`/tempinstall

    Ustvarimo imenik DEBIAN v »korenu paketa« in dodamo seznam vseh datotek, ki naj gredo v /etc v DEBIAN/conffiles:

cd tempinstall mkdir DEBIAN najdi itd. | sed "s/^/\//" > DEBIAN/conffiles

    Nato ustvarimo datoteko DEBIAN/control z naslednjo vsebino:

Paket: ime_paketa Različica: 1.2.3 Arhitektura: amd64/i386/armel/all Vzdrževalec: Lahko vnesete svoje ime, lahko se smetite, če pa ga pustite praznega, bo dpkg prisegel Odvisno: Tukaj lahko vnesete seznam paketov ločeni z vejicami. Prioriteta: neobvezno Opis: Vnesti morate tudi nekaj, da ni opozoril

    Po potrebi lahko tam ustvarite tudi skripte preinst, postinst, prerm in postrm.

    Ustvarimo deb paket, za katerega izvedemo:

dpkg -b začasna namestitev

    Izhod je tempinstall.deb, ki ga namestimo

sudo dpkg -i tempinstall.deb

Namestitev (možnost št. 3)

Nepravilna namestitev

Pomanjkljivost te metode je, da če namestite neposredno prek narediti namestitev, potem najverjetneje ne boste mogli normalno odstraniti ali posodobiti paketa. Poleg tega namestitev nova različica nad starim bo najverjetneje prepisal vaše spremembe v konfiguracijah. make install naredi natanko to, kar mu je naročeno - namesti datoteke na prava mesta, ne upošteva dejstva, da je nekaj že tam. Po tem postopku je absolutno nemogoče pridobiti kakršno koli informacijo o tem, kaj je bilo kje in v prebavljivi obliki. Včasih Makefile seveda podpira dejanje odstranitve, vendar to ni tako pogosto in ni dejstvo, da deluje pravilno. Poleg tega boste morali shraniti nepakirano izvorno drevo in zgraditi pravila za odstranitev.

Za namestitev morate narediti

sudo make install

Če želite odstraniti paket, nameščen s to metodo, ga morate izvesti v korenskem imeniku izvorne kode programa (kjer ste zagnali make install).

sudo make uninstall

Napake

Pogosto v fazi konfiguracije konfigurator sporoči, da določena knjižnica manjka. Ime knjižnice, ki ga poroča, se ne ujema vedno z imenom paketa v Ubuntuju. Iz lastnih izkušenj vam lahko svetujem, da zahtevani paket poiščete v Synapticu, razen predpone lib.Če najdete več paketov, ki se v imenu razlikujejo s predpono -dev, potem morate namestiti paket -dev (običajno ga vključuje tudi paket, ki ni za razvijalce). Iščete lahko tudi z uporabo http://packages.ubuntu.com/ tako, da v iskanje vsebine paketa vnesete ime knjižnice. Podobno, če najdete dev in non-dev, potrebujete oba. No, ali pa samo poiščite v Googlu.

Nujno programsko opremo

Paketi z mm na koncu opisa so paketi za programe C++. Seznam za bmpx, vendar primeren za skoraj vse programe GTK2/Gnome. Torej, če ga ne morete sestaviti, si oglejte ta seznam in ga primerjajte s tem, kar ste namestili.

Prevedi:čas izvajanja:
Xlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-orodjalibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
Gladelibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-shramba1
Gaminlibgamin-devlibgamin0
Neonlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Zagon-Obvestilibstartup-notification0-devlibstartup-notification0
Pospešeklibboost-dev,libboost-filesystem-devdatotečni sistem libboost1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

Bila je želja po seznanitvi z razvojem za Android. Prenesel sem Android Studio, ga razpakiral in izbrisal. Odločil sem se, da poiščem druge možnosti namestitve. Med iskanjem sem naletel na Ubuntu Make (v preteklosti imenovan Ubuntu Developer Tools Center) in v tej kratki opombi vam želim povedati o tem.

Ubuntu Developer Tools Center je v novicah utripal skupaj z Ubuntu 14.10 (Utopic Unicorn), vendar se mi zdi, da ni pritegnil široke pozornosti. Kmalu kasneje so projekt preimenovali v Ubuntu Make, kot se imenuje še danes, in je zrasel na različico 0.4. Razvoj izvaja Didier Roche, programski inženir, Canonical. Omembe vredno je tudi dejstvo, da je Ubuntu Make napisan v Pythonu 3.4.

Glavni cilj projekta je hitra in enostavna namestitev običajnih potreb razvijalcev v Ubuntu. In čeprav je še daleč od "splošnih potreb" (seznam paketov, ki so na voljo za namestitev, je še vedno majhen), je s "hitro in preprosto" vse v redu.

Vklopljeno ta trenutek Z Ubuntu Make lahko namestite:

  • Android Studio
  • Mrk
  • IntelliJ Idea Community Edition
  • Izdaja skupnosti PyCharm
  • go-lang Googlov prevajalnik
  • IDE za razvijalce iger Stencyl

Namestitev

V ubuntu 15.04 je ubuntu-make na voljo takoj, uporabniki različic 14.04 in 14.10 morajo namestiti iz ppa:

Sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get posodobitev sudo apt-get namestitev ubuntu-make

Uporaba

Namestitev z ubuntu-make je neverjetno preprosta. Za Namestitve za Android Studio pravkar zaženite v terminalu:

Umake android
Malo čakanja in tukaj je rezultat:

Vključena je ikona v pomišljaju in openjdk (če Java ni bila v sistemu). Po zagonu je "studio" potegnil sdk in ga posodobil na različico 1.0.2. Na telefonu je bil zagnan »Hello world« in test funkcionalnosti je bil zaključen.

Golang je nameščen podobno:

Za PyCharm, Eclipse, Idea bo dodan še en argument:

Izdelaj idi pycharm

Če želite odstraniti paket, dodajte argument "-r" v isto vrstico:

Umake ide pycharm -r

Mnenje

Nekdo bo rekel: »Veliko je treba narediti. Prenesite arhiv, ga razpakirajte, preverite ikono v pomišljaju in jo preverite v Javi. Ali potrebujete ubuntu make? Strinjam se, morda ni veliko dela, vendar se mi je zdel paket koristen zase. Prihranil mi je čas in se znebil rutine. Upam, da bo koristilo tudi vam.

Gradivo Bryansk Linux Users Group in www.rm.pp.ru

Vsaka distribucija ima svoje posebnosti za sestavljanje jedra in ta članek se osredotoča posebej na to, kako to narediti v Debian Etch. Razkriva tudi vprašanje, kako uporabiti določen popravek za jedro, ko je potrebna podpora za določeno funkcionalnost ali novo opremo v vašem sistemu. Članek je namenjen predvsem bolj usposobljenim uporabnikom in ni nobenih zagotovil, da bo ta metoda delovala kot mora in vsa opisana dejanja in odgovornost nosite sami.

  1. Opomba
  2. Nanašanje obližev
  3. Konfiguracija jedra
  4. Prevajanje jedra
  5. Namestitev novega jedra
  6. Težave
  7. Povezave

Opomba

Opisana bosta dva načina sestavljanja jedra. Prva možnost bo opisana za sestavljanje paketov .deb, ki jih je mogoče namestiti v vaš ali drug sistem. Druga metoda je tako imenovani "tradicionalni" način.

Prva metoda. Vgradnja jedra v pakete .deb

Namestitev potrebnih paketov za prevajanje jedra

Najprej posodobimo sezname paketov:

# apt-get posodobitev

Namestimo pakete, ki jih potrebujemo:

# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Prenesite izvorne kode jedra

Pojdite v imenik /usr/src, pojdite na www.kernel.org in izberite želeno različico jedra. V tem primeru bo upoštevana različica linux-2.6.23.1.tar.bz2. Prenesi:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2

Razpakirajmo vire in ustvarimo simbolično povezavo:

# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (odstrani prejšnjo simbolno povezavo) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux

Nanašanje obližev

Ne delajte tega po želji ali po nepotrebnem!

Včasih so potrebni gonilniki ali orodja, ki niso podprti v obstoječem jedru, na primer tehnologija virtualizacije ali druge druge posebnosti, ki niso v trenutni izdaji. V vsakem primeru se to lahko popravi z uporabo tako imenovanih popravkov (če obstajajo).

Torej, predpostavimo, da ste prenesli zahtevani popravek (na primer, poimenujmo ga patch.bz2) v /usr/src. Uporabimo preneseni popravek za naše vire (še vedno morate biti v imeniku /usr/src/linux):

# bzip2 -dc /usr/src/patch.bz2 | popravek -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | obliž -p1

Prvi ukaz je samo preizkus in za vire ne bodo uporabljene nobene spremembe. Če po prvem ukazu ni prišlo do nobene napake, lahko zaženete drugi ukaz za uporabo popravka. V nobenem primeru ne izvajajte drugega ukaza, če so se po prvem pojavile napake!

Na ta način lahko uporabite popravke za izvorno kodo jedra. Na primer, nekatere funkcije so na voljo samo v jedru 2.6.23.8, izvorna koda pa ni vsebovala potrebnih funkcij, vendar je bil izdan popravek-2.6.23.8.bz2. Ta popravek lahko uporabite za vire jedra 2.6.23, ne pa tudi za 2.6.23.1 ali 2.6.23.3 itd. Več o tem si lahko preberete na:

Predpone (predpopraveki) – enakovredne izdajam alfa; popravke je treba uporabiti za izvorne kode celotne prejšnje izdaje s 3-mestno različico (na primer, popravek 2.6.12-rc4 je mogoče uporabiti za izvorne kode različice 2.6.11, ne pa tudi za različico 2.6.11.10.)

To pomeni, da moramo, če želimo zgraditi jedro 2.6.23.8, prenesti izvorne kode različice 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23 .tar.gz) uporabljeno na "tradicionalen" način druge metode!

Uporabite popravek-2.6.23.8.bz2 za jedro 2.6.23:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/popravek-2.6.23.8.bz2 | popravek -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | obliž -p1

Konfiguracija jedra

Dobro je uporabiti obstoječo konfiguracijsko datoteko delujoče jedro in za novo. Zato kopiramo obstoječo konfiguracijo v /usr/src/linux:

# make clean && make mrproper # cp /boot/config-`uname -r` ./.config # make menuconfig

po katerem se bo naložil meni za konfiguracijo grafičnega jedra. V meniju konfiguratorja izberite element »Naloži nadomestno konfiguracijsko datoteko« in kliknite »V redu«. Nato (če je potrebno) naredite potrebne spremembe v konfiguraciji jedra z navigacijo po meniju (podrobnosti o konfiguraciji jedra najdete na www.google.com). Ko končate in kliknete »Izhod«, se prikaže vprašanje »Ali želite shraniti novo konfiguracijo jedra?«, odgovorite pritrdilno »Da«.

Prevajanje jedra

Zgradba jedra poteka v samo dveh ukazih:

# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers

Za --append-to-version= lahko napišete poljubno ime, vendar se mora začeti z znakom minus (-) in brez presledkov.

Postopek prevajanja in gradnje paketov .deb lahko traja precej dolgo. Vse bo odvisno od konfiguracije jedra in zmogljivosti vašega procesorja.

Reševanje težave z ustvarjanjem initrd.img

Pred kratkim se je v Debianu pojavila napaka, pri kateri se po namestitvi paketov z jedri, sestavljenimi po tukaj opisani metodi, ne ustvari ustrezna datoteka /boot/initrd.img. Če želite to popraviti za že nameščeno jedro, boste morali ročno ustvariti initrd.img:

posodobitev-initramfs -c -k<полная-версия-ядра>

Če želite rešiti težavo "za prihodnost", komentirajte, kot je prikazano, drugo od spodaj citiranih vrstic v datoteki /etc/kernel/postinst.d/initramfs-tools:

# kernel-package posreduje dodatni argument; kramp, da se ne izvaja pod paketom jedra #[ -z "$2" ] || izhod 0

Namestitev novega jedra

Ko je gradnja jedra uspešno zaključena, bosta v imeniku /usr/src ustvarjena dva paketa .deb:

# cd /usr/src # ls -l

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - samo jedro in linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - glave jedra, potrebna za gradnjo drugih modulov (na primer pri gradnji modulov gonilniki nVidia). Namestite jih:

# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb

(Te pakete je zdaj mogoče namestiti v drug sistem in jih ne bo treba znova graditi.)

To je to, namestitev je končana, meni zagonskega nalagalnika, namestitev novega diska RAM in jedra se izvede samodejno. Vse kar ostane je ponovni zagon:

# ponovni zagon

Druga metoda. "tradicionalen" način

Vse zgoraj opisane točke izvedemo PRED točko »Prevajanje jedra«.

# make all # make modules_install # make install

Kot običajno lahko izgradnja traja dolgo, odvisno od konfiguracije jedra in zmogljivosti procesorja.

Glavna pomanjkljivost te metode je, da če pogosto posodabljate jedra, se jih čez nekaj časa nabere veliko in neuporabljena boste želeli odstraniti. Da bi to olajšali, lahko z ukazoma “make modules_install” in “make install” z ukazoma “make modules_install” in “make install” sestavite jedro in druge datoteke, ki so nameščene v sistem, v paket deb (ali bolje rečeno, dva, začenši z jedrom 2.6.27), ki je podoben prva metoda, vendar bomo uporabili Tukaj so skripti samega jedra:

# naredi vse # naredi deb-pkg

Dve datoteki .deb bosta prikazani v imeniku eno raven nad izvornim imenikom. Jedro sem sestavil v imeniku /usr/src/linux-2.6.27.10 in datoteke so se pojavile v imeniku /usr/src/

# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb

Jedro se namesti z ukazom

# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb

Stara jedra je mogoče odstraniti na primer iz synaptic"a

Naslednji koraki

Jedro je bilo prevedeno in nameščeno, zdaj pa morate ustvariti disk RAM (brez katerega se jedro preprosto ne bo zagnalo) in posodobiti morate zagonski nalagalnik GRUB. Če želite to narediti, naredite naslednje:

# depmod 2.6.23.1 # apt-get install yaird

Namestite RAM disk:

# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1

Posodobimo zagonski nalagalnik enostavno in neboleče:

# posodobitev-grub

To je to, zagonski nalagalnik in novo jedro sta pripravljena, ostane le še ponovni zagon:

# ponovni zagon

Težave

Če se po ponovnem zagonu novo jedro, ki ste ga izbrali, ne naloži, znova zaženite sistem in izberite prejšnje jedro ter poskusite znova izvesti celoten postopek, da zgradite delujoče jedro. V tem primeru ne pozabite izbrisati vrstic nedelujočega jedra v /boot/grub/menu.lst.

Poleg tega je treba namestiti druge sisteme dodatne programe. IN operacijski sistemi V sistemu Windows je vse zelo preprosto, praviloma obstaja namestitveni program, imenovan setup.exe, ki pomaga namestiti programsko opremo. Toda v Linuxu so stvari nekoliko drugačne. Kako namestiti programe na Linux? Zdaj pa poglejmo to vprašanje.

Linux ima več vrst namestitvenih paketov in vsaka distribucija ima svojo obliko paketa. Distribucije Fedora, Mandriva, Red Hat in Suse uporabljajo standardno namestitev Linux RPM, ki jo je razvil Red Hat. Datoteka paketa RPM je običajno poimenovana program_name-version.rpm.

Druga zelo priljubljena oblika je DEB. Uporablja se v Debianu, Ubuntuju, Knoppixu in Mepisu. Ima ime ime_programa-različica.deb.

In smo pristopili k arhivu. Običajno so to končnice .tar , .tar.gz , .tgz. Treba jih je razpakirati in nato namestiti/prevesti.

Postopek namestitve programa morate izvesti kot superuporabnik.

Hitra navigacija

Namestitev programov na Debian, Ubuntu

Obstaja veliko orodij za delo s paketi DEB, vendar je najpogosteje uporabljeno apt-get, ki je vključeno v standardni nabor orodij. Za namestitev aplikacije vnesite ukaz:

apt-get namestitev ime_paketa

Za odstranjevanje:

apt-get odstrani ime_paketa

APT shranjuje lokalno bazo podatkov o vseh paketih, ki so na voljo za namestitev, in povezavah, kjer jih je mogoče dobiti. To zbirko podatkov je treba občasno posodobiti z ukazom:

posodobitev apt-get

Za posodobitev zastarelih paketov (programov) na računalniku vnesite naslednje ukaze:

posodobitev apt-get; apt-get nadgradnja

Namestitev programov na Fedora, Red Hat

Pripomoček, podoben APT, je yum. Za prenos in namestitev paketa iz konfiguriranega repozitorija napišite ukaz:

yum namestite ime_paketa

yum odstrani ime_paketa

Lokalna zbirka podatkov yum ni shranjena, zato je ni treba posodabljati. Če želite namestiti posodobitve, uporabite ukaz:

yum posodobitev

Izberite nekaj posebnega za posodobitev:

yum posodobi ime_paketa

Namestitev programov v Mandrivo

Mandriva ima svoj nabor orodij za delo s paketi, imenovanih urpmi. Za namestitev:

urpmi ime_paketa

Če želite izbrisati:

urpme ime_paketa

Posodobite lokalno bazo podatkov s seznamom paketov:

urpmi. posodobitev -a

Za namestitev posodobitev:

urpmi --samodejna izbira

Namestitev programov iz arhivov (tarballs)

Za arhive, stisnjene z uporabo GZIP (gz, gz2 itd.), naredimo to:

tar -xvz f ime datoteke

Za arhive, stisnjene z uporabo BZIP (bz, bz2 itd.), je nekoliko drugače:

tar -xvjf ime datoteke

Tar ukazi:

  • x – ekstrahiraj datoteke iz arhiva;
  • v – podroben prikaz informacij na zaslonu;
  • f – zahtevana možnost. Če ni navedeno, bo Tar poskusil uporabiti trak namesto datoteke;
  • z – arhiv procesa, stisnjen z gzip;
  • j – obdelava arhiva, stisnjenega z bzip.

Po izvedbi ukaza bo ustvarjena mapa z imenom, podobnim imenu paketa. Nato morate to ustvarjeno mapo odpreti z ukazom:

ime_mape cd

Nato v nepakiranem arhivu preberite navodila v datoteki README, če obstajajo. V vsakem primeru, če je program preveden kot izvršljiva datoteka, bo paket vseboval datoteko .sh, običajno imenovano install.sh

Bistvo je, da tega ukaza v obliki "make install" ali "sudo make install" ni mogoče uporabiti v sodobnih distribucijah.

Toda avtorji programov v priročnikih za namestitev pišejo, da morate uporabiti ta ukaz, bi lahko rekli. Da, pišejo. Toda to samo pomeni, da ne vedo, kakšno distribucijo imate, ali je sploh distribucija, morda ste se pridružili sekti in kadili branje LFS in se zdaj odločili, da njihovo stvaritev sestavite za svoj htonski sistem. In make install je univerzalen, čeprav pogosto napačen način za to.

Lirična digresija

Kot veste, mora biti večina programske opreme za normalno delovanje ne samo prevedena, ampak tudi pravilno nameščena v sistemu. Programi pričakujejo, da bodo datoteke, ki jih potrebujejo, našli na določenih mestih in ta mesta so v večini sistemov *nix trdo kodirana v kodo med prevajanjem. Poleg tega vidika je glavna razlika med namestitvenim postopkom v linux/freebsd/whatever in tistim v sistemih Windows in MacOS ta, da program ne samo postavi kopice datotek v ločen imenik v Program Files ali /Applications, ampak “ širi« sama po sebi datotečni sistem. Knjižnice gredo v lib, izvršljive datoteke v bin, konfiguracije v itd., različne vrste podatkov v var in tako naprej. Če ga nenadoma morate posodobiti, potem je treba vse to najprej nekako očistiti, ker ... pri uporabi nove različice lahko ostanki datotek iz stare povzročijo povsem nepredvidljive posledice, pogosto ni dobro. Verjetnost tega dogodka ni tako velika, a ga potrebujete na produkcijskem strežniku?

Pa kaj?

Torej, če ste namestitev izvedli neposredno prek make install, potem je normalno, da odstranite ali posodobite programsko opremo, najverjetneje ne moreš. Poleg tega bo najverjetneje nameščena nova različica namesto stare bo prepisal vaše spremembe v konfiguracijah. make install naredi natanko to, kar mu je naročeno - namesti datoteke na prava mesta, ne upošteva dejstva, da je nekaj že tam. Po tem postopku je absolutno nemogoče pridobiti kakršno koli informacijo o tem, kaj je bilo kje in v prebavljivi obliki. Včasih Makefile seveda podpira dejanje odstranitve, vendar to ni tako pogosto in ni dejstvo, da deluje pravilno. Poleg tega je shranjevanje nepakiranega izvornega drevesa in pravil gradnje za odstranitev nekako čudno.

Kako se boriti?

Ker se paketi v distribucijah včasih posodabljajo, so si za rešitev tega problema izmislili nekaj takega upravitelj paketov. Ko ga uporabljate, namestitev poteka nekako takole:
  1. vzame se na določen način oblikovan arhiv
  2. iz nje se izvlečejo informacije o tem, kaj je, katera različica je, od česa je odvisna, s čim je v konfliktu, ali je treba zagnati kakšne skripte za namestitev/odstranitev/konfiguracijo itd.
  3. Potekajo neposredni koraki namestitve
  4. Vsi podatki o tem, kam in kaj je bilo dostavljeno, se dodajo v bazo upravitelja paketov.

V tem primeru lahko pri posodabljanju neboleče odstranite nepotrebne stvari, hkrati pa preverite, ali so se datoteke, označene kot konfiguracijske, spremenile v sistemu in vprašate, kaj storiti, če je njihova vsebina v novi različici drugačna. Poleg tega vam upravitelj paketov ne bo dovolil prepisati datotek enega paketa, ko nameščate drugega. Na splošno lahko naredi veliko koristnih stvari.

Če ste iz nevednosti/lenobe kopirali in prilepili make install iz navodil, potem se v sistemu pojavijo datoteke, za katere upravitelj paketov ne ve. Z vsem, kar pomeni, če vam prej našteto ni dovolj.

Kaj storiti?

Seveda lahko konfigurirate izvorno drevo tako, da je vse nameščeno nekje v /opt/mycoolapp/, nato pa po potrebi ročno izbrišete, vendar se tukaj lahko pojavi marsikaj neprijetnega, začenši s tem, da program pričakuje, da bo lahko naložil vaše knjižnice, nalagalnik pa ne ve ničesar o imeniku, kjer se nahajajo, in konča z dejstvom, da lahko avtor programa to pričakuje, če na primer da datoteko, recimo, v $prefix/share /xsessions/, potem ga bo prevzel upravitelj zaslona. Da ne omenjam poti za pkgconfig in tako naprej.

Torej morate zbrati paket.

Nimam časa, da bi se zajebal s tem, bolje, da naredim namestitev znova, vse je preprosto in jasno!

Pomiri se, pomiri se. Privezan je na naše noge. Vse ni tako strašljivo in zapleteno, kot se zdi na prvi pogled.
preverite namestitev
Ta čudovit pripomoček bo ob zagonu namesto make install postavil več vprašanj, nato pa bo zgradil in namestil paket. To je to, pri posodabljanju ne boste imeli težav s čiščenjem stare smeti.
Ročna izgradnja paketa deb
Če niste nagnjeni k zaupanju v takšno avtomatizacijo (ki včasih še vedno zamoti) ali želite narediti nekaj sprememb, vendar ste še vedno preleni, da bi se ukvarjali z običajnim procesom gradnje paketov, potem lahko paket sestavite ročno. Dajem način za gradnjo za sisteme Baza podatkov Debian, ker jih najbolje poznam. Ideološko ni korekten, vendar je rezultat popolnoma pravilen paket brez uporabe dodatnih entitet. To se naredi na naslednji način.
Najprej sestavimo programsko opremo s parametri --prefix=/usr in --exec-prefix=/usr, ki sta vnaprej podana za configure ali autogen.sh.
Nato ga namestimo v začasni imenik. Pišemo:

Fakeroot make install DESTDIR=`pwd`/tempinstall
Po tem dobimo celoten nabor datotek v novo ustvarjenem imeniku. Mimogrede, zdaj smo v okolju fakeroot, to pomeni, da lahko spremenite lastnika in pravice dostopa do datotek brez kakršnih koli omejitev, vendar boste fizično ostali lastnik sistema. Programska oprema znotraj seje fakeroot bo prejela spremenjene informacije, kar bo omogočilo arhiviranje datotek s pravilnimi pravicami.
Nato ustvarite imenik DEBIAN v »korenu paketa« in dodajte seznam vseh datotek, ki naj gredo v /etc v DEBIAN/conffiles:

Cd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles
Nato ustvarimo datoteko DEBIAN/control z naslednjo vsebino:

Po potrebi lahko tam ustvarite tudi skripte preinst, postinst, prerm in postrm.

To je to, naredimo dpkg -b tempinstall in rezultat je tempinstall.deb, ki ga lahko uporabite dpkg -i za pravilno namestitev, posodobitev ali odstranitev.

»Pravilni« postopek predhodne izdelave paketa izvorne kode presega obseg te opombe in zato ne bo opisan, vendar za vaše namene običajno ni potreben.

Zaključek

Kot lahko vidite, tukaj ni popolnoma nič zapletenega, a upoštevanje teh korakov vas bo rešilo pred številnimi težavami v prihodnosti.