Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-06-07 20:50:40

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Tworzenie repozytorium sieciowego

Chcę (właściwie to muszę) zrobić porządne repozytorium, z sekcjami, podpisami cyfrowymi, etc.

Najpierw próbowałem ręcznie za pomocą dpkg-scanpackages, do pewnego stopnia nawet się udało. Stworzyłem odpowiednią strukturę katalogów, wrzuciłem paczki gdzie trzeba, zindeksowałem. Przetestowałem, działa. Utworzyłem podpis cyfrowy, przetestowałem, działa. Zaimportowałem klucz repozytorium i nagle nie działa.

Próbowałem też automagicznie za pomocą debarchivera, ale w ogóle nie mogłem go rozgryźć.

Podzieli się ktoś swoim przepisem? Ja już któryś dzień z kolei ślęczę...


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#2  2008-06-09 16:39:19

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Tworzenie repozytorium sieciowego

Jako tako udało mi się zrobić repozytorium za pomocą reprepro.

Problem mam tylko z pakietami źródłowymi, ale o tym później.


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#3  2008-06-22 19:58:36

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Tworzenie repozytorium sieciowego

AgayKhan był zainteresowany tematem, więc piszę jak się reprepro posłużyć. Na razie będzie to książkowy przykład bylejakości (ale działającej), jak lepiej to rozgryzę, to namażę ładny opis do FAQ.

Potrzebny jest pakiet reprepro i następujęce drzewo katalogów: conf/  db/  dists/  incoming/  pool/. Ja dodatkowo tworzę incomed/. Wszystkie polecenia będą wykonywane w katalogu, w którym utworzyliśmy te katalogi.

W katalogu conf tworzymy plik o nazwie  distributions o treści:

Kod:

Origin: Nazwa 
Label: Etykieta 
Suite: gałąź
Codename:  nazwa kodowa
Architectures: architektury
Components: sekcje 
Description: Opis
SignWith: Yes
DebIndices: Packages Release . .gz .bz2
UDebIndices: Packages . .gz .bz2
DscIndices: Sources Release . .gz .bz2

np.:

Kod:

Origin: Debian 
Label: Debian 
Suite: unstable
Codename:  sid
Architectures: i386 source
Components: main contrib non-free 
Description: OMFFSM!!11 Moje własne repozytorium!!11
SignWith: Yes
DebIndices: Packages Release . .gz .bz2
UDebIndices: Packages . .gz .bz2
DscIndices: Sources Release . .gz .bz2

Teraz tworzymy klucz, którym podpiszemy repozytorium. Ponieważ nie bardzo się orientuję, który z kluczy jest wykorzystywany do podpisania (gdzieś mi się o oczy obiło, że robi to zupełnie przypadkowo), najlepiej utworzyć osobne repozytorium kluczy z tylko jednym kluczem. Idealnym miejscem będzie conf/.gnupg/ (ustawić dobre prawa dla tego katalogu, żeby nikt sobie nie latał po nim!).

Kod:

gpg --homedir conf/.gnupg/ --gen-key

Najlepiej utworzyć klucz bez passphrase. Podpisywanie kluczem z passphrase jest nieco kłopotliwe.
(Oczywiście zamiast tworzyć nowy klucz można do tego repozytorium kluczy zaimportować istniejący.)

Skoro wszystko jest gotowe, możemy wreszcie zindeksować pakiety. Exportujemy zmienną GNUPGHOME

Kod:

export GNUPGHOME="conf/.gnupg/"

i:

1. Tylko pakiety binarne.
Pakiety *.deb umieszczamy w incoming/

Kod:

reprepro --ignore=wrongdistribution  -Vb . includedeb gałąź incoming/*.deb

Ponieważ includedeb może dodać naraz wiele pakietów, możemy użyć "*.deb"

2. Pakiety binarne i źródłowe.
W incoming/ umieszczamy pliki *.dsc, *.tar.gz, *.diff.gz (zakładajac, że wszystkie one występują w danym przypadku), *.deb i *.changes.

Kod:

reprepro --ignore=wrongdistribution  -Vb . include gałąź incoming/plik.changes

Polecenie include przyjmuje tylko jeden plik! Jeśli mamy więcej do dodania musimy albo pętlę for utworzyć, albo kilka razy wydać polecenie, zmieniając plik *.changes.
Ja robię to za pomocą takiego skryptu:

Kod:

#!/bin/bash
export GNUPGHOME="conf/.gnupg/"
gpg --list-keys #to tak dla pewności, że mam właściwy klucz ;)

echo -e " \e[32;1m*\e[0m \e[1mdodawanie pakietów:\e[0m"
PLIKI=($(ls incoming/*changes))
for PLIK in "${PLIKI[@]}"; do
    reprepro --ignore=wrongdistribution  -Vb . include hag $PLIK && \
    echo -e "    \e[32;1m*\e[0m $PLIK" | sed -re "s:incoming/(.*)_(.*)_(.*).changes:\1 \2:g"
done

read -p "Przenieść pliki z 'incoming/' do 'incomed/'? [t/N] " CLEAR
if [ -z $CLEAR ]; then
    CLEAR=N
fi
if [ $CLEAR = t ] || [ $CLEAR = T ]; then
    mv incoming/* incomed/
fi

Właściwie było w nim coś jeszcze, ale nie powinniście być zainteresowani. ;)

Jeszcze o podpisywaniu: jeśli mamy klucz bez passphrase, podpisze się bez problemu. Jeśli jest z passphrase należy dodać do reprepro flagę --ask-passphrase, ale to uciążliwe rozwiązanie (zwłaszcza jak skanujemy wiele plików *.changes). Można też skorzystać z gpg-agent, ale nie mam zielonego pojęcia jak go użyć.

Teraz wsadzić efekt (dists/ i pool/ wystarczy) na serwer lub zainstalować sobie serwer www (polecam lighttpd ;] lub boa, jeśli ma służyć tylko do tego repozytorium). Wpisy do repozytorium:

Kod:

deb http://adres.strony/katalog/ gałąź sekcja sekcja
deb-src http://adres.strony/katalog/ gałąź sekcja sekcja

dists/ i pool/ powinny być umieszczone w http://adres.strony/katalog/.

Tak na szybko i w skrócie to chyba wszystko. :)

Ostatnio edytowany przez azhag (2008-06-22 20:27:29)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#4  2008-06-22 20:35:27

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Tworzenie repozytorium sieciowego

jak podpisać pakiety
dpkg-buildpackage -rfakeroot -kid-klucza

Jak ktoś chce lokalne repo mieć , ale z debami podpisanymi kluczami, to
w sources list wpisać

Kod:

deb file:/scieżka/do/repozytorum gałąź sekcja sekcja

Ostatnio edytowany przez AgayKhan (2008-06-22 22:27:30)


born to be root
linux register user #362473

Offline

 

#5  2008-06-23 00:17:28

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Tworzenie repozytorium sieciowego

AgayKhan napisał(-a):

Jak ktoś chce lokalne repo mieć , ale z debami podpisanymi kluczami

sprostowanie: z repozytorium podpisanym
podpisanie pakietu (konkretnie są podpisywane *.dsc, nie *.deb) i podpisanie repozytorium to dwie różne sprawy


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#6  2008-06-23 08:40:39

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Tworzenie repozytorium sieciowego

No tak, pierdolnąłem głupotę jak zwykle.
****
Jak usunąć pakiet .deb z takiego repo ( nie ręcznie oczywiście)

Kod:

reprepro remove  gałąż pakiet

reprepro remove unstable libaa1 ( kasuje z repo deba libaa1
Jak usunąc wszystkie deby powstałe z danego zdebianizowanego źródełka ( czyli źródło aalib, deby libaa1-dev libaa1 libaa-bin)

Kod:

reprepro removesrc gałąź źródło

reprepro removesrc  unstable aalib
kasuje wszystkie deby powstałe z aalib

Ostatnio edytowany przez AgayKhan (2008-06-26 17:16:51)


born to be root
linux register user #362473

Offline

 

#7  2009-02-21 10:41:43

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Tworzenie repozytorium sieciowego

I coś mi szlag trafia .
Przy dodawaniu pakietów mam:

Kod:

The lock file './db/lockfile' already exists. There might be another instance with the
same database dir running. To avoid locking overhead, only one process
can access the database at the same time. Do not delete the lock file unless
you are sure no other version is still running!
There have been errors!

born to be root
linux register user #362473

Offline

 

#8  2009-02-21 10:50:59

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Tworzenie repozytorium sieciowego

Jeśłi jesteś pewien, że żaden inny proces nie działa na tej bazie, usuń ten plik.


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#9  2009-02-21 10:59:00

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Tworzenie repozytorium sieciowego

Kod:

Naruszenie ochrony pamięci

I tyle. To może być efektem aktualizacji gconf?


born to be root
linux register user #362473

Offline

 

#10  2009-02-21 11:12:01

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Tworzenie repozytorium sieciowego

gconf chyba odpowiada za konfigurację GNOME, który z reprepro nie ma niczego wspólnego

może spróbuj zeskanować od zera — usuń (jeszcze lepiej — skopiuj) db/, dists/ i pool/ (z ostatniego przenosząc pakiety do incoming/) i wykonaj reprepro

dopisek: aj, w pool/ nie ma *.changes, lepiej, żebyś miał ich kopię

Ostatnio edytowany przez azhag (2009-02-21 11:13:38)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#11  2009-02-21 12:41:00

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Tworzenie repozytorium sieciowego

Niestety nadal to samo. Muszę czekać do kolejnego upgradu.


born to be root
linux register user #362473

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)