The tool is under development now. You can take part in urpm-reposync testing.
usage: urpm-reposync.py [-h] [--include-media INCLUDE_MEDIA [INCLUDE_MEDIA ...]] [--exclude-media EXCLUDE_MEDIA [EXCLUDE_MEDIA ...]] [-v] [-q] [-a] [-p] [-d] [-r] [-c] [-k] [--runselftests] [--detailed] reposync is used to synchronize a set of packages on the local computer with the remote repository. optional arguments: -h, --help show this help message and exit --include-media INCLUDE_MEDIA [INCLUDE_MEDIA ...], --media INCLUDE_MEDIA [INCLUDE_MEDIA ...] Use only selected URPM media --exclude-media EXCLUDE_MEDIA [EXCLUDE_MEDIA ...] Do not use selected URPM media -v, --verbose Verbose (print additional info) -q, --quiet Quiet operation. Senseless without --auto. -a, --auto Do not ask questions, just do it! -p, --printonly Only print the list of actions to be done and do nothing more! -d, --download Only download the rpm files, but install or remove nothing. -r, --remove Remove all the packages which do not present in repository. By default, only some of them would be removed. -c, --check Download packages and check wether the ycan be installed to your system, but do not install them. -k, --nokernel Do nothing with kernels. --runselftests Run self-tests end exit. --detailed Show detailed information about packages are going to be removed or installed (why does it have to be done)
Help Reposync Testing
You need a virtual machine with some version of Mandriva or ROSA on-board. Do not forget to create a snapshot.
You can download the attachment and do the following:
1) Setup correct mirrors (you can try other repositories. It would be a great experience too):
sudo urpmi.addmedia --distrib http://mirror.yandex.ru/rosa/rosa2012lts/repository/i586
And in case of 64 bit system:
sudo urpmi.addmedia --distrib http://mirror.yandex.ru/rosa/rosa2012lts/repository/x86_64
(64bit system has some packages installed from i586, so you need i586 repository too)
2) install package pyhton-rpm (sudo urpmi python-rpm)
3) Now configure your media sources and enable all the media (maybe except contrib).
4) Download reposync from link below. sudo python urpm-reposync.py -av | tee /tmp/log_something-to-something
If some errors occurred, and send me the report (/tmp/log_something-to-something).
Please, report me about every problem and about every successful run.
If you have some feature requests - you are welcome, send it to me directly (firstname.lastname@example.org)
- Trying not to remove packages, even if they are not in repository. But if this package prevents some other package from being upgraded/downgraded - it will be removed. Option "--remove" (or "-r") will remove all the packages which do not present in repository.
- Option "--detailed" will show some useful information: why the package should be removed (it requires something that will not be installed, it conflicts with something or something conflicts with it) or why the package should be installed (what package requires it).
For example, there can be a line like "U poppler 0.16.7-1(mdv2011.0) 0.16.7-2(rosa.lts2012.0) x86_64"
- Option "--printonly" (ot "-p") will print one-line list of actions to be done and exit. Every line starts with the letter of action (Upgrade, Downgrade, Remove, Uppend, Save). It's useful for machine processing or to grep this list.
- Option "--download" (or "-d") will calculate all the actions to be done and download the packages, then exit.
- Option "--check" (or "-c") will download packages, generate transaction and check it with rpm, then exit.
- Option "--nokernel" (or "-k") will prevent reposync from dealing with kernels.
- Option "--runselftests" will run tests. There is not so mach to test, so there is small number of tests.
- Support of providing dependencies with version with ">" and "<". Some packages provide something like "depname[< 1.0]"
- Warning about missed media. For example, you have
If there are libraries in your system which are not in repository, but the other architecture presents, reposync will warn you about it.
- Special mode to repair the system packages (try to fix missed dependencies, remove the older version of packages with multiple versions installed and so on)
- There is a total amount of data to be downloaded in summary, but it is incorrect (about 2-3 times greater than real). The size comes from synthesis file (@filesize@ field), but it's incorrect there.
The newest version can be found here here