Difference between revisions of "Create your repository"

From SME Server
Jump to navigationJump to search
(Created page with "The purpose of this HowTo is to make your own repository to share RPM that your are developing for our marvellous project. I used a CentOS server to host my repository mirror....")
 
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
The purpose of this HowTo is to make your own repository to share RPM that your are developing for our marvellous project. I used a CentOS server to host my repository mirror.de-labrusse.fr
+
{{Level|Developer}}
  
===Web Folder===
+
==Create your repository of RPM==
In a first time you have to set a web area where you can upload packages, you can do it by many ways "rsync, scp, ftp..." you have to find your manner, it is not the purpose of this howTo. After that you could see packages in browsing your web area, if it is not the case, you may see if the parameter below is included in your httpd VirtualHost.
+
The purpose of this HowTo is to make your own repository to share RPM that your are developing for our marvellous project. I use a CentOS server to host my repository mirror.de-labrusse.fr<br />
 
 
Options +Indexes
 
  
 +
In a first time you have to parameter a web area where you can upload packages, you can do it by many ways, it is not the purpose of this howTo.
 
===Repository Architecture===
 
===Repository Architecture===
  
Line 18: Line 17:
  
 
SME Server 9 = Centos6
 
SME Server 9 = Centos6
 +
 +
===Upload RPM to Web Folder===
 +
The manner to upload packages to your repository could be done by many ways,  "rsync, scp, ftp..." you have to find your manner.
 +
After that you could see packages in browsing your web area, if it is not the case, you may see if the parameter below is included in your httpd VirtualHost.
 +
 +
Options +Indexes
 +
 +
Of course you must respect the architecture of the rpm you have builded, you need to upload noarch.rpm to noarch, src.rpm to SRPMS, i386 to i386 and x86_64.rpm to x86_64
  
 
===Create repository metadata===
 
===Create repository metadata===
  
you need to install a package named createrepo
+
you need to install a package named createrepo. See [http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide/Gesti%C3%B3n_avanzada_de_repositorios_yum.html Here] for more documentation on createrepo
  
 
  yum install createrepo
 
  yum install createrepo
  
 
each time you upload a package you have to launch the createrepo command, you can do it in a cron or else do it manually.
 
each time you upload a package you have to launch the createrepo command, you can do it in a cron or else do it manually.
  createrepo -d /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
+
  createrepo -dvp /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
  createrepo -d /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
+
  createrepo -dvp /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
  
 
you can do something like that in your crontab
 
you can do something like that in your crontab
Line 33: Line 40:
 
  crontab -e
 
  crontab -e
  
  */30    *      *      *      *      createrepo -d /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
+
  */30    *      *      *      *      createrepo -dvp /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
  */30   *      *      *      *      createrepo -d /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
+
  */31   *      *      *      *      createrepo -dvp /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
 +
 
 +
===Create Repoview===
 +
 
 +
Additionally you can make a nice view for you repository, it is not a mandatory
 +
 
 +
yum install repoview
 +
 
 +
then make a cron like above
 +
 
 +
*/35    *      *      *      *      repoview  /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
 +
*/36    *      *      *      *      repoview  /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
 +
 
  
 
===Sign your RPM===
 
===Sign your RPM===
Line 41: Line 60:
 
===Declare your repository on the client side===
 
===Declare your repository on the client side===
  
This is how you need to allow your repository on the client side.
+
This is how you need to allow your repository on the client side, on each SME Server which wants to reach your repository.
  
{{Warning box|msg=Copy the configuration setting to your server as is, do not modify anything as that might harm your installation. To use it to install package enable it using the option '''--enablerepo=stephdl''' at the SME Server shell.}}
+
{{Warning box|msg=Copy the configuration setting to your server as is, do not modify anything as that might harm your installation. To use it to install package enable it using the option '''--enablerepo=FOO''' at the SME Server shell.}}
 
Below you find the installation command for the {{PAGENAME}} repository which can be entered on the SME Server shell.
 
Below you find the installation command for the {{PAGENAME}} repository which can be entered on the SME Server shell.
 
</noinclude>
 
</noinclude>
Line 56: Line 75:
 
After adding it to the database updating the configuration file is required:
 
After adding it to the database updating the configuration file is required:
 
  signal-event yum-modify
 
  signal-event yum-modify
 +
 +
 +
[[Category:SME Server Development Framework]]
 +
[[Category:Development Tools]]
 +
[[Category:SME9-Development]]

Latest revision as of 21:34, 15 August 2015

PythonIcon.png Skill level: Developer
Risk of inconsistencies with Koozali SME Server methodology, upgrades & functionality is high. One must be knowledgeable about how changes impact their Koozali SME Server. Significant risk of irreversible harm.


Create your repository of RPM

The purpose of this HowTo is to make your own repository to share RPM that your are developing for our marvellous project. I use a CentOS server to host my repository mirror.de-labrusse.fr

In a first time you have to parameter a web area where you can upload packages, you can do it by many ways, it is not the purpose of this howTo.

Repository Architecture

A repository is made with a special architecture which becomes from CENTOS/REDHAT that we need to make.

For example this is the path of my web area, you need to adapt it to your configuration.

mkdir -p /var/www/vhosts/myrepo.xxx/mirror/smeserver/5/{SRPMS,noarch,i386,x86_64}
mkdir -p /var/www/vhosts/myrepo.xxx/mirror/smeserver/6/{SRPMS,noarch,i386,x86_64}

SME Server 8 = Centos5

SME Server 9 = Centos6

Upload RPM to Web Folder

The manner to upload packages to your repository could be done by many ways, "rsync, scp, ftp..." you have to find your manner. After that you could see packages in browsing your web area, if it is not the case, you may see if the parameter below is included in your httpd VirtualHost.

Options +Indexes

Of course you must respect the architecture of the rpm you have builded, you need to upload noarch.rpm to noarch, src.rpm to SRPMS, i386 to i386 and x86_64.rpm to x86_64

Create repository metadata

you need to install a package named createrepo. See Here for more documentation on createrepo

yum install createrepo

each time you upload a package you have to launch the createrepo command, you can do it in a cron or else do it manually.

createrepo -dvp  /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
createrepo -dvp  /var/www/vhosts/myrepo.xxx/mirror/smeserver/6

you can do something like that in your crontab

crontab -e
*/30    *       *       *       *       createrepo -dvp  /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
*/31    *       *       *       *       createrepo -dvp  /var/www/vhosts/myrepo.xxx/mirror/smeserver/6

Create Repoview

Additionally you can make a nice view for you repository, it is not a mandatory

yum install repoview

then make a cron like above

*/35    *       *       *       *       repoview  /var/www/vhosts/myrepo.xxx/mirror/smeserver/5
*/36    *       *       *       *       repoview  /var/www/vhosts/myrepo.xxx/mirror/smeserver/6


Sign your RPM

Now we can sign package before to upload them, it is an additional way to increase security for people who will download your rpm. You can see this wiki page Sign_your_RPM

Declare your repository on the client side

This is how you need to allow your repository on the client side, on each SME Server which wants to reach your repository.


Warning.png Warning:
Copy the configuration setting to your server as is, do not modify anything as that might harm your installation. To use it to install package enable it using the option --enablerepo=FOO at the SME Server shell.


Below you find the installation command for the Create your repository repository which can be entered on the SME Server shell.

db yum_repositories set FOO repository \
BaseURL http://myrepo.xxx/smeserver/\$releasever \
EnableGroups no GPGCheck yes \
Name "Mirror FOO" \
GPGKey http://myrepo.xxx/RPM-GPG-KEY \
Visible yes status disabled


After adding it to the database updating the configuration file is required:

signal-event yum-modify