GNU/Linux >> Belajar Linux >  >> Linux

Evolusi manajer paket

Setiap perangkat terkomputerisasi menggunakan beberapa bentuk perangkat lunak untuk melakukan tugas yang dimaksudkan. Pada hari-hari awal perangkat lunak, produk diuji secara ketat untuk bug dan cacat lainnya. Selama sekitar satu dekade terakhir, perangkat lunak telah dirilis melalui internet dengan maksud agar bug apa pun dapat diperbaiki dengan menerapkan versi baru perangkat lunak. Dalam beberapa kasus, setiap aplikasi memiliki pembarunya sendiri. Di tempat lain, terserah kepada pengguna untuk mengetahui cara mendapatkan dan meningkatkan perangkat lunak.

Linux mengadopsi awal praktik mempertahankan lokasi terpusat di mana pengguna dapat menemukan dan menginstal perangkat lunak. Dalam artikel ini, saya akan membahas sejarah penginstalan perangkat lunak di Linux dan bagaimana sistem operasi modern tetap up to date terhadap torrent CVE yang tiada henti.

Bagaimana perangkat lunak di Linux diinstal sebelum manajer paket?

Secara historis, perangkat lunak disediakan baik melalui FTP atau milis (akhirnya distribusi ini akan berkembang untuk menyertakan situs web dasar). Hanya beberapa file kecil yang berisi instruksi untuk membuat biner (biasanya dalam tarfile). Anda akan membuka tar file, membaca readme, dan selama Anda memiliki GCC atau kompiler C bentuk lain, Anda biasanya akan menjalankan ./configure skrip dengan beberapa daftar atribut, seperti path ke file library, lokasi untuk membuat biner baru, dll. Selain itu, configure proses akan memeriksa sistem Anda untuk dependensi aplikasi. Jika ada persyaratan utama yang hilang, skrip konfigurasi akan keluar dan Anda tidak dapat melanjutkan penginstalan sampai semua dependensi terpenuhi. Jika skrip konfigurasi berhasil diselesaikan, Makefile akan dibuat.

Sekali Makefile ada, Anda kemudian akan melanjutkan untuk menjalankan make perintah (perintah ini disediakan oleh kompiler mana pun yang Anda gunakan). make perintah memiliki sejumlah opsi yang disebut membuat bendera , yang membantu mengoptimalkan binari yang dihasilkan untuk sistem Anda. Pada hari-hari awal komputasi, ini sangat penting karena perangkat keras berjuang untuk memenuhi tuntutan perangkat lunak modern. Saat ini, opsi kompilasi bisa jauh lebih umum karena sebagian besar perangkat keras sudah lebih dari cukup untuk perangkat lunak modern.

Terakhir, setelah make proses telah selesai, Anda harus menjalankan make install (atau sudo make install ) untuk benar-benar menginstal perangkat lunak. Seperti yang dapat Anda bayangkan, melakukan ini untuk setiap perangkat lunak memakan waktu dan membosankan—belum lagi fakta bahwa memperbarui perangkat lunak adalah proses yang rumit dan berpotensi sangat melibatkan.

Apa itu paket?

Paket diciptakan untuk memerangi kompleksitas ini. Paket mengumpulkan beberapa file data menjadi satu file arsip untuk portabilitas dan penyimpanan yang lebih mudah, atau cukup kompres file untuk mengurangi ruang penyimpanan. Binari yang disertakan dalam sebuah paket telah dikompilasi sebelumnya dengan sesuai dengan default waras yang dipilih pengembang. Paket juga berisi metadata, seperti nama perangkat lunak, deskripsi tujuannya, nomor versi, dan daftar dependensi yang diperlukan agar perangkat lunak dapat berjalan dengan benar.

Beberapa rasa Linux telah membuat format paket mereka sendiri. Beberapa format paket yang paling umum digunakan meliputi:

  • .deb:Format paket ini digunakan oleh Debian, Ubuntu, Linux Mint, dan beberapa turunan lainnya. Itu adalah jenis paket pertama yang dibuat.
  • .rpm:Format paket ini awalnya disebut Red Hat Package Manager. Ini digunakan oleh Red Hat, Fedora, SUSE, dan beberapa distribusi kecil lainnya.
  • .tar.xz:Meskipun hanya tarball terkompresi, ini adalah format yang digunakan Arch Linux.

Meskipun paket itu sendiri tidak mengelola dependensi secara langsung, paket tersebut mewakili langkah maju yang besar dalam manajemen perangkat lunak Linux.

Apa yang dimaksud dengan repositori perangkat lunak?

Beberapa tahun yang lalu, sebelum proliferasi smartphone, gagasan tentang repositori perangkat lunak sulit dipahami oleh banyak pengguna jika mereka tidak terlibat dalam ekosistem Linux. Sampai hari ini, sebagian besar pengguna Windows tampaknya masih terprogram untuk membuka browser web untuk mencari dan menginstal perangkat lunak baru. Namun, mereka yang memiliki ponsel cerdas telah terbiasa dengan gagasan "toko" perangkat lunak. Cara pengguna ponsel cerdas memperoleh perangkat lunak dan cara kerja pengelola paket tidaklah berbeda. Meskipun ada beberapa upaya untuk membuat UI yang menarik untuk repositori perangkat lunak, sebagian besar pengguna Linux masih menggunakan baris perintah untuk menginstal paket. Repositori perangkat lunak adalah daftar terpusat dari semua perangkat lunak yang tersedia untuk setiap repositori yang telah dikonfigurasikan untuk digunakan oleh sistem. Di bawah ini adalah beberapa contoh pencarian repositori untuk paket tertentu (perhatikan bahwa ini telah dipotong untuk singkatnya):

Arch Linux dengan aurman

user@arch ~ $  aurman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
aur/kate-root 18.04.0-1 (11, 1.139399)
    Advanced Text Editor, patched to be able to run as root
aur/kate-git r15288.15d26a7-1 (1, 1e-06)
    An advanced editor component which is used in numerous KDE applications requiring a text editing component

CentOS 7 menggunakan YUM

[user@centos ~]$ yum search kate

kate-devel.x86_64 : Development files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.x86_64 : Kate kpart plugin

Ubuntu menggunakan APT

user@ubuntu ~ $ apt search kate
Sorting... Done
Full Text Search... Done

kate/xenial 4:15.12.3-0ubuntu2 amd64
  powerful text editor

kate-data/xenial,xenial 4:4.14.3-0ubuntu4 all
  shared data files for Kate text editor

kate-dbg/xenial 4:15.12.3-0ubuntu2 amd64
  debugging symbols for Kate

kate5-data/xenial,xenial 4:15.12.3-0ubuntu2 all
  shared data files for Kate text editor

Apa pengelola paket yang paling menonjol?

Seperti yang disarankan dalam output di atas, manajer paket digunakan untuk berinteraksi dengan repositori perangkat lunak. Berikut ini adalah ikhtisar singkat dari beberapa pengelola paket yang paling menonjol.

Manajer paket berbasis RPM

Memperbarui sistem berbasis RPM, terutama yang berbasis teknologi Red Hat, memiliki sejarah yang sangat menarik dan terperinci. Faktanya, versi yum (untuk distribusi perusahaan) dan DNF (untuk komunitas) saat ini menggabungkan beberapa proyek sumber terbuka untuk menyediakan fungsionalitas mereka saat ini.

Awalnya, Red Hat menggunakan manajer paket yang disebut RPM (Red Hat Package Manager), yang masih digunakan sampai sekarang. Namun, penggunaan utamanya adalah untuk menginstal RPM, yang Anda miliki secara lokal, bukan untuk mencari repositori perangkat lunak. Manajer paket bernama up2date dibuat untuk memberi tahu pengguna tentang pembaruan paket dan memungkinkan mereka untuk mencari repositori jarak jauh dan menginstal dependensi dengan mudah. Sementara itu memenuhi tujuannya, beberapa anggota komunitas merasa bahwa up2date memiliki beberapa kekurangan yang signifikan.

Mantra yum saat ini berasal dari beberapa upaya komunitas yang berbeda. Yellowdog Updater (YUP) dikembangkan pada 1999-2001 oleh orang-orang di Terra Soft Solutions sebagai mesin back-end untuk penginstal grafis Yellow Dog Linux. Duke University menyukai ide YUP dan memutuskan untuk memperbaikinya. Mereka menciptakan Yellowdog Updater, Modified (yum) yang akhirnya diadaptasi untuk membantu mengelola sistem Red Hat Linux universitas. Yum semakin populer, dan pada tahun 2005 diperkirakan digunakan oleh lebih dari setengah pasar Linux. Saat ini, hampir setiap distribusi Linux yang menggunakan RPM menggunakan yum untuk manajemen paket (dengan beberapa pengecualian).

Bekerja dengan yum

Agar yum dapat mengunduh dan menginstal paket dari repositori internet, file harus berada di /etc/yum.repos.d/ dan mereka harus memiliki ekstensi .repo . Berikut adalah contoh file repo:

[local_base]
name=Base CentOS  (local)
baseurl=http://7-repo.apps.home.local/yum-repo/7/
enabled=1
gpgcheck=0

Ini untuk salah satu repositori lokal saya, yang menjelaskan mengapa pemeriksaan GPG tidak aktif. Jika pemeriksaan ini aktif, setiap paket perlu ditandatangani dengan kunci kriptografik dan kunci yang sesuai perlu diimpor ke sistem yang menerima pembaruan. Karena saya mengelola repositori ini sendiri, saya mempercayai paket-paket tersebut dan tidak perlu repot-repot menandatanganinya.

Setelah file repositori tersedia, Anda dapat mulai menginstal paket dari repositori jarak jauh. Perintah paling dasar adalah yum update , yang akan memperbarui setiap paket yang saat ini diinstal. Ini tidak memerlukan langkah khusus untuk menyegarkan informasi tentang repositori; ini dilakukan secara otomatis. Contoh perintah ditunjukkan di bawah ini:

[user@centos ~]$ sudo yum update
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
local_base                             | 3.6 kB  00:00:00    
local_epel                             | 2.9 kB  00:00:00    
local_rpm_forge                        | 1.9 kB  00:00:00    
local_updates                          | 3.4 kB  00:00:00    
spideroak-one-stable                   | 2.9 kB  00:00:00    
zfs                                    | 2.9 kB  00:00:00    
(1/6): local_base/group_gz             | 166 kB  00:00:00    
(2/6): local_updates/primary_db        | 2.7 MB  00:00:00    
(3/6): local_base/primary_db           | 5.9 MB  00:00:00    
(4/6): spideroak-one-stable/primary_db |  12 kB  00:00:00    
(5/6): local_epel/primary_db           | 6.3 MB  00:00:00    
(6/6): zfs/x86_64/primary_db           |  78 kB  00:00:00    
local_rpm_forge/primary_db             | 125 kB  00:00:00    
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check

Jika Anda yakin ingin yum menjalankan perintah apa pun tanpa berhenti untuk input, Anda dapat meletakkan -y tandai dalam perintah, seperti yum update -y .

Menginstal paket baru sama mudahnya. Pertama, cari nama paket dengan yum search :

[user@centos ~]$ yum search kate

artwiz-aleczapka-kates-fonts.noarch : Kates font in Artwiz family
ghc-highlighting-kate-devel.x86_64 : Haskell highlighting-kate library development files
kate-devel.i686 : Development files for kate
kate-devel.x86_64 : Development files for kate
kate-libs.i686 : Runtime files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.i686 : Kate kpart plugin

Setelah Anda memiliki nama paket, Anda cukup menginstal paket dengan sudo yum install kate-devel -y . Jika Anda menginstal paket yang tidak lagi Anda perlukan, Anda dapat menghapusnya dengan sudo yum remove kate-devel -y . Secara default, yum akan menghapus paket beserta dependensinya.

Mungkin ada kalanya Anda tidak tahu nama paketnya, tetapi Anda tahu nama utilitasnya. Misalnya, Anda mencari utilitas updatedb , yang membuat/memperbarui database yang digunakan oleh locate memerintah. Mencoba memasang updatedb mengembalikan hasil berikut:

[user@centos ~]$ sudo yum install updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package updatedb available.
Error: Nothing to do

Anda dapat mengetahui dari paket mana utilitas tersebut berasal dengan menjalankan:

[user@centos ~]$ yum whatprovides *updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

bacula-director-5.2.13-23.1.el7.x86_64 : Bacula Director files
Repo        : local_base
Matched from:
Filename    : /usr/share/doc/bacula-director-5.2.13/updatedb

mlocate-0.26-8.el7.x86_64 : An utility for finding files by name
Repo        : local_base
Matched from:
Filename    : /usr/bin/updatedb

Alasan saya menggunakan tanda bintang * di depan perintah adalah karena yum whatprovides menggunakan jalur ke file untuk membuat kecocokan. Karena saya tidak yakin di mana file itu berada, saya menggunakan tanda bintang untuk menunjukkan jalur apa pun.

Tentu saja ada lebih banyak pilihan yang tersedia untuk yum. Saya mendorong Anda untuk melihat halaman manual yum untuk opsi tambahan.

Dandified Yum (DNF) adalah iterasi yang lebih baru di yum. Diperkenalkan di Fedora 18, itu belum diadopsi dalam distribusi perusahaan, dan karena itu sebagian besar digunakan di Fedora (dan turunannya). Penggunaannya hampir sama persis dengan yum, tetapi dibuat untuk mengatasi kinerja yang buruk, API yang tidak terdokumentasi, resolusi ketergantungan yang lambat/rusak, dan penggunaan memori yang tinggi sesekali. DNF dimaksudkan sebagai pengganti drop-in untuk yum, dan oleh karena itu saya tidak akan mengulangi perintah—di mana pun Anda akan menggunakan yum , cukup ganti dnf .

Bekerja dengan Zypper

Zypper adalah manajer paket lain yang dimaksudkan untuk membantu mengelola RPM. Manajer paket ini paling sering dikaitkan dengan SUSE (dan openSUSE) tetapi juga telah diadopsi oleh MeeGo, Sailfish OS, dan Tizen. Ini awalnya diperkenalkan pada tahun 2006 dan telah diulang sejak saat itu. Tidak banyak yang bisa dikatakan selain Zypper digunakan sebagai back end untuk alat administrasi sistem YaST dan beberapa pengguna merasa lebih cepat daripada yum.

Penggunaan Zypper sangat mirip dengan yum. Untuk mencari, memperbarui, menginstal, atau menghapus paket, cukup gunakan yang berikut ini:

zypper search kate
zypper update
zypper install kate
zypper remove kate

Beberapa perbedaan utama berperan dalam cara repositori ditambahkan ke sistem dengan zypper . Tidak seperti manajer paket yang dibahas di atas, zypper menambahkan repositori menggunakan manajer paket itu sendiri. Cara yang paling umum adalah melalui URL, tetapi zypper juga mendukung pengimporan dari file repo.

suse:~ # zypper addrepo http://download.videolan.org/pub/vlc/SuSE/15.0 vlc
Adding repository 'vlc' [done]
Repository 'vlc' successfully added

Enabled     : Yes
Autorefresh : No
GPG Check   : Yes
URI         : http://download.videolan.org/pub/vlc/SuSE/15.0
Priority    : 99

Anda menghapus repositori dengan cara yang sama:

suse:~ # zypper removerepo vlc
Removing repository 'vlc' ...................................[done]
Repository 'vlc' has been removed.

Gunakan zypper repos perintah untuk melihat status repositori di sistem Anda:

suse:~ # zypper repos
Repository priorities are without effect. All enabled repositories share the same priority.

#  | Alias                     | Name                                    | Enabled | GPG Check | Refresh
---+---------------------------+-----------------------------------------+---------+-----------+--------
 1 | repo-debug                | openSUSE-Leap-15.0-Debug                | No      | ----      | ----  
 2 | repo-debug-non-oss        | openSUSE-Leap-15.0-Debug-Non-Oss        | No      | ----      | ----  
 3 | repo-debug-update         | openSUSE-Leap-15.0-Update-Debug         | No      | ----      | ----  
 4 | repo-debug-update-non-oss | openSUSE-Leap-15.0-Update-Debug-Non-Oss | No      | ----      | ----  
 5 | repo-non-oss              | openSUSE-Leap-15.0-Non-Oss              | Yes     | ( p) Yes  | Yes    
 6 | repo-oss                  | openSUSE-Leap-15.0-Oss                  | Yes     | ( p) Yes  | Yes    

zypper bahkan memiliki kemampuan yang sama untuk menentukan nama paket apa yang berisi file atau binari. Tidak seperti YUM, ia menggunakan tanda hubung dalam perintah (walaupun metode pencarian ini tidak digunakan lagi):

localhost:~ # zypper what-provides kate
Command 'what-provides' is replaced by 'search --provides --match-exact'.
See 'help search' for all available options.
Loading repository data...
Reading installed packages...

S  | Name | Summary              | Type      
---+------+----------------------+------------
i+ | Kate | Advanced Text Editor | application
i  | kate | Advanced Text Editor | package  

Seperti halnya YUM dan DNF, Zypper memiliki rangkaian fitur yang jauh lebih kaya daripada yang dibahas di sini. Silakan berkonsultasi dengan dokumentasi resmi untuk informasi lebih mendalam.

Manajer paket berbasis Debian

Salah satu distribusi Linux tertua yang saat ini dipertahankan, sistem Debian sangat mirip dengan sistem berbasis RPM. Mereka menggunakan .deb paket, yang dapat dikelola oleh alat yang disebut dpkg . dpkg sangat mirip dengan rpm dalam hal itu dirancang untuk mengelola paket yang tersedia secara lokal. Itu tidak ada resolusi ketergantungan (meskipun itu memeriksa ketergantungan), dan tidak memiliki cara yang dapat diandalkan untuk berinteraksi dengan repositori jarak jauh. Untuk meningkatkan pengalaman pengguna dan kemudahan penggunaan, proyek Debian menugaskan proyek yang disebut Dewa . Nama kode ini akhirnya ditinggalkan dan diubah menjadi Alat Paket Lanjutan (APT).

Dirilis sebagai versi uji coba pada tahun 1998 (sebelum muncul di Debian 2.1 pada tahun 1999), banyak pengguna menganggap APT sebagai salah satu fitur yang menentukan dari sistem berbasis Debian. Itu menggunakan repositori dengan cara yang mirip dengan sistem berbasis RPM, tetapi sebagai ganti .repo individual file yang yum menggunakan, apt pernah menggunakan /etc/apt/sources.list untuk mengelola repositori. Baru-baru ini, itu juga menyerap file dari /etc/apt/sources.d/ . Mengikuti contoh di manajer paket berbasis RPM, untuk mencapai hal yang sama pada distribusi berbasis Debian, Anda memiliki beberapa opsi. Anda dapat mengedit/membuat file secara manual di lokasi yang disebutkan di atas dari terminal, atau dalam beberapa kasus, Anda dapat menggunakan ujung depan UI (seperti Software & Updates disediakan oleh Ubuntu et al.). Untuk memberikan perlakuan yang sama ke semua distribusi, saya hanya akan membahas opsi baris perintah. Untuk menambahkan repositori tanpa mengedit file secara langsung, Anda dapat melakukan sesuatu seperti ini:

user@ubuntu:~$ sudo apt-add-repository "deb http://APT.spideroak.com/ubuntu-spideroak-hardy/ release restricted"

Ini akan membuat spideroakone.list file di /etc/apt/sources.list.d . Jelas, baris ini berubah tergantung pada repositori yang ditambahkan. Jika Anda menambahkan Arsip Paket Pribadi (PPA), Anda dapat melakukan ini:

user@ubuntu:~$ sudo apt-add-repository ppa:gnome-desktop

CATATAN: Debian tidak mendukung PPA secara asli.

Setelah repositori ditambahkan, sistem berbasis Debian perlu disadarkan bahwa ada lokasi baru untuk mencari paket. Ini dilakukan melalui apt-get update perintah:

user@ubuntu:~$ sudo apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Hit:2 http://APT.spideroak.com/ubuntu-spideroak-hardy release InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu xenial InRelease
Get:4 http://ca.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]              
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [517 kB]
Get:6 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages [455 kB]      
Get:7 http://security.ubuntu.com/ubuntu xenial-security/main Translation-en [221 kB]    
...

Fetched 6,399 kB in 3s (2,017 kB/s)                                          
Reading package lists... Done
... Selesai

Sekarang setelah repositori baru ditambahkan dan diperbarui, Anda dapat mencari paket menggunakan apt-cache perintah:

user@ubuntu:~$ apt-cache search kate
aterm-ml - Afterstep XVT - a VT102 emulator for the X window system
frescobaldi - Qt4 LilyPond sheet music editor
gitit - Wiki engine backed by a git or darcs filestore
jedit - Plugin-based editor for programmers
kate - powerful text editor
kate-data - shared data files for Kate text editor
kate-dbg - debugging symbols for Kate
katepart - embeddable text editor component

Untuk menginstal kate , cukup jalankan perintah instal yang sesuai:

user@ubuntu:~$ sudo apt-get install kate

Untuk menghapus paket, gunakan apt-get remove :

user@ubuntu:~$ sudo apt-get remove kate

Dalam hal penemuan paket, APT tidak menyediakan fungsionalitas apa pun yang mirip dengan yum whatprovides . Ada beberapa cara untuk mendapatkan informasi ini jika Anda mencoba mencari asal file tertentu di disk.

Menggunakan dpkg

user@ubuntu:~$ dpkg -S /bin/ls
coreutils: /bin/ls

Menggunakan apt-file

user@ubuntu:~$ sudo apt-get install apt-file -y 

user@ubuntu:~$ sudo apt-file update

user@ubuntu:~$ apt-file search kate

Masalah dengan apt-file search apakah itu, tidak seperti yum whatprovides , itu terlalu bertele-tele kecuali Anda tahu jalur yang tepat, dan itu secara otomatis menambahkan pencarian wildcard sehingga Anda berakhir dengan hasil untuk apa pun dengan kata kate di dalamnya:

kate: /usr/bin/kate
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebacktracebrowserplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebuildplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katecloseexceptplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katectagsplugin.so

Sebagian besar contoh ini menggunakan apt-get . Perhatikan bahwa sebagian besar tutorial saat ini untuk Ubuntu secara khusus hanya menggunakan apt . apt single tunggal perintah dirancang untuk mengimplementasikan hanya perintah yang paling umum digunakan di gudang senjata APT. Karena fungsionalitas dibagi antara apt-get , apt-cache , dan perintah lainnya, apt terlihat untuk menyatukan ini menjadi satu perintah. Itu juga menambahkan beberapa basa-basi seperti pewarnaan, bilah kemajuan, dan peluang dan tujuan lainnya. Sebagian besar perintah yang disebutkan di atas dapat diganti dengan apt ,  tetapi tidak semua distribusi berbasis Debian saat ini menerima dukungan patch keamanan menggunakan apt secara default, jadi Anda mungkin perlu menginstal paket tambahan.

Manajer paket berbasis Arch

Arch Linux menggunakan manajer paket yang disebut pacman. Tidak seperti .deb atau .rpm file, pacman menggunakan tarball yang lebih tradisional dengan LZMA2 kompresi (.tar.xz ). Ini memungkinkan paket Arch Linux menjadi jauh lebih kecil daripada bentuk arsip terkompresi lainnya (seperti gzip ). Awalnya dirilis pada tahun 2002, pacman telah terus diulang dan ditingkatkan. Salah satu manfaat utama pacman adalah mendukung Arch Build System, sistem untuk membuat paket dari sumber. Sistem build menyerap file yang disebut PKGBUILD, yang berisi metadata (seperti nomor versi, revisi, dependensi, dll.) serta skrip shell dengan flag yang diperlukan untuk mengompilasi paket yang sesuai dengan persyaratan Arch Linux. Binari yang dihasilkan kemudian dikemas ke dalam .tar.xz yang disebutkan di atas file untuk dikonsumsi oleh pacman.

Sistem ini mengarah pada pembuatan Arch User Repository (AUR) yang merupakan repositori berbasis komunitas yang berisi file PKGBUILD dan patch atau skrip pendukung. Ini memungkinkan jumlah perangkat lunak yang hampir tak terbatas tersedia di Arch. Keuntungan nyata dari sistem ini adalah jika pengguna (atau pengelola) ingin membuat perangkat lunak tersedia untuk umum, mereka tidak harus melalui saluran resmi untuk mendapatkannya di repositori utama. Kelemahannya adalah ia bergantung pada kurasi komunitas yang mirip dengan Docker Hub, paket Snap Canonical, atau mekanisme serupa lainnya. Ada banyak manajer paket khusus AUR yang dapat digunakan untuk mengunduh, mengkompilasi, dan menginstal dari file PKGBUILD di AUR (kita akan melihatnya nanti).

Bekerja dengan pacman dan repositori resmi

Manajer paket utama Arch, pacman, menggunakan flag sebagai ganti kata perintah seperti yum dan apt . Misalnya, untuk mencari paket, Anda akan menggunakan pacman -Ss . Seperti kebanyakan perintah di Linux, Anda dapat menemukan manpage dan bantuan sebaris. Sebagian besar perintah untuk pacman  gunakan sinkronisasi (-S) bendera. Misalnya:

user@arch ~ $ pacman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
extra/libkate 0.4.1-6 [installed]
    A karaoke and text codec for embedding in ogg
extra/libtiger 0.3.4-5 [installed]
    A rendering library for Kate streams using Pango and Cairo
extra/ttf-cheapskate 2.0-12
    TTFonts collection from dustimo.com
community/haskell-cheapskate 0.1.1-100
    Experimental markdown processor.

Arch juga menggunakan repositori yang mirip dengan manajer paket lainnya. Pada output di atas, hasil pencarian diawali dengan repositori tempat mereka ditemukan (extra/ dan community/ pada kasus ini). Mirip dengan sistem berbasis Red Hat dan Debian, Arch bergantung pada pengguna untuk menambahkan informasi repositori ke dalam file tertentu. Lokasi repositori ini adalah /etc/pacman.conf . Contoh di bawah ini cukup mirip dengan sistem stok. Saya telah mengaktifkan [multilib] repositori untuk dukungan Steam:

[options]
Architecture = auto

Color
CheckSpace

SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

Dimungkinkan untuk menentukan URL tertentu di pacman.conf . Fungsionalitas ini dapat digunakan untuk memastikan semua paket datang dari titik waktu tertentu. Jika, misalnya, sebuah paket memiliki bug yang sangat memengaruhi Anda dan memiliki beberapa dependensi, Anda dapat memutar kembali ke titik waktu tertentu dengan menambahkan URL tertentu ke pacman.conf Anda lalu jalankan perintah untuk menurunkan versi sistem:

[core]
Server=https://archive.archlinux.org/repos/2017/12/22/$repo/os/$arch

Seperti sistem berbasis Debian, Arch tidak memperbarui informasi repositori lokalnya sampai Anda memintanya untuk melakukannya. Anda dapat me-refresh database paket dengan mengeluarkan perintah berikut:

user@arch ~ $ sudo pacman -Sy 

:: Synchronizing package databases...
 core                                                                     130.2 KiB   851K/s 00:00 [##########################################################] 100%
 extra                                                                   1645.3 KiB  2.69M/s 00:01 [##########################################################] 100%
 community                                                                  4.5 MiB  2.27M/s 00:02 [##########################################################] 100%
 multilib is up to date

Seperti yang Anda lihat pada output di atas, pacman berpikir bahwa database paket multilib adalah yang terbaru. Anda dapat memaksa penyegaran jika menurut Anda ini salah dengan menjalankan pacman -Syy . Jika Anda ingin memperbarui seluruh sistem Anda (tidak termasuk paket yang diinstal dari AUR), Anda dapat menjalankan pacman -Syu :

user@arch ~ $ sudo pacman -Syu

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (45) ceph-13.2.0-2  ceph-libs-13.2.0-2  debootstrap-1.0.105-1  guile-2.2.4-1  harfbuzz-1.8.2-1  harfbuzz-icu-1.8.2-1  haskell-aeson-1.3.1.1-20
              haskell-attoparsec-0.13.2.2-24  haskell-tagged-0.8.6-1  imagemagick-7.0.8.4-1  lib32-harfbuzz-1.8.2-1  lib32-libgusb-0.3.0-1  lib32-systemd-239.0-1
              libgit2-1:0.27.2-1  libinput-1.11.2-1  libmagick-7.0.8.4-1  libmagick6-6.9.10.4-1  libopenshot-0.2.0-1  libopenshot-audio-0.1.6-1  libosinfo-1.2.0-1
              libxfce4util-4.13.2-1  minetest-0.4.17.1-1  minetest-common-0.4.17.1-1  mlt-6.10.0-1  mlt-python-bindings-6.10.0-1  ndctl-61.1-1  netctl-1.17-1
              nodejs-10.6.0-1  

Total Download Size:      2.66 MiB
Total Installed Size:   879.15 MiB
Net Upgrade Size:      -365.27 MiB

:: Proceed with installation? [Y/n]

Dalam skenario yang disebutkan sebelumnya mengenai penurunan versi sistem, Anda dapat memaksa penurunan versi dengan mengeluarkan pacman -Syyuu . Penting untuk dicatat bahwa ini tidak boleh dianggap enteng. Ini seharusnya tidak menyebabkan masalah dalam banyak kasus; namun, ada kemungkinan penurunan versi paket atau beberapa paket akan menyebabkan kegagalan berjenjang dan meninggalkan sistem Anda dalam keadaan tidak konsisten. GUNAKAN DENGAN PERHATIAN!

Untuk menginstal paket, cukup gunakan pacman -S kate :

user@arch ~ $ sudo pacman -S kate

resolving dependencies...
looking for conflicting packages...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Download Size:   10.94 MiB
Total Installed Size:  38.91 MiB

:: Proceed with installation? [Y/n]

Untuk menghapus sebuah paket, Anda dapat menjalankan pacman -R kate . Ini hanya menghapus paket dan bukan dependensinya:

user@arch ~ $ sudo pacman -S kate

checking dependencies...

Packages (1) kate-18.04.2-2

Total Removed Size:  20.30 MiB

:: Do you want to remove these packages? [Y/n]

Jika Anda ingin menghapus dependensi yang bukan diperlukan oleh paket lain, Anda dapat menjalankan pacman -Rs:

user@arch ~ $ sudo pacman -Rs kate

checking dependencies...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Removed Size:  38.91 MiB

:: Do you want to remove these packages? [Y/n]

Pacman, in my opinion, offers the most succinct way of searching for the name of a package for a given utility. As shown above, yum and apt both rely on pathing in order to find useful results. Pacman makes some intelligent guesses as to which package you are most likely looking for:

user@arch ~ $ sudo pacman -Fs updatedb
core/mlocate 0.26.git.20170220-1
    usr/bin/updatedb

user@arch ~ $ sudo pacman -Fs kate
extra/kate 18.04.2-2
    usr/bin/kate

Working with the AUR

There are several popular AUR package manager helpers. Of these, yaourt and pacaur are fairly prolific. However, both projects are listed as discontinued or problematic on the Arch Wiki. For that reason, I will discuss aurman . It works almost exactly like pacman, except it searches the AUR and includes some helpful, albeit potentially dangerous, options. Installing a package from the AUR will initiate use of the package maintainer's build scripts. You will be prompted several times for permission to continue (I have truncated the output for brevity):

aurman -S telegram-desktop-bin
~~ initializing aurman...
~~ the following packages are neither in known repos nor in the aur
...
~~ calculating solutions...

:: The following 1 package(s) are getting updated:
   aur/telegram-desktop-bin  1.3.0-1  ->  1.3.9-1

?? Do you want to continue? Y/n: Y

~~ looking for new pkgbuilds and fetching them...
Cloning into 'telegram-desktop-bin'...

remote: Counting objects: 301, done.
remote: Compressing objects: 100% (152/152), done.
remote: Total 301 (delta 161), reused 286 (delta 147)
Receiving objects: 100% (301/301), 76.17 KiB | 639.00 KiB/s, done.
Resolving deltas: 100% (161/161), done.
?? Do you want to see the changes of telegram-desktop-bin? N/y: N

[sudo] password for user:

...
==> Leaving fakeroot environment.
==> Finished making: telegram-desktop-bin 1.3.9-1 (Thu 05 Jul 2018 11:22:02 AM EDT)
==> Cleaning up...
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (1) telegram-desktop-bin-1.3.9-1

Total Installed Size:  88.81 MiB
Net Upgrade Size:       5.33 MiB

:: Proceed with installation? [Y/n]

Sometimes you will be prompted for more input, depending on the complexity of the package you are installing. To avoid this tedium, aurman allows you to pass both the --noconfirm and --noedit pilihan. This is equivalent to saying "accept all of the defaults, and trust that the package maintainers scripts will not be malicious." USE THIS OPTION WITH EXTREME CAUTION! While these options are unlikely to break your system on their own, you should never blindly accept someone else's scripts.

Kesimpulan

This article, of course, only scratches the surface of what package managers can do. There are also many other package managers available that I could not cover in this space. Some distributions, such as Ubuntu or Elementary OS, have gone to great lengths to provide a graphical approach to package management.

If you are interested in some of the more advanced functions of package managers, please post your questions or comments below and I would be glad to write a follow-up article.

Appendix

# search for packages
yum search <package>
dnf search <package>
zypper search <package>
apt-cache search <package>
apt search <package>
pacman -Ss <package>

# install packages
yum install <package>
dnf install <package>
zypper install <package>
apt-get install <package>
apt install <package>
pacman -S <package>

# update package database, not required by yum, dnf and zypper
apt-get update
apt update
pacman -Sy

# update all system packages
yum update
dnf update
zypper update
apt-get upgrade
apt upgrade
pacman -Su

# remove an installed package
yum remove <package>
dnf remove <package>
apt-get remove <package>
apt remove <package>
pacman -R <package>
pacman -Rs <package>

# search for the package name containing specific file or folder
yum whatprovides *<binary>
dnf whatprovides *<binary>
zypper what-provides <binary>
zypper search --provides <binary>
apt-file search <binary>
pacman -Fs <binary>

Linux
  1. Cara Mendaftar Ketergantungan Paket Di Linux

  2. 9 Pengelola Kata Sandi Lintas-Platform Terbaik

  3. 5 Perangkat Lunak Obrolan Tim Lintas Platform Terbaik untuk PC

  1. Manajer paket Linux:dnf vs apt

  2. 5 alasan untuk menggunakan manajer paket Linux

  3. Debian – Keamanan Repositori Debian?

  1. 4 manajer daftar tugas untuk desktop Linux

  2. Manajer Paket Non-root?

  3. Dampak Peretasan SolarWinds pada Rantai Pasokan Perangkat Lunak AS