Jak szybko utworzyć lokalne repozytorium apt dla losowych pakietów przy użyciu dystrybucji Linuksa opartej na Debianie?

20

Niektóre sytuacje wymagają ręcznego zainstalowania pakietu lokalnego przy użyciu dpkg -i <packagename>. Czasami przydatne może być wykorzystanie funkcjonalności apttego pakietu, więc pytanie brzmi:

Jak szybko utworzyć lokalne repozytorium losowych pakietów przy użyciu dystrybucji Linuksa opartej na Debianie - takiej jak Xubuntu 13.04 / Ubuntu?


źródło
Po prostu dla ciebie. Zazwyczaj jest to, aby postępować zgodnie dpkg -i <packagename>z apt-get -f installcelu załadowania wymaganych pakietów. Ponadto, zwykłą rzeczą do stworzenia apt repos dla Debiana jest reprezentpro.
Faheem Mitha
Uważam, że reprezentpro jest pomocny
Gilles 'SO - przestań być zły'
Dziękuję za twoje komentarze. @Faheem Mitha: Czy możesz krótko rozwinąć dlaczego działa aptz --fix-brokenbyłyby wymagane po zainstalowaniu pakietu z lokalnym dpkg -i? Czy dpkg nie zająłby się tym? I czytać może być wymagane po raz pierwszy apt jest prowadzony? @ FM & Gilles: O reprezentpro . Wydaje się użyteczne, gdybym mógł uruchomić go (nie jestem pewien co do struktury katalogu, zawartości 3 plików lub parametrów w czasie wykonywania). Spróbuję ponownie i zaktualizuje lub opublikuje pełne pytanie.
1
@ illuminÉ: dpkgnie rozwiązuje zależności, ale aptrozwiązuje. dpkgbędzie ostrzegał o zepsutych zależnościach, ale ma niski poziom, więc nie będzie próbował ich naprawić. dpkg -i *.debNastępnie apt-get -f installjest standardową procedurą. Istnieje błąd na liście życzeń, który aptsam sobie radzi w przypadku instalacji pakietu lokalnego, i jest nawet łatka, jak sądzę, ale nie została jeszcze zaimplementowana. Zobacz, jak apt-get install może również instalować lokalne pliki pakietów , pierwotnie złożone w 1999 roku.
Faheem Mitha,
@ illuminÉ Wyrażenie zainteresowania tą funkcją nie zaszkodzi. Myślę, że im więcej osób (grzecznie) wyrazi zainteresowanie, tym większe jest prawdopodobieństwo, że zostanie ono wdrożone. Zauważ też, że gdebi jest alternatywą, jak zauważono w zgłoszeniu błędu. To chyba jeden z powodów, dla których nie został wdrożony. Chociaż posiadanie takiej podstawowej funkcjonalności po części apt byłoby lepsze niż posiadanie tej funkcjonalności jako części innego pakietu.
Faheem Mitha,

Odpowiedzi:

29

Należy to odróżnić od sytuacji, w której próbujesz replikować pełne drzewo pakietów z oficjalnego repozytorium i priorytetu źródeł dostrajających . Paczki losowe oznaczają paczki wirtualne, paczki kompilowane lokalnie lub fragmentarycznie kopiowane w celach testowych. Oto prosta konfiguracja oparta na już nieaktualnej dokumentacji .

Najpierw utwórz katalog do hostowania pakietów:

mkdir <packagedir>

Następnie przenieś tam swoje pliki pakietu .deb. Wykonaj to polecenie z katalogu powyżej właśnie utworzonego (upewnij się, że uprawnienia na to pozwalają!):

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

Teraz należy utworzyć plik z rozszerzeniem .listw /etc/apt/sources.list.d/z treścią:

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

i zaktualizuj bazę danych apt:

apt-get update

W tym momencie pakiety w naszym lokalnym repozytorium mogą być instalowane jak każdy inny pakiet apt-get install <packagename>. Kiedy nowe pakiety są dodawane do lokalnego repozytorium, wymagane dpkg-scanpackagespolecenie musi zostać ponownie wydane, aby zaktualizować plik Packages.gz i aptmusi zostać zaktualizowane przed udostępnieniem nowych pakietów. Mam nadzieję, że może to być przydatne do celów testowych .

44370
źródło
6
W przypadku nowego apt 1.1, potrzebny jest [trusted=yes]pomiędzy debi file:///URI (patrz sources.list(5)strona podręcznika ), w przeciwnym razie apt-get updatezawodzi z powodu braku podpisu.
vinc17
2

Jeśli chcesz utworzyć repozytorium z pełną strukturą, której potrzebujesz do narzędzi takich jak debootstrap, najprostszym sposobem, jaki znalazłem, jest:

  1. Utwórz katalog repozytorium.

    # mkdir -p /opt/debian
    
  2. Utwórz podkatalog conf.

    # mkdir /opt/debian/conf
    
  3. Utwórz plik / opt / debian / conf / distribution z zawartością taką jak ta (dostosuj odpowiednio do używanej dystrybucji):

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  4. Zaimportuj paczkę za pomocą przedstawiciepro.

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  5. Zaimportuj kilka pakietów za pomocą powłoki for-loop, np. Wszystko z pamięci podręcznej APT:

    # cd /var/cache/apt/archives
    # for DEB in *.deb; do reprepro -b /opt/debian includedeb jessie $DEB; done
    

Spowoduje to utworzenie niepodpisanego archiwum. Może być używany z debootstrap z opcją --no-check-gpg.

Andrew Klaassen
źródło