Кіріспе
Бағдарламалық пакеттерді басқаруға арналған бағдарламалық құралдар
Пакет менеджері немесе пакеттерді басқару жүйесі – компьютерде компьютерлік бағдарламаларды орнату, жаңарту, конфигурациялау және жою процесін автоматтандыратын бағдарламалық құралдар жиынтығы. Пакет менеджері пакеттермен, бағдарламалық жасақтама мен деректердің архивтік файлдардағы таратуымен айналысады. Пакеттерде метадеректер болады, мысалы, бағдарламалық жасақтаманың атауы, оның мақсатының сипаттамасы, нұсқа нөмірі, жасаушысы, тексеру сомасы (көбінесе криптографиялық хэш-функциясы) және бағдарламалық жасақтаманың дұрыс жұмыс істеуі үшін қажетті тәуелділіктер тізімі кіреді. Орнату кезінде метадеректер жергілікті пакеттер туралы деректер базасында сақталады. Пакет менеджерлері әдетте бағдарламалық жасақтамалардың үйлесімсіздіктерін және қажетті алғышарттардың жоқтығын болдырмау үшін бағдарламалық жасақтама тәуелділіктері мен нұсқалар туралы ақпараттың дерекқорын ұстайды. Олар бағдарламалық репозиторийлермен, бинарлық репозиторий менеджерлерімен және қолданбалар дүкендерімен тығыз байланыста жұмыс істейді. Пакет менеджерлері қолмен орнату және жаңарту қажеттілігін жою үшін жасалған. Бұл әсіресе операциялық жүйелері жүздеген немесе тіпті он мыңдаған бөлек бағдарламалық пакеттерден тұратын ірі кәсіпорындар үшін өте пайдалы.
Тарих
Алғашқы пакеттік менеджерлердің бірі IBM AIX жүйесінен SMIT (және оның артқы жағы installp) болды. SMIT 1989 жылы AIX 3.0 нұсқасымен бірге енгізілді. 1994 жыл шамасында пайда болған алғашқы пакеттік менеджерлерде автоматты тәуелділіктерді шешу мүмкіндігі болмаған, бірақ олар жүйеде бағдарламалық қамтамасты қосу және жою процесін едәуір жеңілдетті. 1995 жылға қарай, CPAN-нан бастап, пакеттік менеджерлер репозиторийден пакеттерді жүктеу, олардың тәуелділіктерін автоматты түрде шешіп, қажет болған жағдайда орнату жұмысын бастады, бұл жүйеде бағдарламалық қамтамасты орнатуды, жоюды және жаңартуды әлдеқайда оңай жасады.
Ортақ кітапханалардағы қиындықтар
Динамикалық кітапханаларды байланыстыруға негізделген компьютерлік жүйелер, статикалық кітапханаларды байланыстырудың орнына, машиналық нұсқаулардың орындалатын кітапханаларын пакеттер мен қолданбалар арасында бөліседі. Мұндай жүйелерде әртүрлі пакеттердің әртүрлі кітапхана нұсқаларын қажет етуінен туындайтын қайшылықты қарым-қатынастар "тәуелділік тозағы" деп аталатын қиындыққа алып келеді. Microsoft Windows жүйелерінде динамикалық байланыстырылған кітапханалармен жұмыс істегенде бұл "DLL тозағы" деп те аталады. Қазіргі заманғы пакет менеджерлері бұл проблемаларды көбінесе шешті, кітапхананың бірнеше нұсқасын (мысалы, OPENSTEP Framework жүйесі), кез келген тәуелділікті (мысалы, Gentoo Portage слоттары), тіпті әртүрлі компилятор нұсқаларымен құрастырылған пакеттерді (мысалы, тұрақты ABI жоқ Глазго Хаскелл компиляторы құрастырған динамикалық кітапханалар) қатар орнатуға мүмкіндік береді. Бұл басқа пакеттерге олардың қандай нұсқамен байланыстырылғанын немесе тіпті орнатылғанын нақты көрсетуге мүмкіндік береді.
Жергілікті құрастырылған пакеттердің алдыңғы жақтары
Жүйелік әкімшілер пакеттік басқару бағдарламалық жасақтамасынан өзге құралдарды пайдаланып бағдарламалық қамтамасыздыруды орнатуға және күтіп ұстауға мүмкіндік алады. Мысалы, жергілікті әкімші бұрыннан дайын емес бастапқы кодты жүктеуге, оны компиляциялап, орнатуға болады. Бұл жергілікті жүйенің күйін пакеттік менеджер дерекқорының күйімен үйлесімсіздікке алып келуі мүмкін. Сондықтан жергілікті әкімші қосымша шаралар қабылдауы қажет, мысалы, кейбір тәуелділіктерді қолмен басқару немесе өзгерістерді пакеттік менеджерге енгізу. Жергілікті түрде компиляцияланған пакеттерді пакеттік басқарумен интеграциялауды қамтамасыз ететін құралдар бар. Deb және rpm файлдарына негізделген дистрибутивтер мен Slackware Linux үшін CheckInstall құралы бар, ал Gentoo Linux және Arch Linux сияқты рецепт негізделген және гибридтік жүйелер үшін алдымен рецепт жазылып, содан кейін пакет жергілікті пакеттік дерекқорға сәйкес келуіне қол жеткізіледі.
Конфигурацияны сақтау
Бағдарламалық жасақтаманы жаңарту кезінде конфигурациялық файлдарды жаңарту ерекше қиындық тудырады. Пакет менеджерлері, кем дегенде Unix жүйелерінде, файлдарды архивтеу құралдарының кеңейтілген нұсқасы болғандықтан, олар әдетте конфигурациялық файлдарға ережелер қолданудың орнына, жаңадан жазады немесе сақтап қана қояды. Бұған ядро конфигурациясы жаттырмасы бар (егер бұзылса, компьютерді қайта іске қосып пайдалану мүмкін болмайды). Конфигурациялық файлдардың форматы өзгергенде проблемалар туындауы мүмкін; мысалы, ескі конфигурациялық файл жаңадан қосылған, бірақ өшірілуі керек опцияларды нақты көрсетпесе. Кейбір пакет менеджерлері, мысалы Debian-ның dpkg, орнату кезінде конфигурациялауға мүмкіндік береді. Басқа жағдайларда, әдепкі конфигурациямен пакеттерді орнатып, кейіннен осы конфигурацияны қайта жазу қажет болады, мысалы, көптеген компьютерлерге басқарылмайтын (headless) орнатуларда. Осындай алдын ала конфигурацияланған орнату dpkg арқылы да қолдау көрсетіледі.
Деректер қоймалары
Пайдаланушылар өз жүйелеріне қандай бағдарламалық жасақтама орнатылуына көбірек бақылау жасау үшін (ал кейде таратушылардың заңдық немесе ыңғайлы себептерімен) бағдарламалық жасақтама көбінесе бірнеше бағдарламалық репозиторийлерден жүктеледі.
Қаптаманы каскадпен алып тастау
Кейбір кеңейтілген пакеттерді басқару мүмкіндіктері "каскадты пакеттерді жою" мүмкіндігін ұсынады, онда нысана пакетке тәуелді барлық пакеттер және нысана пакетке ғана тәуелді барлық пакеттер де жойылады.
Командаларды салыстыру
Командалар әрбір нақты пакет менеджері үшін ерекше болғанымен, олар көбінесе аударыла алады, себебі көптеген пакет менеджерлері ұқсас функцияларды ұсынады. немесе пакет атауы. Әрекет Homebrew apt pacman dnf (yum) portage zypper Nixxbps swupd WinGet Орнату пакетті Жою пакеті немесе Барлық пакеттерді жаңарту немесе Бағдарламалық пакеттер тізімін жаңарту немесе Жаңартуға болатын пакеттерді көрсету немесе ( -ның қысқартылған түрі) (бос пакеттер репозиторийін қажет етеді) немесе Жетім пакеттерді және конфигурацияны жою Жетім пакеттерді көрсету ( -ның қысқартылған түрі) немесе Пакетті (және жетімдерді) жою немесе Arch Linux Pacman/Rosetta вики кең ауқымды шолу ұсынады.
The Arch Linux Pacman/Rosetta wiki offers an extensive overview.
Ауру таралуы
dpkg сияқты пакет менеджерлері 1994 жылдан бері қолданылып келеді. Бинарлық пакеттерге бағытталған Linux дистрибутивтері бағдарламалық қамтамасты басқару және күтіп ұстаудың басты құралы ретінде пакеттік жүйелерге көп жүктеледі. Android (Linux негізінде), iOS (Unix негізінде) және Windows Phone сияқты мобильді операциялық жүйелер дерлік толығымен өз өндірушілерінің қосымша дүкендеріне тәуелді және осыған байланысты өздерінің жеке пакеттік жүйелерін пайдаланады.
Құрылғыны орнатушылармен салыстыру
Пакеттік менеджерді көбінесе "орнату менеджері" деп атайды, бұл пакеттік менеджерлер мен орнату бағдарламалары арасында шатасуға себеп болуы мүмкін. Ерекшеліктері:
Қолданба дүкендерімен салыстыру
Қолданба дүкендерін қосымша деңгейіндегі пакеттік менеджерлер деп санауға болады. Дәстүрлі пакеттік менеджерлерден ерекшелігі, қолданба дүкендері бағдарламалық қамтамастың өзі үшін (бағдарламалық жасақтаманы жасау үшін емес) төлем қабылдауға арналған, және тәуелділіктері немесе тәуелділіктерді шешу мүмкіндігі жоқ монолиттік пакеттерді ғана ұсына алады. Олар көбінесе басқару мүмкіндіктері бойынша өте шектеулі, себебі олар қуаттылыққа немесе жаңа мүмкіндіктерге қарағанда қарапайымдылыққа басымдық береді, сондай-ақ коммерциялық операциялық жүйелерде және "ақылды" құрылғыларда кең таралған.
Жалпыға ортақ пакет менеджері
Бинарлық қойма менеджері деп те аталатын бұл бағдарламалық құрал, бағдарламалық жасақтаманы әзірлеу процесінде қолданылатын және жасалатын бинарлық файлдарды, артефакттарды және пакеттерді жүктеу мен сақтауды оңтайландыруға арналған. Бұл пакет менеджерлерінің мақсаты – кәсіпорындардың барлық пакет түрлерін өңдеу тәсілін біркелкі ету. Олар пайдаланушыларға барлық артефакт түрлері үшін қауіпсіздік және сәйкестік өлшемдарын қолдануға мүмкіндік береді. Универсалды пакет менеджерлері DevOps құралдар тізбегінің негізгі буыны ретінде танылады.
Қаптаманың пішімі
Әрбір пакет менеджері басқара алатын пакеттердің форматы мен метадеректеріне сүйенеді. Яғни, пакет менеджерлеріне тиісті метадеректермен бірге, мысалы, тәуелділіктермен бірге, нақты пакет менеджері үшін жинақталған файлдардың топтары қажет. Көбінесе, негізгі құралдар осы пакеттерден қарапайым орнатуды басқарады, ал бірнеше пакет менеджері қосымша мүмкіндіктерді қамтамасыз ету үшін осы құралдарды пайдаланады. Мысалы, yum rpm-ді артқы бағдарлама ретінде пайдаланады. Yum жүйелер желісін күтіп ұстау үшін қарапайым конфигурация сияқты мүмкіндіктерді қосу арқылы артқы бағдарламаның функционалдығын кеңейтеді. Тағы бір мысал ретінде, Synaptic Package Manager графикалық пайдаланушы интерфейсін Advanced Packaging Tool (apt) кітапханасын пайдалану арқылы ұсынады, ол өз кезегінде негізгі функционалдығы үшін dpkg-ге сүйенеді. Alien – бұл Linux пакеттерінің әртүрлі форматтарын түрлендіруге арналған бағдарлама, ол Linux Standard Base (LSB) стандартына сәйкес rpm пакеттерін, deb, Stampede (.slp), Solaris (.pkg) және Slackware (.tgz, txz, tbz, tlz) пакеттерін түрлендіруді қолдайды. Мобильді операциялық жүйелерде Google Play Android қолданба пакетінің (APK) форматын қолданады, ал Microsoft Store APPX және XAP форматтарын пайдаланады. (Google Play және Microsoft Store-да осы аттас пакет менеджерлері бар.)
Еркін және ашық бастапқы кодты бағдарламалық қамтамасыз ету жүйелері
Тегін және ашық кодты бағдарламалық жасақтаманың ерекшелігі бойынша, ұқсас және үйлесімді лицензиялармен жабдықталған пакеттерді бірнеше операциялық жүйеде пайдалануға болады. Бұл пакеттерді бағдарламалық жасақтаманың көптеген нұсқаларын басқару және нұсқаулыққа байланысты тәуелділіктер мен қақтығыстарды шешу үшін конфигурацияланатын және ішкі құрылысы күрделі пакеттік жүйелерді пайдаланып біріктіріп, таратуға болады. Кейбір тегін және ашық кодты бағдарламалық жасақтаманың пакеттік жүйелері өзі де тегін және ашық кодты бағдарламалық жасақтама ретінде жарияланады. Mac OS X және Windows сияқты коммерциялық операциялық жүйелердегі пакеттік басқару мен Linux сияқты тегін және ашық кодты бағдарламалық жасақтамадағы пакеттік басқару арасындағы басты айырмашылық – тегін және ашық кодты бағдарламалық жасақтама жүйелері үшінші тараптың пакеттерін де сол механизм арқылы орнатуға және жаңартуға мүмкіндік береді, ал Mac OS X және Windows пакеттік менеджерлері тек Apple және Microsoft ұсынған бағдарламалық жасақтаманы жаңартады (Windows-тағы кейбір үшінші тарап драйверлерін есептемегенде). Үшінші тараптың бағдарламалық жасақтамасын үздіріссіз жаңарту мүмкіндігі әдетте тиісті репозиторийдің URL-ін пакеттік басқарудың конфигурациялық файлына қосу арқылы қосылады.
Қолданба деңгейіндегі пакет менеджерлері
Жүйелік деңгейдегі қолданба менеджерлерінен басқа, мүмкіндіктері шектеулі операциялық жүйелер үшін және әзірлеушілерге ең соңғы кітапханалар қажет болатын бағдарламалау тілдері үшін қосымша пакет менеджерлері де бар. Жүйелік деңгейдегі пакет менеджерлерінен өзгеше, қолданба деңгейіндегі пакет менеджерлері бағдарламалық жүйенің ғана шағын бөлігіне назар аударады. Олар әдетте жүйелік деңгейдегі пакет менеджерімен басқарылмайтын каталогтар ағашында орналасады, мысалы, немесе. Дегенмен, бұл бағдарламалау кітапханаларымен жұмыс жасайтын пакет менеджерлеріне қатысты болмауы мүмкін, соның салдарынан екі пакет менеджері де файлды "өз меншігінде" деп таластауы және жаңарту процесін бұзуы ықтимал.
Деректерге тәуелділікті басқару
2016 жылы Лейпциг университетінің компьютер ғалымы Эдгард Маркс деректерді басқарумен айналысатын жүйелерді атау үшін «Деректерге тәуелділік басқару» терминін енгізді. Деректерге тәуелділік басқару жүйелері деректерді бұлтта, жеке компьютерлерде немесе смарт құрылғыларда (шекаралық құрылғыларда) орналастыру және басқару процесін жеңілдету үшін құрастырылған. Деректерге тәуелділік басқару аялары деректердің қалай құрылғандығын, лицензиясын және оның тәуелділіктерін сипаттауға мүмкіндік береді. Деректерге тәуелділікті басқару тұжырымы, JavaScript үшін npm, Ruby үшін gem және .NET үшін NuGet сияқты бағдарламалық пакеттердің тәуелділіктерін басқару құралдарынан келген. Олардың мақсаты – пайдаланушыларға деректерге негізделген қосымшалар үшін, мысалы, машиналық оқыту модельдері сияқты деректерге тәуелді бағдарламалық қамтамасыз етуді басқаруға көмектесу. Олар деректер пакеттерін жариялау, іздеу және орнату үшін пайдалы. Hugging Face, KBox және тағы басқалары деректерге тәуелділікті басқару аяларының нақты мысалдары болып табылады.
Әсері
Ян Мёрдок пакеттік басқаруды "Linux индустрияға әкелген ең маңызды жетістік" деп атады, ол операциялық жүйе мен қосымшалар арасындағы шекараны жояды және "жаңа инновацияларды нарыққа енгізуді және операциялық жүйені дамытуды жеңілдетеді". Пакеттік менеджерлерді дамытушылар үшін PackagingCon атты конференция да бар. Ол 2021 жылы пакеттік басқаруға қатысты әртүрлі тәсілдерді зерделеу мақсатымен құрылды.