Memiliki beberapa pengalaman dengan Linux, Anda mungkin tahu bahwa Anda tidak bisa hanya berbagi perintah atau utilitas antar sistem. Alasan mengapa Anda tidak bisa begitu saja menyalin file yang dapat dieksekusi dari satu sistem ke sistem lain adalah karena ketergantungan, seperti perpustakaan dan paket pendukung lainnya. Beberapa utilitas pasti bisa disalin tapi ini tidak universal begitu. Jika Anda lupa paket mana yang Anda instal yang menyertakan nslookup
perintah, misalnya, Anda memerlukan cara untuk menemukannya.
Selanjutnya, setelah Anda menemukan paket yang berisi perintah, Anda mungkin ingin mencari tahu dari repositori mana Anda menginstal paket tersebut. Repositori dasar AppStream , BaseOS , dan Ekstra mengandung banyak, tapi tentu saja tidak semua paket yang mungkin Anda butuhkan atau temui. Dalam artikel ini, saya mengeksplorasi beberapa metode query sistem untuk menemukan repositori, paket, dan perintah terkait.
- Paket berisi perintah, utilitas, dan pustaka
- Paket memiliki ketergantungan
- Repositori berisi, menyimpan, dan menyediakan paket
Mengklasifikasikan jenis file
Apakah utilitas yang Anda gunakan berupa skrip, teks biasa, atau perintah? Apakah itu dikompilasi? Di mana lokasi filenya? Anda mungkin menginginkan beberapa informasi dasar tentang utilitas. which
perintah menempatkan file jika ada di jalur Anda. Anda perlu mencari file sebelum dapat mengidentifikasinya lebih lanjut.
$ which mtr
/usr/sbin/mtr
Untuk menampilkan informasi jenis file, file
perintah sangat diperlukan.
$ file mtr
mtr: cannot open `mtr' (No such file or directory)
$ file /usr/sbin/mtr
/usr/sbin/mtr: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d34479cefafe7299b65d8375769c63978c6c453f, stripped, too many notes (256)
Upaya pertama gagal karena file
perintah tidak mengetahui lokasi mtr
memerintah. Setelah path lengkap diberikan ke file
, informasi akan ditampilkan.
Berikut adalah contoh file yang dapat dieksekusi yang tidak dikompilasi.
$ file /usr/sbin/ifcfg
/usr/sbin/ifcfg: POSIX shell script, ASCII text executable
Seperti yang Anda lihat, file
perintah adalah perintah yang penting untuk diketahui dan yang pasti akan Anda gunakan sepanjang karier Anda.
[ Pembaca juga menyukai:Manajemen paket Linux dengan YUM dan RPM ]
Menemukan paket
nslookup
perintah adalah salah satu yang sering Anda gunakan tetapi tidak diinstal pada salah satu sistem di pekerjaan baru Anda. Anda ingin menginstalnya tetapi Anda tidak dapat mengingat paket mana yang memuatnya dan mencoba menginstalnya sebagai nslookup
gagal.
# dnf -y install nslookup
Last metadata expiration check: 2:44:51 ago on Tue 10 Nov 2020 03:27:27 PM CST.
No match for argument: nslookup
Error: Unable to find a match: nslookup
Untuk menemukan paket yang berisi nslookup
, Anda dapat melakukan pencarian "terbalik" menggunakan rpm
perintah.
# rpm -qf nslookup
error: file /root/nslookup: No such file or directory
Apa yang salah di sini? rpm
perintah tidak dapat menemukan nslookup
tetapi diinstal karena Anda telah menggunakannya. Tunggu. Lihat jalurnya:/root/nslookup
. Tidak ada nslookup
perintah di direktori (rumah root) Anda saat ini. Cari nslookup
menggunakan which
perintah dan kemudian keluarkan rpm
perintah.
# which nslookup
/usr/bin/nslookup
# rpm -qf /usr/bin/nslookup
bind-utils-9.11.13-6.el8_2.1.x86_64
Anda melihat nslookup
adalah bagian dari bind-utils
kemasan. Sekarang Anda dapat menyalinnya ke sistem Anda yang lain dan menggunakannya seperti biasa.
# nslookup google.com
/opt/nslookup: error while loading shared libraries: libdns.so.1107: cannot open shared object file: No such file or directory
Kesalahan memberitahu Anda bahwa nslookup
perintah memiliki dependensi yang belum terpenuhi pada sistem baru tempat Anda menyalinnya. Solusinya adalah menginstalnya satu per satu ke setiap sistem menggunakan DNF/YUM.
Mengungkapkan ketergantungan paket
Anda sangat menyukai nslookup
perintah, dan Anda ingin membuatnya tersedia di semua sistem Anda. Anda menyadari setelah upaya yang gagal bahwa Anda tidak dapat begitu saja menyalinnya ke sistem lain dan mengharapkannya berfungsi. Setelah banyak penelitian, Anda menemukan bahwa nslookup
perintah memiliki beberapa dependensi yang harus dipenuhi. Apa saja dependensi itu?
# dnf deplist nslookup
Last metadata expiration check: 3:00:24 ago on Tue 10 Nov 2020 03:27:27 PM CST.
Apakah ini berarti tidak ada ketergantungan untuk nslookup
? Tidak. Ini berarti Anda mencoba menemukan dependensi untuk sebuah perintah, bukan untuk sebuah paket.
# dnf deplist bind-utils
Last metadata expiration check: 0:00:14 ago on Tue 10 Nov 2020 06:29:37 PM CST.
package: bind-utils-32:9.11.13-6.el8_2.1.x86_64
dependency: /usr/libexec/platform-python
provider: platform-python-3.6.8-23.el8.i686
provider: platform-python-3.6.8-23.el8.x86_64
dependency: bind-libs(x86-64) = 32:9.11.13-6.el8_2.1
provider: bind-libs-32:9.11.13-6.el8_2.1.x86_64
*** longer list of dependencies ***
dependency: rtld(GNU_HASH)
provider: glibc-2.28-101.el8.i686
provider: glibc-2.28-101.el8.x86_64
Ingat bahwa paket memiliki dependensi. Mencantumkan dependensi dapat bermanfaat jika Anda ingin memenuhinya secara manual atau jika menurut Anda dependensi baru dapat mengganggu atau tidak kompatibel dengan paket dan dependensi yang sudah diinstal pada sistem Anda.
Mengidentifikasi repositori
Anda melihat sesama sysadmin menggunakan alat informasi perangkat keras (hwinfo
) perintah pada sistemnya. Anda mencoba perintah di sistem Anda tetapi Anda menerima kesalahan "perintah tidak ditemukan". Anda kemudian mencoba menginstalnya.
# dnf -y install hwinfo
Last metadata expiration check: 0:09:34 ago on Tue 10 Nov 2020 06:42:15 PM CST.
No match for argument: hwinfo
Error: Unable to find a match: hwinfo
Anda meminta rekan kerja Anda untuk memberi tahu Anda dari mana dia mendapatkan hwinfo
kemasan. Dia melakukan kueri berikut untuk menemukan sumbernya.
# dnf list hwinfo
Last metadata expiration check: 0:11:17 ago on Tue 10 Nov 2020 06:42:15 PM CST.
Installed Packages
hwinfo.x86_64 21.47-9.el8 @epel
Anda perhatikan bahwa sumber tampaknya merupakan repositori yang diidentifikasi sebagai epel
. Anda selanjutnya memintanya untuk memberi tahu Anda cara mengatur epel
gudang. Dia ingat epel . itu sebenarnya adalah paket RPM yang dapat diinstal tetapi tidak ingat nama lengkapnya. Dia melakukan kueri berikut untuk mengidentifikasinya.
# rpm -qa |grep epel
epel-release-8-8.el8.noarch
Sekarang Anda dapat menginstal epel-release
paket dan kemudian instal hwinfo
paket.
Catatan:epel-release
repositori adalah Paket Ekstra untuk konfigurasi repositori Enterprise Linux dan merupakan hal pertama yang saya instal pada sistem baru yang tidak memilikinya.
[ Unduhan gratis:Lembar contekan perintah Linux tingkat lanjut. ]
Menutup
Linux memberi administratornya banyak utilitas dan perintah praktis untuk menemukan informasi tentang sistem dan komponennya. Anda perlu menambahkan perintah dan utilitas ini ke kotak alat sysadmin Anda. Seperti yang Anda lihat dari artikel ini, Anda tidak perlu mengetahui setiap opsi perintah yang tidak jelas untuk mendapatkan apa yang Anda butuhkan. Gunakan man
halaman untuk itu.