Linux hur man tar reda på vilken pakethanterare. Pakethanterare i Linux. Debian-baserade pakethanterare

Hälsningar, kära vänner, bekanta och andra personligheter.

Som du säkert vet och kommer ihåg, lovade jag att sakta (på din begäran) täcka Linux-cykeln, introducera dig till olika grunder och mycket gradvis flöda från teori till praktik.

Idag kommer vi att fortsätta med ämnet att lära känna teorin och grunderna, och därför kommer vi att prata om en sådan sak som förvar och allt som är kopplat till dem, d.v.s. Låt oss ta reda på hur Linux-programvaran ser ut från insidan, hur allt lagras och så vidare.

Hela den här enorma högen av paket med deras hög av beroenden av varandra, som hanteras av en pakethanterare, är precis vad som utgör din Linux-distribution. Men det här är inte bara ett gäng skräp, utan ett ordnat system som heter - ta-dam! - förråd av mjukvarupaket. Cirkeln är sluten - vi återvände till det första konceptet - vad är ett förråd :)

Några ord om nyanserna

Slutligen vill jag ändå säga att hur stabilt, stabilt och oförstörbart Linux än är så måste användaren ändå iaktta en viss försiktighet. Till exempel:

  1. Det finns ingen anledning att fresta ödet och installera program på Linux, kringgå pakethanteraren, genom enkel kompilering. De kommer att fungera, men pakethanterare kommer inte att veta något om dem, varför du när du uppdaterar systemet eller programmen riskerar att få fler problem på huvudet än du föreställer dig. Installera bara program som paket.
  2. Det finns inget behov av att ansluta de förråd som du har en mycket vag uppfattning om. Det finns till exempel inget behov av att koppla ihop repositories med orden testing, debug och liknande termer, eftersom dessa repositories i första hand är avsedda för distributionsutvecklare själva och inte alltid är stabila.
  3. Koppla inte ihop alla tillgängliga förråd i rad, detta kan också skämta dig grymt. Anslut bara det mest nödvändiga, du behöver inte vara girig :)

Till exempel vid installation operativ system Fedora har som standard två förråd anslutna samtidigt:

  • Fedora (paket som passar alla kombinationer av CD- eller DVD-skivor)
  • Uppdateringar (uppdaterade paket nyare än Fedora-förvaret)

För normal drift behöver du ansluta ett extra rpmfusion-förråd (du kan verkligen inte klara dig utan det), som ger tillgång till program som inte kunde inkluderas i distributionen på grund av licensbegränsningar (applikationer som krävs för t.ex. mp3, dvd, etc.). etc.; – dessa inkluderar proprietära drivrutiner för ATI och NVIDIA; spel: Bub's Brothers, Secret Maryo Chronicles, UFO: Alien Invasion, Wörms of Prey, xrick, GLtron och många, många andra; emulatorer: Commodore 64 emulator, såväl som Commodore 8 bit, Amiga emulator, Nestopia, ZSNES och många andra). För att ansluta detta arkiv, skriv bara in följande kommandon på kommandoraden (terminal) som en superanvändare ():
$ sudo rpm -ivh https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
$ sudo rpm -ivh https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Observera att rpmfusion-förrådet är uppdelat i två delar: gratis och icke-fritt. Den första innehåller rena gratisprogram i FSF:s mening, distribuerade under GPL och kompatibla licenser. Innehållet i den andra, i motsats till namnet, är också mestadels gratisprogram, men föremål för de ökända patentrestriktioner i vissa stater (till exempel ljud- och videocodec).

Detsamma gäller för pakethanteraren i Fedora. För normala och bekvämt arbete pakethanterare (yum) i Fedora, det rekommenderas att ansluta den extra plugin fastestmirror. Denna plugin är mycket viktig: den bestämmer inte bara den närmaste spegeln, som liknande verktyg från andra pakethanteringssystem gör, utan installerar exakt den snabbaste spegeln i det här ögonblicket– efter svarstid.
$ sudo yum installera yum-plugin-fastestmirror
I ett nötskal, något sånt här :)

Efterord

Jag förstår att utan övning är det ganska svårt att uppfatta allt detta i farten, men det finns inget att göra - detta är den mest grundläggande och grundläggande teoretiska informationen, som varje användare åtminstone på något sätt borde vara bekant med för att ha en uppfattning om ​vad är vad och varför, och peta inte blint på knappar och läs obekanta termer.

I följande artiklar kommer vi att titta på exakt vad som är att installera paket i Linux, hur detta operativsystem är uppbyggt, vad som menas med en användare (och vem som är en superanvändare, även känd som root), och vi kommer också att prata om program och någonting annat. Stanna med oss.

Som alltid, om du har några frågor, tillägg etc., kommer jag gärna att se dem i kommentarerna till detta material.

P.S. Tack till en medlem av Pantera-teamet för att denna artikel finns.

Ibland kan frågan uppstå: vems fil är detta, var kom det här biblioteket ifrån?? En bekväm pakethanterare löser många OS-problem. Det är säkert att säga att om du blir vän med MP kommer du också att bli vän med själva distributionen. Dessutom är det viktigt att behärska uppsättningen grundläggande kommandon och veta var man kan hitta ytterligare information.


Vad som följer är en gentlemans uppsättning kommandon som är nödvändiga för den dagliga rutinen för de viktigaste Linux-distributionerna: installera, uppdatera och ta bort ett paket, rulla ut uppdateringar, kontrollera beroenden, avgöra om en fil tillhör ett paket, etc.

Debian och relaterade

Popularitet och vänlig bild Linux-användare distributionskit spelade ett grymt skämt på Ubuntu. Vissa nybörjare tror att de kan göra vad de vill på den utan hjälp. kommandorad. Detta är en missuppfattning och det är bättre att bli av med det så snart som möjligt.


Att aptitude finns i exemplen betyder inte att det är mer korrekt än apt-get . För mig är det bara en fråga om vana.


$ aptitude installationspaket #install package; $ aptitude safe-upgrade package #upgrade package; $ aptitude update #kontrollera och installera uppdateringar; $ aptitude ta bort paket #remove package; $ aptitude purge-paket #delete ett komplett paket, alla data och inställningar; $ apt-get dist-upgrade #upgrade OS, killer-feature och det fungerar! $ aptitude sökpaket #search for package. $ apt-cache beror på paket #package dependencies; $ apt-cache rdepends paket #reverse package dependencies.

Vissa funktioner är tillgängliga med tillvalet dpkg MP.


$ dpkg -l #lista installerade program; $ dpkg -L paket #lista med paketfiler

Vi kommer att jämföra olika pakethanterare i Linux. Mellan alla Linux-distributioner är en av de saker de delar behovet av att kunna installera nya mjukvarupaket på systemet. Beroende på distribution finns olika pakethanterare tillgängliga, vilket gör att användaren enkelt och snabbt kan installera, hantera och ta bort paket. Pakethanterare är väldigt bra på att optimera installationer, med vanliga installationsplatser och konfigurationer. I den här artikeln kommer vi att diskutera de olika tillgängliga pakethanterarna, vilka distributioner de kan användas på och vad som gör var och en unik. Vi kommer att täcka pakethanterare baserade på , kärnpakethanterarna i RedHat Enterprise Linux (RHEL) och andra anpassade pakethanterare.

Debianbaserade pakethanterare

Dpkg-pakethanterare

Ubuntu och Debian anses vara ett av de mest använda operativsystemen för konsumenter Linux baserad finns på marknaden idag. Deras pakethanterare är generiska, där pakethanteringssystemet på lägsta nivå är "Dpkg", förkortning för "Debian Package". Det är ett programvaruskelett för pakethantering, med verktyg för att installera, ta bort och bygga paket.

Dpkg saknar mer avancerade funktioner - funktionalitet, som att ladda ner paket från Internet eller att installera beroenden automatiskt är inte möjligt via DPKG. Att kunna göra detta från Internet är mycket användbart eftersom det tillåter användare att lägga till paketförråd, vilket kraftigt ökar urvalet av programvara som enkelt kan installeras på systemet. Det kan också avsevärt förenkla mjukvaruinstallationsprocessen genom att enkelt kunna hitta och installera ett paket med bara ett kommando.

Pacman är en pakethanterare för Arch Linux. Pacman är det enda pakethanteringsverktyget som finns på Arch, vilket gör det icke-gränssnitt. Arch Linux är ett versionsoperativsystem med uppdateringar som läggs till varje dag. Det finns bara ett fåtal kommandon med pacman utformade för att hitta, installera och ta bort paket. Denna pakethanterare kan ansluta till Internet och köpa sina paket därifrån, vilket gör den mer användarvänlig. Pacman är dock designad för att installera programvara från Arch-förvaret, vilket gör det omöjligt att installera från tredje parts förråd.

ABS, en förkortning för Arch Build System, är ett verktygssystem som är utformat för att skapa installerbara programvarupaket för Arch Linux från källkod. Den består av flera verktyg som fungerar tillsammans för att skapa paket - alla dessa verktyg är oberoende program, som makepkg, pacman, asp och så vidare. Metoden för att skapa/installera ett paket med ABS skiljer sig från en vanlig Linux-distribution. Istället för att installera förkompilerade paket måste du skapa en PKGBUILD-fil från Svn- eller Git-grenen med hjälp av asp-paketet. Därifrån använder du kommandot makepkg, som använder PKGBUILD-filen för att ladda ner och kompilera källkoden för ditt system. Detta gör ABS till en något mindre intuitiv metod för att installera paket på Arch Linux. Den har flera andra användningsområden, som att anpassa befintliga paket eller bygga och installera din egen kärna.

Paketinstallatörer gör operationer med individuella paket atomic (enstegs): istället för att kopiera många filer och köra flera skript, anger användaren ett enda "installera/avinstallera paket"-kommando. En atomär operation ur användarens synvinkel - att lägga till en ny komponent i systemet - kan dock bestå av flera (eller till och med många) operationer på paket. Methodius har redan stött på liknande fall, lär dig av din egen erfarenhet begreppet "beroendekedja". Här kan paketinstallatörer inte göra användarens jobb enklare. För att göra installationen, avinstallation och uppdateringsprocedur systemkomponent atomära, utvecklades pakethanterare. En pakethanterare är ett program som beräknar hela komplexet av operationer på enskilda paket som måste utföras för att installera/ta bort en ny komponent (paket), och som själv startar paketinstallationsprogram så många gånger som behövs med de nödvändiga parametrarna. Dessutom lagrar pakethanteraren information inte bara om paket som redan är installerade på systemet, utan också om alla de som är tillgängliga för installation från valfritt media eller över nätverket (mer om detta i avsnittet Paket..Leverans).

Pakethanterare Ett program som installerar, tar bort eller uppdaterar alla paket eller grupper av paket, och automatiskt utför alla nödvändiga procedurer (leverera paket från fjärrlager, beräkna beroenden och installera paket som krävs för dem, ta bort ersatta paket, etc.).

Den mest kända och populära pakethanteraren heter APT ( A Avancerad P ackage T ool). Den utvecklades ursprungligen som en del av Debiandistributionen och fungerade endast med installationsprogrammet för dpkg-paketet, och därefter utvecklades en version för andra distributioner som fungerar med rpm. Metodius-distributionen använder också APT.

För att installera ett paket måste du först veta om dess existens. Det finns tusentals och till och med tiotusentals paket tillgängliga för varje Linux-distribution, och det är inte lätt att navigera genom dem. APT ger möjligheten att söka efter det du behöver bland de tillgängliga paketen; för detta används apt-cache-verktyget. Varje paket måste innehålla en kort sammanfattning (en rad) och en kort beskrivning av resurserna i paketet (högst några stycken). Genom kommandot "apt-cache search delsträng» APT kommer att hitta och visa en lista med paketnamn och kommentarer där den angivna delsträngen hittades i namnet, anteckningen eller beskrivningen.

# apt-cache sök python | wc 146 1158 8994 # apt-cache sök python | grep "programmering" python - Ett tolkat, interaktivt objektorienterat programmeringsspråk

Exempel 9. Söker efter paket i APT

Verktyget apt-get är utformat för att installera och ta bort paket, och installationskommandot är ganska enkelt: "apt-get install Paketnamn", och du behöver inte ange någon information om paketets version och plats: APT själv hittar och installerar den senaste tillgängliga versionen.

# apt-get install python Läser paketlistor... Slutfört Byggnadsberoendeträd... Slutfört Nästa ytterligare paket kommer att installeras: libpython libgdbm libgmp python-base python-modules python-modules-bsddb python-modules-compiler python-modules-curses python-modules-e-post python-modules-encodings python-modules-logging-python-python-modules-ho modules -xml python-strict Följande NYA paket kommer att installeras: libpython libgdbm libgmp python python-base python-modules python-modules-bsddb python-modules-compiler python-modules-curses python-python-emails python-modules-email -modules- hotshot python-modules-logging python-modules-xml python-strict 0 kommer att uppdateras, 15 nya installeras, 0 paket kommer att tas bort och 0 kommer inte att uppdateras. Du måste skaffa 0B/4466kB arkiv. Efter uppackning kommer ytterligare 16,9 MB diskutrymme att krävas. Fortsätta? y Mottagen: 1 cdrom://SomeLinux CD RPM/main libpython 2.3.3-some2 Mottagen: 2 cdrom://SomeLinux CD RPM/main libgdbm 1.8.3-some3 Mottagen: 3 cdrom://SomeLinux CD lib RPM 4.1.2-några3 . . . Mottaget: 14 cdrom://SomeLinux CD RPM/main python-base 2.3.3-some12 Mottaget: 15 cdrom://SomeLinux CD RPM/main python 2.3.3-some12 Mottog 4466kB på 0s.5.s (19). Gör ändringar... Förbereder... ######################################## 1: libpython ####################################### [ 6%] 2: libgdbm ########################################## [ 13 %] 3 : libgmp # ####################################### [ 20%] 4: python -bas # ########################################################################## [26%] . . . 13: python-modules-logging ########################################## # [ 86 %] Slutförd.

Exempel 10. Installera ett paket med APT

APT utför installationsproceduren i flera steg: först söker den efter det begärda paketet i listorna över tillgängliga, efter att ha hittat det, beräknar det vilka paket som ska installeras för att tillfredsställa dess beroenden, varefter det tar emot filerna för alla nödvändiga paket (i det här fallet hittade APT de nödvändiga paketen på CD-ROM-skivan) och kör paketinstallationsprogrammet sekventiellt för att installera allt som behövs. På samma sätt, för att ta bort ett paket, kör bara kommandot "apt-get remove" Paketnamn ».

Förutom APT finns det flera andra pakethanterare. De flesta av dem är distributionsspecifika, såsom emerge för Gentoo eller yast för SUSE. Deras uppgifter och förmågor är ungefär desamma som APT.

Integritetskontroll

Eftersom pakethanteraren kan bygga kedjor av beroenden av paket på varandra, kan den alltid användas för att avgöra om alla beroenden är uppfyllda för paket installerade på systemet. Ett system som inte har några paket med otillfredsställda beroenden anropas holistiskt. Om integriteten är trasig betyder det att en del av programvaran som är installerad på systemet helt enkelt inte fungerar eller inte fungerar korrekt.

Systemets integritet kan kränkas vid tidpunkten för vissa förändringar i dess sammansättning: när du installerar, tar bort eller uppdaterar en del av paketen eller hela systemet. Om du använder en pakethanterare för alla dessa operationer bör inte systemets integritet äventyras. Även om ibland även en pakethanterare kan ha svårt att hitta rätt lösning för att tillfredsställa alla beroenden och lösa konflikter.

Med en pakethanterare kan beroendemekanismen vändas till att gynna människor. Så du kan skapa ett paket som bara innehåller beroenden och inga resurser - ett sådant paket kallas virtuell. Detta är användbart när du vill göra det enklare för användaren att installera en komplett miljö för att utföra en uppgift. Paketen som krävs för detta beror kanske inte direkt på varandra, men för att installera dem alla i ett steg behöver användaren bara installera ett - virtuellt - paket. Ett sådant virtuellt paket visade sig vara själva python-paketet i exemplet, och ett annat - python-strict:

# rpm -ql python (innehåller inga filer) # rpm -ql python-strict (innehåller inga filer)

Exempel 11. Virtuella paket innehåller inte filer

Det är därför apt "fick" 15 paket (inklusive två virtuella), men "gjorde ändringar" bara för 13.

Leverans

En viktig uppgift som paketinstallationsprogrammet inte löser är att leverera paketfilen till systemet för efterföljande installation. Paketarkiv lagras vanligtvis inte i själva systemet: de är för stora (tusentals paket) och måste uppdateras regelbundet (programuppdateringar, d.v.s. nya versioner av paket, släpps). Därför, för att installera, behöver du vanligtvis först kopiera de nödvändiga filerna från media där de lagras (detta är antingen installationsskivor distributionskit eller lagring på Internet).

För att APT ska fungera med paket måste de finnas i ett förråd organiserat enligt särskilda regler - förråd. Lista över tillgängliga APT-förråd lagras i filen /etc/apt/sources.list, för varje arkiv anges åtkomstmetoden (till exempel "cdrom:", "ftp:", "file:", etc.) och adressen.

Rpm cdrom:/ RPM contrib main rpm ftp://updates.somelinux.com 2.4/i586 uppdateringar

Exempel 12. sources.list-filen

Efter varje ändring av filen /etc/apt/sources.list måste du uppdatera APT-cachen, som lagrar information om tillgängliga paket, med kommandot apt-get update. För att lägga till information om paket som finns tillgängliga på en CD till cachen, bör du använda kommandot "apt-cdrom add" istället för att redigera sources.list manuellt.

APT låter dig helt enkelt leverera ett paket till systemet utan att installera det. Detta händer till exempel alltid med källkodspaket, som helt enkelt kopieras från förvaret till en specifik katalog på systemet med kommandot "apt-get source" Paketnamn ».

Uppdatering

Programvara i Linux-världen (och inte bara) uppdateras ständigt: fel korrigeras, kapaciteten utökas. Utvecklarna av varje distribution, när nya versioner av program släpps, förbereder nya versioner av motsvarande paket och gör dem tillgängliga i deras förråd(förråd som återspeglar det senaste tillståndet för programvaran är tillgängliga via Internet). Det är vettigt för användaren att hålla jämna steg med programuppdateringar, eftersom nya versioner av program innebär större tillförlitlighet hos systemet och nya funktioner.

Pakethanterare låter dig göra omfattande uppdateringar hela systemet. I APT kan denna procedur utföras med ett kommando: "apt-get dist-upgrade". Denna procedur undersöker först innehållet i alla tillgängliga förråd och hittar där alla paket som är senare versioner än motsvarande paket installerade på systemet. Uppdateringens omfattning beräknas sedan: det tillhörande området med ömsesidigt beroende föråldrade paket måste tas bort och ersättas med motsvarande område av nyare versioner. Komplexa situationer kan uppstå om fördelningen av resurser över paketen har förändrats: paket har delats eller slagits samman - detta kan kräva manuellt användaringripande. Den typ av systemuppdateringar som behöver göras regelbundet och Nödvändigtvis Dessa är säkerhetsuppdateringar. När allvarliga fel upptäcks och rättas till i ett program som hotar säkerheten för hela systemet, ser distributionsutvecklare oftast till att lämpliga uppdateringar når användaren. Det finns vanligtvis ett separat arkiv för säkerhetsrelevanta uppdateringar.

Priset på bekvämlighet

Kostnaden för pakethanterarnas bekvämlighet är att de bara kan arbeta framgångsrikt med speciella holistiska källområden ( paketförråd). Även om denna begränsning för de flesta användare inte är så betydande: de distributioner som använder pakethanterare har vanligtvis enorma paketförråd där du kan hitta all tänkbar programvara. Om önskat program När allt kommer omkring finns distributionspaketet inte i det officiella förvaret; vanligtvis finns det "privata" förråd tillgängliga på Internet, inklusive paket som inte ingår i det officiella förvaret.

Om paketet du behöver inte desto mindre inte kan hittas någonstans kompilerat specifikt för din distribution, kan du installera ett tredjepartspaket, men detta kan bara göras med en paketinstallationsprogram, pakethanteraren kommer att vara värdelös i den här situationen. Du kan installera programmet genom att själv kompilera det från källkoden, men här är det värt att ha följande i åtanke.

Författare program det är absolut inte skyldigt att ta hänsyn till alla subtiliteter i alla distributioner, därför är å ena sidan direkta konflikter med filer i systemet (som ingen längre kan spåra) möjliga, och å andra sidan är dolda konflikter och motsägelser (till exempel är programmet installerat i en underkatalog till katalogen / usr/local , och förväntar sig allt resten program finns också i den här katalogen). Detta innebär att du måste ta reda på på egen hand hur och med vilka parametrar du ska kompilera programmet, hur du installerar det i systemet och hur du undviker konflikter. Och om så är fallet, om du verkligen kan montera och installera ett program som du, och därför någon annan, behöver korrekt montera och installera i systemet, som ännu inte finns i distributionspaketet, så är det mest korrekta att göra det plastpåse, Förbi minst källkodspaket, och om det löser sig, då binär. Detta kommer att göra ditt liv mycket enklare när du kompilerar och installerar det här programmet igen (på en annan dator eller uppdaterar versionen av själva programmet), och, viktigast av allt, till hela användargemenskapen din distribution!

Slutligen inkluderar många moderna distributioner verktyg för att bygga binära paket. Sådana verktyg (till exempel hasher-paketet från ALT Linux) låter dig inte bara kompilera ett program i en "universell miljö" som bara innehåller en given uppsättning paket, utan också automatiskt bygga beroenden, kontrollera efter korrekt installation och övervaka konflikter. Kort sagt, genom att bygga ett paket med ett sådant verktyg kan du på allvar hävda att du är underhållare av det paketet i distributionen. Tvärtom, genom att kompilera ett program i smyg, använda shamanism och manuellt arbete, kommer du att avslöja dig själv som en lat person och en egoist som inte bryr sig om tillväxten och förbättringen av sitt eget operativsystem.

Ibland kan frågan uppstå: vems fil är detta, var kom det här biblioteket ifrån?? En bekväm pakethanterare löser många OS-problem. Det är säkert att säga att om du blir vän med MP kommer du också att bli vän med själva distributionen. Dessutom är det viktigt att behärska uppsättningen grundläggande kommandon och veta var man kan hitta ytterligare information.


Vad som följer är en gentlemans uppsättning kommandon som är nödvändiga för den dagliga rutinen för de viktigaste Linux-distributionerna: installera, uppdatera och ta bort ett paket, rulla ut uppdateringar, kontrollera beroenden, avgöra om en fil tillhör ett paket, etc.

Debian och relaterade

Popularitet och image av användarvänlig Linux distribution spelade ett grymt skämt på Ubuntu. Vissa nybörjare tror att de kan göra vad som helst på det utan att använda kommandoraden. Detta är en missuppfattning och det är bättre att bli av med det så snart som möjligt.


Att aptitude finns i exemplen betyder inte att det är mer korrekt än apt-get . För mig är det bara en fråga om vana.


$ aptitude installationspaket #install package; $ aptitude safe-upgrade package #upgrade package; $ aptitude update #kontrollera och installera uppdateringar; $ aptitude ta bort paket #remove package; $ aptitude purge-paket #delete ett komplett paket, alla data och inställningar; $ apt-get dist-upgrade #upgrade OS, killer-feature och det fungerar! $ aptitude sökpaket #search for package. $ apt-cache beror på paket #package dependencies; $ apt-cache rdepends paket #reverse package dependencies.

Vissa funktioner är tillgängliga med tillvalet dpkg MP.


$ dpkg -l #lista över installerade program; $ dpkg -L paket #lista med paketfiler