Currently the citrain tool uses the command 'apt-get -o Dir::Etc::SourceList=/dev/null update' to disable sources.list and make sure that only the PPA is installed from. This works fine in most cases, but we've encountered a recent case where a successful install required a package that was in the main archive. Thanks to Mirv (Timo) we located this command that does something similar but still allows the main archive to be used.
apt update -o Dir::Etc::sourcelist="sources.list.d/ci-train-ppa-service-ubuntu-rtm-landing-009-14.09.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
We should update the citrain tool to use that command so that we don't hit speed bumps again in future. The only tricky bit will be getting the filename right - a clever use of find should do the trick though.
ProblemType: Bug
DistroRelease: Ubuntu 14.10
Package: phablet-tools 1.1+14.10.20140929-0ubuntu1
Uname: Linux 3.13.0-031300rc2-generic x86_64
ApportVersion: 2.14.4-0ubuntu2
Architecture: amd64
CurrentDesktop: Unity
Date: Tue Oct 7 10:16:45 2014
InstallationDate: Installed on 2013-11-30 (310 days ago)
InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Release amd64 (20131016.1)
PackageArchitecture: all
SourcePackage: phablet-tools
UpgradeStatus: Upgraded to utopic on 2014-05-16 (143 days ago)
This is actually reverting back to the previous behavior we had which had the potential of "upgrading" packages out of silo.
Sure you get the dependencies, but the added load of other packages can come in too.
Using main only is not an option as we also have dependencies in universe, the fact that it worked without upgrading unwanted packages might of been just a coincidence with the time of testing (e.g.; just after a new image came out of the oven so all packages were up to date)
The best solution here is to have people state they have new deps and taking care of them prior to running the tool. This is not ideal and I can see this working without any intervention from the user and without disabling any sources if instead of running dist-upgrade you do the following:
- iterate over each binary package in the silo
- if it's not part of the current install list, discard; else add to the "install_list"
- look at the dependencies, add to the "install_list"
- apt install "install_list"