Apa yang dilakukan apt-get install ...
perintah?
Ketika saya memasukkan apt-get install ...
perintah, ada beberapa teks yang muncul di layar, tetapi itu tidak memiliki informasi yang cukup untuk saya. Saya ingin tahu apakah ada file yang dibuat / diedit, layanan apa pun dimulai dan aktivitas lainnya ...
Apakah ada .sh
file yang dieksekusi saat apt-get install ...
dijalankan? Jika demikian, bagaimana saya bisa melihat konten sh
file itu?
Alasan untuk pertanyaan ini baru-baru ini saya mencoba menginstal tomcat7 dengan apt-get install tomcat7
. Semuanya berfungsi dengan baik sampai saya menginstal tomcat7-admin
(aplikasi web manajer), server menjadi tidak responsif terhadap permintaan apa pun. Saya mencoba ini berkali-kali, dan ini selalu terjadi.
apt
software-installation
TrungDQ
sumber
sumber
apt-get
sedang diganti olehapt
. Pengganti belum lengkap, tetapi berfungsi untukinstall
,upgrade
dandist-upgrade
di antaranya.Jawaban:
Sebagian besar,
apt-get
melakukan hal-hal berikut:dpkg
untuk menginstalnya.dpkg
akan:preinst
,,postinst
(danprerm
,postrm
sebelum ini, jika suatu paket sedang ditingkatkan)Anda mungkin tertarik dengan skrip pengelola, yang biasanya berlokasi di
/var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}
. Ini biasanya skrip shell, tetapi tidak ada aturan keras. Sebagai contoh:sumber
Singkatnya :
apt-get install
melakukan semua yang diperlukan agar sistem Anda dapat berhasil menjalankan aplikasi perangkat lunak yang baru diinstal.Lebih lama:
Persiapan:
Dari halaman manual :
Paket-paket tersebut disimpan di repositori di jaringan. Jadi,
apt-get
unduh semua yang diperlukan ke direktori sementara (/var/cache/apt/archives/
). Mereka akan diunduh dari web- atau ftp-server. Mereka ditentukan dalam apa yang disebutsources.list
; daftar repositori. Sejak saat itu mereka diinstal satu per satu secara prosedural.Yang pertama adalah yang tidak memiliki ketergantungan lebih lanjut; jadi tidak ada paket lain yang harus diinstal untuk mereka. Melalui itu, paket lain (yang sebelumnya memiliki dependensi) tidak lagi memiliki dependensi. Sistem terus melakukan proses itu berulang-ulang sampai paket yang ditentukan diinstal.
Setiap paket menjalani prosedur instalasi.
Instalasi paket:
Dalam distribusi Linux berbasis Debian, seperti Ubuntu, paket-paket itu dalam format standar yang disebut: deb - Format paket biner Debian .
Paket seperti itu berisi file yang akan diinstal pada sistem. Juga mengandung file kontrol . File itu berisi skrip yang harus dijalankan sistem pengemasan dalam situasi tertentu; skrip pengelola yang disebut . Skrip tersebut dibagi menjadi:
preinst
: sebelum instalasi file ke dalam sistem filehierarchypostinst
: setelah instalasiprerm
: sebelum penghapusan instalasipostrm
: setelah penghapusan instalasiAda gambar yang menarik, menunjukkan prosedur pemasangan paket baru:
Ada juga lebih banyak file kontrol, yang paling penting adalah sebagai berikut:
control
: Daftar dependensi, dan informasi berguna lainnya untuk mengidentifikasi paketconffiles
: Daftar file konfigurasi (biasanya yang ada di/etc
)debian-binary
: berisi versi paket-deb, saat ini 2.0md5sums
: Daftar md5sums setiap file dalam paket untuk memverifikasitemplates
: File dengan deskripsi kesalahan dan dialog selama instalasisumber
Untuk hal-hal di bawah tenda yang sebenarnya , Anda harus mengambil sumber Apt. Cukup sederhana jika Anda memiliki repositori sumber yang diaktifkan:
The
apt-get
perintah itu sendiri tinggal dicmdline/apt-get.cc
. Sangat sulit untuk membaca tetapi sebagian besarapt-get
tindakan dijabarkan cukup luas di sana. Namun instalasi, dipetakan melaluiDoInstall
fungsi yang hidup diapt-private/private-install.{cc,h}
.Anda harus ingat bahwa apt-get hanyalah satu sisi dari koin.
dpkg
sedang menangani instalasi yang sebenarnya tetapiDoInstall
tidak tahudpkg
secara langsung.apt-get
sebenarnya mengejutkan paket-manager agnostik. Semua fungsionalitas disarikan melaluiapt-pkg/package-manager.cc
Saya hanya melihat sebentar tetapi bahkan di sana saya tidak bisa melihat di mana ini sebenarnya melekat pada
dpkg
sistem. Beberapa di antaranya tampaknya dikonfigurasi secara otomatisapt-pkg/aptconfiguration.cc
tetapi ini adalah sumur yang dalam. Anda bisa menghabiskan waktu berhari-hari untuk mengungkap ini.Dokumentasi sumbernya bagus. Anda dapat melakukan hal-hal yang lebih buruk daripada menelusuri setiap file dan membaca header untuk mengetahui apa yang sebenarnya terjadi.
sumber
Ada beberapa jawaban fantastis di sini yang lebih baik daripada yang pendek ini, tetapi sesuatu yang mungkin Anda pertimbangkan untuk membantu Anda mendapatkan pemahaman yang lebih baik tentang perubahan yang dibuat oleh manajer paket adalah Docker . Anda dapat membedakan perubahan yang dibuat dalam wadah menggunakan
docker diff <container>
dan itu akan menunjukkan kepada Anda semua perubahan. Ini sangat berguna untuk melihat di bawah tenda untuk melihat apa yangapt-get install
terjadi pada suatu sistem. Pencarian cepat akan memberi Anda beberapa sumber daya untuk membantu menerapkan ini.sumber