Adding non-ubuntu packages

Abdullah Ramazanoglu ar018 at
Mon May 2 18:15:48 UTC 2005

Derek Broughton dedi ki:
> On Friday 29 April 2005 20:02, Abdullah Ramazanoglu wrote:
>> Derek Broughton dedi ki:

>> That said, I guess a good way could be mixing all the repos with such a
>> pinning that only packages missing in the official repos would be
>> fetched from unofficial ones.
> Yes.  That's what I've done, now, thanks.  My main sources are breezy -
> main, restricted, universe & multivers.  Then, at a lower priority Debian
> unstable. Finally, just "mambo" from Debian experimental.

Did you pin official repos to 1000? Have you tested it out? I asked because
I'm also trying to do the same thing, but I've some concerns.

I'm in the process of adapting Ubuntuguide to Kubuntu. Ubuntuguide
liberally uses external repos without pinning and I'm trying to improve
it, but I'm a bit confused. In apt_preferences(5) it says,
"Subject to dependency constraints, apt-get selects the version with the
highest priority for installation.

The confusing bit is the "Subject to dependency constraints" part. As far
as I understood, pin values between 100-999 affect version/repo selection
when the version is not forced. E.g. if I install just "foo", then the
version/repo will be selected according to the pinning rules. But if I
install foo-1.2 explicitly, then explicit version (or distro, section,
etc) requirement overrides moderate pinning (100-999), according to the
same man page. But what happens if I install just "foo" (without version)
which depends on bar-3.4 (explicit version) in turn? Will bar-3.4 override
moderate pinning due to indirectly explicit version specification? Looks
like so.

In this circumstance, I can't use pin values less than 1000 to pin official
repos, as <1000 will only work for the original package I asked for, but
it won't work for the dependencies with explicit versions. That is, a
dependency package could still be fetched from an unofficial repo whilst
an older version already existing in an official repo. This is because
with explicit version specification, a package satisfying the dependency
will possibly be found *only* in some external repo, so it will be fetched
from there no matter how low a priority it has got (except it's <100 and
the corresponding official package is already installed). OTOH, what I
really expected was that apt-get would reject installing an "official
package" (which is both not installed and older than the external one)
from an external repo and thus reject the main/parent request (foo).

Neither can I use greater than 1000 for official repos, because various
official repos could get into a racing condition then. Documentations I've
read[*] make no differentiation between >1000 values (same with <0
values). It just says any value >1000 will have downgrade power. For
example, hoary and hoary-updates will have different versions of the same
package: Whilst hoary-updates is trying to upgrade it, hoary would be
trying to downgrade it. I don't know whether there's also a hierarchy for
>1000 pin values (so that e.g. hoary-updates:1100 and hoary:1050 would
work as expected), but it's not mentioned in the documents. Otherwise
having more than 1 repo with >1000 pin values ought to be prohibited (no
mention of that in the docs, either). That leaves me with the "hopeful"
1000. According to

"1000 : The effect is the same as priority 1001, except that apt will
refuse to downgrade an installed version..."

So it looks like as if 1000 is the special value I've been looking for,
which is not overridable (just like >1000), so that no unofficial package
can override an official one. Yet, which doesn't override (downgrade)
already installed packages (just like 101-999), so that several official
repos, all pinned to 1000, can get along together.

Too much guesswork...

I need either various dry-run experiments on a sandbox (reverse eng. as
last resort), or some docs with complete details (can't find any), or an
apt guru shedding some light on this (hope, hope :)

I wonder: Did I get the rules right in the first place? Is my resolution
correct? Otherwise, how can I include many repos, possibly some
incompatible ones too, without worrying about system's integrity? I.e. how
can I group official and unofficial repos into two main groups, each
having isolated prioritization within themselves, and give higher priority
to the "official" group against the "unofficial" one, *regardless* of
cross-group version maths?

The bottom line is, how can I throw-in lots of external repos, and yet make
sure that I will get *only* the "extra" packages (the ones missing in
official repos) from them?

[*] Docs I've read (hopefully not without really understanding! :)
apt-howto (Turkish, similar)

Thanks and best regards,
Abdullah Ramazanoglu
aramazan ÄT myrealbox D0T cöm

More information about the kubuntu-users mailing list