Oke, saya mengerti bagaimana saya dapat menggunakan apt-get {install|upgrade|remove} mypackages
untuk menginstal, memutakhirkan, atau menghapus binari serta file data konfigurasi dan dependensi (sebenarnya, remove
hanya akan menghapus binari kecuali jika bendera tambahan disediakan).
Saya tidak mencari bagaimana itu digunakan sebagai man
menggambarkan ini, tetapi apa yang dilakukan tingkat tinggi. Tujuan akhir saya adalah untuk membuat sarana bagi saya untuk menginstal dan mengelola beberapa perangkat lunak khusus (dibuat oleh file make) pada beberapa mesin jarak jauh, dan saya perlu belajar lebih banyak tentang prosesnya. Jika jawaban atas pertanyaan ini didasarkan pada distribusi mana yang digunakan, harap sesuaikan dengan Debian.
Selain cara kerjanya secara umum, saya memiliki pertanyaan spesifik berikut:
- Bagaimana klien yang mengakses repositori apt melacak file?
- Haruskah repositori di-host pada sistem operasi yang sama (mis. Apakah repositori dapat di-host di redhat)?
- Bagaimana lokasi untuk menginstal file ditentukan? Apakah ini ditentukan oleh
.deb
file? - Bagaimana mesin jarak jauh mengakses repositori? Apakah itu hanya ftp (s) atau http (s)?
- Apakah mesin yang meng-hosting repositori menjalankan perangkat lunak khusus (seperti gitlab untuk repositori git), atau apakah itu hanya beberapa sistem file terstruktur?
sumber
Jawaban:
Anda perlu melihat di https://wiki.debian.org/Packaging - tutorial pengemasan di sana akan banyak membantu Anda, serta bagian dari panduan pengelola baru.
Untuk pertanyaan Anda, agar:
Repositori berisi file "daftar". Misalnya., Http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
mengunduh file daftar ini, dan menyimpannya di/var/lib/apt/lists
. File daftar mencantumkan semua paket termasuk sekelompok metadata dan URL relatif untuk menemukan .deb di. (Ini adalah file teks biasa yang dapat dibaca manusia, jadi Anda bisa melihatnya).OS tidak masalah. Anda dapat meng-host-nya di Windows, jika mau. (Yah, Anda mungkin akan mengalami masalah dengan nama file yang Windows tidak suka.) (Lihat juga # 4 dan # 5).
Ya, itu ada di dalam file deb. File deb sebenarnya adalah arsip (menggunakan
ar
). Di dalamnya ada beberapa file tar; salah satunya adalah (pada dasarnya) diekstraksi ke/
.Itu hanya HTTP (atau HTTPS, atau FTP, atau ... apt-get mendukung banyak protokol). Tidak ada yang istimewa. Perhatikan bahwa ada file Rilis, ditandatangani dengan gpg, yang menjamin integritas bahkan tanpa HTTPS. Mirror Debian kebanyakan menggunakan HTTP, bukan HTTPs. (Beberapa mendukung HTTPS juga untuk kerahasiaan).
Itu hanya sistem file terstruktur.
Ikhtisar tingkat tinggi yang cepat tentang bagaimana apt-get berinteraksi dengan sumber paket:
Anda mengonfigurasi sumber mana yang harus dilihat dalam file sources.list Anda. Pertimbangkan garis seperti:
deb
mengatakan ini adalah sumber untuk mendapatkan file .deb (binary); lalu ada awalan URL, suite / rilis ("stretch"), dan komponen ("main").apt-get memiliki daftar arsitektur, ia mendapatkannya dari dpkg. Mari mengatakan
dpkg --print-architecture
adalahamd64
. apt-get sekarang dapat membangun URL yang sebenarnya akan diunduh dari, dengan menggabungkan awalan URL, kata "dists", suite, komponen, dan arsitektur. Kemudian ia mengatasi beberapa nama file tetap, seperti "Packages.xz". Itu memberikan URL di atas (dalam # 1). Ada beberapa file lagi dengan nama / jalur yang ditentukan, seperti file Release http://http.us.debian.org/debian/dists/stretch/Release dan tanda tangannya (sama, dengan .gpg ditambahkan). Ini semua adalah file teks biasa (mungkin dikompresi). File rilis berisi checksum untuk file-file lain yang akan diunduh oleh apt-get, seperti Packages.xz.File Packages.xz mencantumkan semua paket di suite / nama kode / arsitektur itu. Ini juga memberikan path tempat file itu berada; misalnya
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Ketika Anda meminta apt-get untuk mengunduh paket, ia menggunakan lokasi itu + URL dasar untuk mengunduh paket, sehingga paketnya ada di http://http.us.debian.org/debian/pool/main/0/0ad /0ad_0.0.21-2_amd64.deb
Direktori menarik lainnya adalah
source
bukanbinary-amd64
. Itu digunakan untukdeb-src
entri Anda ; ini berisi info tentang paket-paket sumber (dan sebaliknya cukup mirip).Ada beberapa hal lain (semuanya opsional, saya percaya) yang dapat menjadi bagian dari repositori (yaitu, tersedia melalui HTTP): berbeda antara versi berbeda dari file Packages.xz; terjemahan deskripsi paket, daftar lengkap setiap file yang dapat diinstal dan paket miliknya (Contents-amd64.gz, digunakan oleh eg, apt-file, bukan oleh apt-get) dll. Kemungkinan ini tidak relevan bagi Anda, tetapi Anda dapat melihat semuanya dengan menjelajahi http://http.us.debian.org/debian/dists/stretch/ ; kebanyakan dari mereka adalah file teks biasa.
Semua file ini adalah teks biasa. Secara teori, mereka dapat dibuat dengan tangan. Dalam praktiknya, semua orang menggunakan salah satu alat generasi repositori ini . Di sini — dan saya mengingatkan ini adalah pilihan yang dibuat sejak lama, jadi mungkin sudah ketinggalan zaman — kami menggunakan mini-dinstall. Output dari alat-alat itu adalah file biasa atau, paling buruk, symlink. Anda dapat rsync mereka ke server web apa pun yang Anda inginkan.
sumber
/var/lib/apt/lists/
. Konten diunduh oleh apt-file dan auto-apt.