[Pardus-kullanicilari] Seçilmiş paketler ile yerel pisi deposu kurulumu

Erkan Altan ealt78 at gmail.com
9 Eki 2007 Sal 07:10:17 EEST


Kendi sorularımın cevabını kendim vereceğim :)

- Bir dizindeki paketler için pisi-index.xml dosyasını nasıl yeniden
> oluştururuz?


Eğer herhangi bir ikili paket deposunun indeksini oluşturmak istiyorsak o
dizine gidip pisi'ye index komutunu veriyormuşuz, o kadar:

$pisi index

deneme diye bir dizin açıp, içine birkaç paket atıp hemen bir deneme yaptım.
Fakat aşağıdaki hata ile karşılaştım:

# pisi --debug index deneme/
DEBUG: PiSi API initialized
* deneme/ altındaki PiSi dosyalarının bir indeksi yapılıyor
Sistem Hatası: Program Sonlandırıldı.
exceptions.AttributeError: 'NoneType' object has no attribute 'obsoletes'
Genel yardım için lütfen 'pisi help' komutunu kullanınız.
Geri-iz:
  File "/usr/bin/pisi", line 89, in ?
    cli.run_command()
  File "/usr/lib/pardus/pisi/cli/pisicli.py", line 108, in run_command
    self.command.run()
  File "/usr/lib/pardus/pisi/cli/commands.py", line 1098, in run
    skip_signing = ctx.get_option('skip_signing'))
  File "/usr/lib/pardus/pisi/api.py", line 386, in index
    index.index(repo_dir, skip_sources)
  File "/usr/lib/pardus/pisi/index.py", line 104, in index
    obsoletes_list = map(str, self.distribution.obsoletes)
DEBUG: PiSi API finalized

obsoletes_list'in oluşturulması ile ilgili bir sıkıntı vardı. Tavsiye
etmeyeceğim ve edilmeyecek bir şey yaptım. /usr/lib/pardus/pisi/index.py
dosyasında, aşağıdaki satırları açıklama olarak kapattım:

104: #        obsoletes_list = map(str, self.distribution.obsoletes)
108: #            if pkg_name not in obsoletes_list:

Aşağıdaki şekilde yine bazı hata/uyarı mesajları aldım:

# pisi --debug index
DEBUG: PiSi API initialized
Şu andaki dizini indeksliyor.
* . altındaki PiSi dosyalarının bir indeksi yapılıyor
./acerhk-0.5.34-3-44.pisi paket indeksine ekleniyor
./3ddesktop-0.2.9-1-2.pisi paket indeksine ekleniyor
./acl-2.2.44-6-6.pisi paket indeksine ekleniyor
DEBUG: "gpg --detach-sig pisi-index.xml" için dönüş değeri 2
Program sonlandırıldı.
pisi.file.Error: HATA: gpg --detach-sig pisi-index.xml çalışmadı
Genel yardım için lütfen 'pisi help' komutunu kullanınız.
Geri-iz:
  File "/usr/bin/pisi", line 89, in ?
    cli.run_command()
  File "/usr/lib/pardus/pisi/cli/pisicli.py", line 108, in run_command
    self.command.run()
  File "/usr/lib/pardus/pisi/cli/commands.py", line 1103, in run
    skip_signing = ctx.get_option('skip_signing'))
  File "/usr/lib/pardus/pisi/api.py", line 391, in index
    index.write(output, sha1sum=True, compress=pisi.file.File.bz2, sign=
pisi.file.File.detached)
  File "/usr/lib/pardus/pisi/pxml/autoxml.py", line 476, in write
    self.writexml(uri, tmpDir, sha1sum=sha1sum, compress=compress,
sign=sign)
  File "/usr/lib/pardus/pisi/pxml/xmlfile.py", line 91, in writexml
    f.close()
  File "/usr/lib/pardus/pisi/file.py", line 202, in close
    raise Error(_("ERROR: gpg --detach-sig %s failed") % self.localfile)
DEBUG: PiSi API finalized

Fakat bu sefer pisi-index.xml dosyam düzgün bir şekilde oluştu ve oluşan
depoyu başarılı bir şekilde pisi'ye ekleyebildim.

- Bir paketin oyun olup olmadığını otomatik olarak nasıl tespit edebiliriz?


Sistemin sembolik linklerle de doğru çalıştığını gördükten sonra, geriye tek
sorunum kalmıştı bir paketin oyun olup olmadığını tespit etmek ve buna göre
bir dizine sembolik linklerini atmak.

Burada da "$pisi info paketdosyasi.pisi" komutu yardımıma yetişti. (*)

Örneğin "$pisi info enemy-territory | grep Bileşen" gibi bir komutla
"Bileşen: applications.games" çıktısını alıyor ve bir paketin oyun olduğunu
tespit edebiliyordum.

Sonra aşağıdaki gibi küçük bir betikle depo dizini içerisindeki oyunları
otomatik olarak temizleyebildim.

#!/bin/bash

for f in $(ls *.pisi); do
    fs=$(pisi info "$f" | grep applications.games)
    if [ "x$fs" != "x" ]
    then
        echo "$f ise a game, deleting."
            rm $f
    fi
done

Çok hızlı çalışmıyor ama yine de iş görüyor :)

Şimdi geriye sadece "$pisi index" komunda aldığım "obsoletes_list" hatasının
sebebini bulmak ve gerekiyorsa böcekkıran diyarına (**) bildirmek kaldı.

- Uygulayabileceğim alternatif yöntemler hakkında fikriniz var mı?


Bulduğum yöntemler işimi görecek gibi ama başka fikirlere de açığım.

Sağlıcakla,

(*) PISI'yi seviyorum...
(**) http://hata.pardus.org.tr/
-------------- sonraki bölüm --------------
Bir HTML eklentisi temizlendi...
URL: http://liste.pardus.org.tr/pardus-kullanicilari/attachments/20071009/88041e3e/attachment-0001.htm 


Pardus-kullanicilari mesaj listesiyle ilgili daha fazla bilgi