https://bugzilla.novell.com/show_bug.cgi?id=325548 Summary: Renaming 'Repository' repository corrupts zypper database Product: openSUSE 10.3 Version: Beta 3 Platform: x86-64 OS/Version: openSUSE 10.3 Status: NEW Severity: Normal Priority: P5 - None Component: libzypp AssignedTo: kkaempf@novell.com ReportedBy: gfarrell@netspeed.com.au QAContact: kkaempf@novell.com Found By: Other Text of error dialog: Error parsing metadata for 'openSUSE-10.3-NonOSS-BiArch': /var/cache/zypp/raw/openSUSE-10.3-NonOSS-BiArch: Required file is missing: /content This may be caused by invalid metadata in the repository, or by a bug in the metadata parser. In the latter case, or if in doubt, please, file a bug report by folowing instructions at http://en.opensuse.org/Zypper#Troubleshooting Problem loading data from 'openSUSE-10.3-NonOSS-BiArch' Resolvables from 'openSUSE-10.3-NonOSS-BiArch' not loaded because of error. Explanation: Just after installation, I used YaST's Software Repositories tool to rename the 'Repository' repository to something more appropriate to the CD's name ('openSUSE-10.3-Beta3-Addon-NonOss-BiArch'). I used the name 'openSUSE-10.3-NonOSS-BiArch'. Here is the y2log entry: 2007-09-15 14:59:37 <1> HomeLin(4154) [YCP] clients/repositories.ycp:389 From [$["SrcId":0, "autorefresh":false, "enabled":true, "name":"Repository"], $["SrcId":1, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-OSS-KDE 10.3"]] To [$["SrcId":0, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-NonOSS-BiArch"], $["SrcId":1, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-OSS-KDE 10.3"], $["SrcId":2, "autorefresh":true, "do_refresh":true, "enabled":true, "name":"NVidia 10.2 Repository"]] 2007-09-15 14:59:37 <1> HomeLin(4154) [YCP] clients/repositories.ycp:400 Difference [2] 2007-09-15 14:59:37 <1> HomeLin(4154) [YCP] clients/repositories.ycp:389 From [$["SrcId":0, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-NonOSS-BiArch"], $["SrcId":1, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-OSS-KDE 10.3"], $["SrcId":2, "autorefresh":true, "do_refresh":true, "enabled":true, "name":"NVidia 10.2 Repository"]] To [$["SrcId":0, "autorefresh":false, "enabled":true, "name":"Repository"], $["SrcId":1, "autorefresh":false, "enabled":true, "name":"openSUSE-10.3-OSS-KDE 10.3"]] At the same time, I had removed the NVidia 10.2 repository that had been added earlier (probably an error to include a 10.2 repository??). Notice how YCP has, in the last entry, immediately reallocated 'Repository' to the 'SrcId0' repository. Not knowing that (I only looked in the logs after getting this error dialog), I looked at the <alias> name using 'zypper sl': # | Enabled | Refresh | Type | Alias | Name --+---------+---------+-------+-----------------------------+---------------------------- 1 | Yes | No | yast2 | Repository | openSUSE-10.3-NonOSS-BiArch 2 | Yes | No | yast2 | openSUSE-10.3-OSS-KDE 10.3 | openSUSE-10.3-OSS-KDE 10.3 I changed the <alias> name with 'zypper nr Repository openSUSE-10.3-NonOSS-BiArch' (I hate generic names). I then got: # | Enabled | Refresh | Type | Alias | Name --+---------+---------+-------+-----------------------------+---------------------------- 1 | Yes | No | yast2 | openSUSE-10.3-NonOSS-BiArch | openSUSE-10.3-NonOSS-BiArch 2 | Yes | No | yast2 | openSUSE-10.3-OSS-KDE 10.3 | openSUSE-10.3-OSS-KDE 10.3 After getting this error dialog, I looked in /var/cache/zypp/raw, and saw four directories: 1. http: 2. openSUSE-10.3-Addon-NonOSS 10.3 3. openSUSE-10.3-OSS-KDE 10.3 4. Repository (these names were copied/pasted from Konqueror file manager). The second directory is a mis-named version of 'openSUSE-10.3-NonOSS-BiArch'. The fourth directory 'Repository' contained identical data to the second directory (same directory/file names and same content of each). The error dialog had arisen because of a mis-match between the repository name - 'openSUSE-10.3-NonOSS-BiArch' - and its listing in the /var/cache/zypp/raw directory - 'openSUSE-10.3-Addon-NonOSS 10.3', which YaST probably allocated during the installation. It was not finding 'content' because it was looking in a non-existent directory; ie, /var/cache/zypp/raw/openSUSE-10.3-NonOSS-BiArch. Note also: /etc/zypp/repos.d contained two files: 1. openSUSE-10.3-OSS-KDE 10.3.repo 2. Repository even though the first line of the 'Repository' file was: '[openSUSE-10.3-NonOSS-BiArch]'. This was probably confusing YaST. Maybe the file should have been named 'openSUSE-10.3-NonOSS-BiArch', in a similar way to file number 1. It would seem that, in the process of renaming 'Repository' to 'openSUSE-10.3-NonOSS-BiArch', YaST left the original 'Repository' files in place and made another copy for 'openSUSE-10.3-NonOSS-BiArch' but put its original installation name 'openSUSE-10.3-Addon-NonOSS 10.3' as the /var/cache/zypp/raw directory name. It also seems that the repositories database has then become confused, leading to the error dialog. To fix this problem, I deleted both repositories in YaST Software Repositories. I then looked in /var/cache/zypp/raw and saw: /var/cache/zypp/raw # ls -l total 12 drwxr-xr-x 4 root root 4096 Sep 15 22:46 Repository drwxr-xr-x 3 root root 4096 Sep 15 15:14 http: drwxr-xr-x 4 root root 4096 Sep 15 22:46 openSUSE-10.3-Addon-NonOSS 10.3 I then deleted these three directories, and their contents. On checking /etc/zypp/repos.d, it was empty. I then added both CDs in YaST Software Repositories. This time, their names appeared correctly: 1. 'openSUSE-10.3-OSS-KDE 10.3' 2. 'openSUSE-10.3-Addon-NonOSS 10.3' As well, zypper now reports them correctly: /var/cache/zypp/raw # zypper sl # | Enabled | Refresh | Type | Alias | Name --+---------+---------+-------+---------------------------------+-------------------------------- 1 | Yes | No | yast2 | openSUSE-10.3-OSS-KDE_10.3 | openSUSE-10.3-OSS-KDE 10.3 2 | Yes | No | yast2 | openSUSE-10.3-Addon-NonOSS_10.3 | openSUSE-10.3-Addon-NonOSS 10.3 And their directory names in /var/cache/zypp/raw also matched: /var/cache/zypp/raw # ls -l total 8 drwxr-xr-x 4 root root 4096 Sep 16 13:30 openSUSE-10.3-Addon-NonOSS_10.3 drwxr-xr-x 4 root root 4096 Sep 16 13:28 openSUSE-10.3-OSS-KDE_10.3 Lastly, the /etc/zypp/repos.d directory now has the correct information: /var/cache/zypp/raw # ls -l /etc/zypp/repos.d/ total 8 -rw-r--r-- 1 root root 139 Sep 16 13:33 openSUSE-10.3-Addon-NonOSS_10.3.repo -rw-r--r-- 1 root root 129 Sep 16 13:33 openSUSE-10.3-OSS-KDE_10.3.repo opensuseupdater now processes the repositories without throwing an error dialog. It's interesting to note that, before the problem was fixed, the /var/cache/zypp/raw directory names had no underscore before the final '10.3', whereas afterwards, the underscore is there. Perhaps there's a clue in there somewhere. This problem was probably caused by: 1. The installer's inability to parse a CD's name for use as the intended repository. If the YaST Software Repositories tool can identify the CD as 'openSUSE-10.3-Addon-NonOSS 10.3', then the installer should be able to. (It was able to identify the main CD 'openSUSE-10.3-OSS-KDE 10.3'. 2. YaST Software Repositories' inability to handle the 'Repository' repository added by the installer, including renaming or deleting it. If this can't be fixed before final release, then the Release Notes should make some mention of the problem, with a workaround to immediately remove the repositories after installation has finished, and to ensure the applicable zypper directories are emptied, before re-adding them with YaST Software Repositories. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.