Create your repository
Create your repository
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 -dv /var/www/vhosts/myrepo.xxx/mirror/smeserver/5 createrepo -dv /var/www/vhosts/myrepo.xxx/mirror/smeserver/6
you can do something like that in your crontab
crontab -e
*/30 * * * * createrepo -d /var/www/vhosts/myrepo.xxx/mirror/smeserver/5 */31 * * * * createrepo -d /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.
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