XML File for repositories

Şuraya atla: kullan, ara
Bu makalenin geliştirilmeye ihtiyacı vardır. Eğer yardım edebilirseniz lütfen OpenSUSE Style Guide içerisinde yapın.

Eger yapacak birşeyler arıyorsanız articles that need expanding


Introduction


This page is about making a generic XML file for YaST and other repositories. The presentation can be downloaded at this location and was given at FOSDEM 2006 on Sunday during the speed talks.

Current situation


At the moment if you want a more or less complete SUSE experience, you need to add several repo's as described on Additional YaST Package Repositories

This means for 10.0 OSS, the normal, the JAVA and the extra repositories and possibly also some external repositories. Instead of looking up these URLs and enter them manually, I thought it would be better to have something like http://easyurpmi.zarb.org/

I first made a basic page in php on http://www.houghi.org/mirrors/main.php (not really usable) http://www.houghi.org/mirrors holds all the files.

It became clear very fast that an XML would be better.

Demand


It should be possible to have an hourly update of the XML file on a directory basis. Also it should be easy to write an interface (web, yast, script) where you enter or it reads you SUSE version and comes up with the correct URLs for you. e.g Belnet, Belgium : ftp://ftp.belnet.be/mirrors/ftp.opensuse.org/opensuse/distribution/SL-10.0-OSS/inst-source

Ideas


  • Have a script verify content every X hours, so an updated version is available.
  • Make a website like easyurpmi
  • Make a YaST module to handle this
  • Integrate it in a (new/existing) YaST module

Roadmap


Evaluate XML file structure

Data Requirements

Several things need to be included in the XML file.

Node: General

  • Version
  • Origin: opensuse.org, ...
  • Maintainer: SUSE Linux
  • Update timestamp

Node: Repository(/Mirror)

  • SUSE version: e.g. 10.0, 10.1, 10.1 Beta X or factory.
  • Architecture: e.g. i386, PPC and x86_64
  • Name of the mirror or repository
  • Description of Repository (Optional)
  • Country it is located
  • Protocol: e.g. ftp, http or rsync
  • URI: e.g. ftp.belnet.be
  • Trust: (Un-)official "vendor"
  • Path to data: e.g. mirrors/ftp.opensuse.org/opensuse/distribution
  • For mirrors: Directories that ARE available: e.g. ISOs, delta-iso, inst-source and inst-source-java

XML Proposal(s)

houghi

<?xml version="1.0" encoding="ISO-8859-1"?>
<mirrors_10.0_i386>
  <country CODE="AT">
    <mirror>
      <name>TU Wien</name>
      <protocol>ftp</protocol>
      <site>gd.tuwien.ac.at</site>
      <link>sys/linux</link>
    </mirror>
    <mirror>
      <name>Inode Wien</name>
      <protocol>ftp</protocol>
      <site>suse.inode.at</site>
      <link></link>
  </country>
</mirrors_10.0_i386>

FunkyM

  • Should contain all fields required and suit all currently known repositories
  • Should support all scenarios of package repositories (web, mounted, ...)
  • Minds future expansion
  • Might require further normalization, revisitning regarding new service/catalog concept
  • Yet requires changes for a valid DTD
  • Applicable to other distributions aside of SUSE Linux
<?xml version="1.0"?>

<repositories version="0.2">

<feed>
  <maintainer>SUSE Linux AG</maintainer>
  <source>http://repositories.opensuse.org/</source>
  <date>YYYY-MM-DDThh:mm:ss.sTZD</date>
</feed>

<catalog shortname="SUSE Base Installation">
  <name>SUSE Linux Installation</name>
  <description>Complete installation sources which will give you almost
  everything the boxed version has to offer.</description>
  <homepage>http://www.opensuse.org</homepage>

  <repository baseuri="sunsite.informatik.rwth-aachen.de" type="mirror" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
      <city>Aachen</city>
    </location>
    <name>Rheinisch-Westfälischen Technischen Hochschule (RWTH) Aachen</name>
    <scheme type="ftp" />
    <mirror copy="complete"/>
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/linux/opensuse/distribution/SL-10.0-OSS/inst-source/</path>
          <arch type="*" />
        </service>
        <service type="iso">
          <path>pub/linux/opensuse/distribution/SL-10.0-OSS/iso/</path>
          <arch type="i386">
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD1.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD2.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD3.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD4.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD5.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
          </arch>
        </service>
        <service type="torrent">
          <path>pub/linux/opensuse/distribution/SL-10.0-OSS/</path>
          <arch type="i386">
            <file type="torrent">
              <filename>SUSE-10.0-CD-OSS-i386-GM.torrent</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
          </arch>
        </service>
      </release>
    </distribution>    
  </repository>

  <repository baseuri="ftp.gwdg.de" type="mirror" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
      <city>Göttingen</city>
    </location>
    <name>Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen</name>
    <scheme type="http" />
    <scheme type="ftp" />
    <mirror copy="complete"/>
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/opensuse/distribution/SL-10.0-OSS/inst-source/</path>
          <arch type="*" />
        </service>
        <service type="iso">
          <path>pub/opensuse/distribution/SL-10.0-OSS/iso/</path>
          <arch type="i386">
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD1.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD2.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD3.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD4.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
            <file type="iso">
              <filename>SUSE-10.0-CD-OSS-i386-GM-CD5.iso</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
          </arch>
        </service>
        <service type="torrent">
          <path>pub/opensuse/distribution/SL-10.0-OSS/</path>
          <arch type="i386">
            <file type="torrent">
              <filename>SUSE-10.0-CD-OSS-i386-GM.torrent</filename>
              <size>0</size>
              <md5>MD5</md5>
            </file>
          </arch>
        </service>
      </release>
      <release version="factory" branch="unstable">
        <service type="Yast">
          <path>pub/opensuse/distribution/SL-10.0-OSS/inst-source/</path>
          <arch type="*" />
        </service>
      </release>
    </distribution>
  </repository>
</catalog>

<catalog shortname="SUSE Extras Java" />
<catalog shortname="SUSE Extras Commercial" />

<catalog shortname="SUSE Supplementary">
  <name>SUSE Linux Installation</name>
  <description>Generally, SuSE does not provide update packages with newer versions in the official update tree.
  Mainly for stablity and security reasons updates are usually just from v1.2.x to v1.2.y.
  However, there are many users who want or even need new versions (like v1.2.x to v2.6.y) to use with the
  official tree anyway. Some SuSE developers create and build new version and place them here.</description>
  <homepage>http://www.opensuse.org</homepage>

  <repository baseuri="ftp.suse.com" type="master" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
    </location>
    <name>Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen</name>
    <scheme type="http" />
    <scheme type="ftp" />
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/suse/x86_64/supplementary/KDE/update_for_10.0/yast-source/</path>
          <arch type="x86_64" />
        </service>
        <service type="Yast">
          <path>pub/suse/i386/supplementary/KDE/update_for_10.0/yast-source/</path>
          <arch type="i386" />
        </service>
      </release>
    </distribution>
  </repository>

  <repository baseuri="ftp.gwdg.de" type="mirror" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
      <city>Göttingen</city>
    </location>
    <name>Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen</name>
    <scheme type="http" />
    <scheme type="ftp" />
    <mirror copy="complete"/>
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/suse/x86_64/supplementary/KDE/update_for_10.0/yast-source/</path>
          <arch type="x86_64" />
        </service>
        <service type="Yast">
          <path>pub/suse/i386/supplementary/KDE/update_for_10.0/yast-source/</path>
          <arch type="i386" />
        </service>
      </release>
    </distribution>
  </repository>  

</catalog>

<catalog shortname="Packman">
  <name>Packman</name>
  <description>PackMan delivers software packages that are not part of your favorite distribution.</description>
  <homepage>http://packman.links2linux.org/</homepage>

  <repository baseuri="packman.iu-bremen.de" type="master" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
      <city>Bremen</city>
    </location>
    <name>Technische Universität Chemnitz</name>
    <scheme type="http" />
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/linux/misc/packman/suse/10.0/</path>
          <arch type="i686" /><arch type="i586" /><arch type="x86_64" />
        </service>
      </release>
    </distribution>
  </repository>
  
  <repository baseuri="ftp.gwdg.de" type="mirror" date="YYYY-MM-DDThh:mm:ss.sTZD">
    <location>
      <region>Europe</region>
      <country>Germany</country>
      <city>Göttingen</city>
    </location>
    <name>Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen</name>
    <scheme type="http" />
    <scheme type="ftp" />
    <mirror copy="partly"/>
    <distribution id="SUSE">
      <name>SUSE Linux</name>
      <release version="10.0" branch="stable">
        <service type="Yast">
          <path>pub/linux/misc/packman/suse/10.0/</path>
          <arch type="i686" /><arch type="i586" /><arch type="x86_64" />
        </service>
      </release>
    </distribution>
  </repository>
</catalog>

</repositories>


DTD and example XML file

Example XML Repository

<?xml version="1.0"?>
...

Corresponding Repository DTD

...

Repository XML generator

  • Proof-of-Concept; The target should be to have a maintained data source
  • Use the current updated list of mirrors as source. (assuming the latest comes from this wiki?)

Create simple web based front-end

  • PHP based frontend reads XML repository file and offers comfortable selection to the user

Solutions


  • In Progress...

See also