2017-08-28 163 views
5

Linux aygıtları için çevrimdışı bir SDK ile bir güncelleme/yükseltme hizmeti geliştiriyorum. Buradaki fikir, Linux hizmetlerini güncelleme/yükseltme işleminin bir çevrimdışı aygıta çoğaltılmasıdır. "Çevrimdışı" cihaz, "İnternet" e ulaşabiliyor, ancak sadece SDK'yı kullanarak ve diğer cihazlarla (multi-hop) mesaj alışverişi yapabiliyor. Cihazlar farklı mimarilerden gelmektedir, bu nedenle "internet" kabiliyetine sahip olan cihaz (ağ geçidi) farklı bir mimariye yükseltilecek/gönderilecek paketleri talep edip indirebilmelidir. Ağ geçidi aygıtı, indirilen talep edilen paketleri güncellemelerden (CDN olarak davranmak için), repo taleplerinden sakınmak için yetenekli olmalıdır.Linux "apt-get update" iş akışı

Çevrimdışı SDK, çoklu atlama üzerinden internet erişilebilirliğini garanti ettiğinden, çevrimdışı aygıtın IP adresi yok ve iletişim biçimi alakasız.

İhtiyacım olan şey - Linux'taki güncelleme/yükseltme iş akışı hakkında bana bir miktar yardım veya yönlendirme sağlamak için birisine ihtiyacım var.

Ben bugüne kadar bulunmuş Ne:

  • güncelleme

    • güncelleme komut yükler
    • bilmiyorum /etc/apt/sources.list güncelleme Her satırı giderir nasıl /etc/apt/sources.list üzerinde, karşılık gelen repo klasörleri ile eşleşen "deb" a "link" ve "argümanlar" yüklediği bir işlevi var gibi görünüyor. Bundan sonra, çözümlenen her bağlantıdaki karşılık gelen "Paketler" dosyalarını indirmeye başlar.
  • yükseltme

    • güncellenen yerel "Paketler" dosya ve repo "Paketler" dosyaları arasında bir karşılaştırma yapar.

güncellemesinden herhangi bir kaynak kod var mı/mevcut yükseltme? apt repos'ta bazı web araması yaptım, ancak güncelleme/yükseltme işlevlerini bulamadım.

+0

İnternet özellikli aygıtınızı yalnızca beyaz liste tabanlı bir proxy sunucusu veya yerel bir veri havuzu olarak nasıl kuruyorsunuz? Hiçbir şey programlamak zorunda kalmazsınız ve kırılgan bir ev yapımı hack yerine, sağlam ve desteklenen bir çözüm elde edersiniz. – spectras

+0

[Bu] hakkında ne (https://github.com/Debian/apt/blob/1d9e29c9e2a5591b42a99a721b901fc003ed9149/apt-pkg/upgrade.cc) ve [bu] (https://github.com/Debian/apt/blob/ 1d9e29c9e2a5591b42a99a721b901fc003ed9149/apt-pkg/update.cc)? –

cevap

0

@spectras Ağ geçidinin proxy kurulumuna gelince, bu benim amacım yerine getirmiyor. Çevrimdışı cihaz, güncelleme isteğini ağ geçidine yapar. Ağ geçidinin internet sınırlamaları olmadığını varsayabiliriz. Ağ geçidinin ayna yapmak için gereksiz olduğunu düşünüyorum. Bu işlemi, çevrimdışı SDK'ya çoğaltmak için güncelleme/yükseltme mekanizmasıyla daha çok ilgileniyorum.

Şimdilik benim sorunum çevrimdışı aygıtın bir ARM olduğunu ve ağ geçidinin x64 olduğunu ve x64 mimarisinde bir koldan sources.list dosyasından bir güncelleştirme isteğinde bulunduğumda, ikili güncelleştirme hatasıyla yanıt veriyor yanlış yapı.

Bu yüzden ağ geçidinin mimariyi nasıl görmezden geldiğimi ve Paketler güncellemesini sources.list'e göre indirdiğimi bilmem gerekiyor.

@BenjaminW. Bu soruyu yayınlarken, kaynaklara geçmeye ve apt kaynaklarını indirmeye başladım ve bahsettiğiniz gibi (yükseltme ve yükseltme) apt-get load ikili dosyalarını fark ettim. Bahşiş için teşekkür ederim.Ancak, şimdi güncelleme ve yükseltme mekanizmasının nasıl çalıştığını daha iyi anlamaya çalışıyorum: - Güncellemenin /etc/apt/lists/sources.list dosyasını yüklediğini biliyorum - sources.list dosyasını çevrimdışı cihazdan aktarıyorum (ARM)) ağ geçidi cihazına (x64) ve ağ geçidindeki güncellemeye başlar. - Ağ geçidindeki güncelleştirme, ARM'den koyduğum kaynakları okur ve giderilmeye başladığında, hatalar gösterilir "Yapılandırılan dosyanın edinilmesi atlama ... mimariyi desteklemiyor ..."

Ne var? Yapmaya çalışıyorum, ağ geçidini mimariyi görmezden gelmek ve source.list'i ARM'den uygulamak. Sadece paketlere ihtiyacım var.

Başka düşünceleriniz veya alternatif bir yaklaşımınız var mı?

+0

@spectras Cevabımı kontrol edin lütfen. –

+0

@BenjaminW. Cevabımı kontrol edin lütfen. –

+0

* Sidenote: Sorunuzu cevap oluşturmak yerine düzenlemelisiniz. Cevapları soruya cevap vermek amacıyla vardır. * Neyse, dediğim gibi, en iyi yolu sadece ağ geçidi bir proxy sunucusu yapmaktır. eğer bu, ister hangisi yükleyin gibi [ 'tinyproxy'] (https://tinyproxy.github.io/) mesela, bunun bu iş için mükemmeldir az yer kaplar. Sonra diğer cihazlarda sadece Edinme :: http 'ekleyin :: Vekil "http: // yourproxyaddress: proxyport";' senin '/ etc/apt/apt.conf' ve voila için. – spectras