Page 1 of 1

[SOLVED] Creating repository on USB harddrive

PostPosted: Apr 4th, '14, 20:34
by louielouie
I'm getting ready to update my work Linux box behind the firewall so am setting up portable repositories on a USB h/d. I've got this script working so far but haven't been able to add a custom medium using the control panel:
Code: Select all
#!/usr/bin/sh
#
# Pocketsize1 is ext4
if [ -d /run/media/louielouie/Pocketsize1/Mageia4 ]; then
        cd /run/media/louielouie/Pocketsize1/Mageia4
        lftp -e 'open mirrors.kernel.org/mageia/distrib/4/x86_64/media &&
                mirror core             core &&
                mirror nonfree          nonfree &&
                mirror tainted          tainted &&
                exit'
        cd
# Pocketsize2 is ntfs
elif [ -d /run/media/louielouie/Pocketsize2/Mageia4 ]; then
        cd /run/media/louielouie/Pocketsize2/Mageia4
        lftp -e 'open mirrors.kernel.org/mageia/distrib/4/x86_64/media &&
                mirror core             core &&
                mirror nonfree          nonfree &&
                mirror tainted          tainted &&
                exit'
        cd
else
        echo "Directory does not exist"
fi

When trying to add 'local files' I get this error:
"Unable to add medium, errors reported:
genhdlist2 failed on /run/media/louielouie/Pocketsize1/Mageia4/"

What am I missing?
'tanx

Re: Creating repository on USB harddrive

PostPosted: Apr 4th, '14, 20:43
by doktor5000
louielouie wrote:When trying to add 'local files' I get this error:
"Unable to add medium, errors reported:
genhdlist2 failed on /run/media/louielouie/Pocketsize1/Mageia4/"

What am I missing?

Write permissions to the USB device? Maybe the folder is owned by root or so?
Please show the output of
Code: Select all
ls -al /run/media/louielouie/Pocketsize1/Mageia4/

Re: Creating repository on USB harddrive

PostPosted: Apr 4th, '14, 21:30
by louielouie
ls -al /run/media/louielouie/Pocketsize1/Mageia4
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ./
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ../
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 core/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 media_info/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 nonfree/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 tainted/

:oops: I suspect at chmod 0766 or change ownerships?

Re: Creating repository on USB harddrive

PostPosted: Apr 5th, '14, 10:16
by doktor5000
Well, if you do it as user louielouie then permissions are ok.
Can you please show the output as root of
Code: Select all
urpmi.addmedia --distrib /run/media/louielouie/Pocketsize1/Mageia4

Re: Creating repository on USB harddrive

PostPosted: Apr 5th, '14, 19:48
by louielouie
Code: Select all
this location doesn't seem to contain any distribution
unable to add medium


Since the directory structure on the h/d is

Mageia4/core
/media_info
/nonfree
/tainted


I tried :
Mageia4/mageia/distrib/4/x86_64/media/core
/media_info
/nonfree
/tainted

and that didn't seem to make any difference.

Re: Creating repository on USB harddrive

PostPosted: Apr 5th, '14, 20:48
by doktor5000
How did you create the content that's currently on the harddrive in the first place?

Re: Creating repository on USB harddrive

PostPosted: Apr 5th, '14, 21:10
by louielouie
Just by using the 'mirror' command from lftp script - some examples I'd seen before but no explanations of what directory structure is correct.

Re: Creating repository on USB harddrive

PostPosted: Apr 6th, '14, 18:21
by louielouie
I created a new Mag4 VM w/o network connections, added the harddrive as 'update medium' so the only mediums I have are the DVD image and the hard drive but when I try to update the system I can't proceed past the needing the network mirror list. Do I need to manually update a file to handle this?

Re: Creating repository on USB harddrive

PostPosted: Apr 6th, '14, 18:58
by doktor5000
Why do you try that? If you cannot add a repo from this harddisk, what do you think will the result be when trying to use it as update medium?

Please first show the structure via
Code: Select all
find /run/media/louielouie/Pocketsize1/Mageia4 -type d


And please show the output as root of
Code: Select all
urpmi.addmedia test_core file:///run/media/louielouie/Pocketsize1/Mageia4/core
urpmi.addmedia --distrib file:///run/media/louielouie/Pocketsize1/Mageia4/


The problem seems to come from the fact that you mirrored the wrong directory.
What you need is $MIRROR/Mageia/distrib/4/$ARCH but what you have is only the contents of the folder media/ - $MIRROR/Mageia/distrib/4/$ARCH/media/

See the man page:
man urpmi.addmedia wrote: --distrib
Retrieve a set of media from a distribution. Typically, the URL provided to "urpmi.addmedia" will represent the parent directory of a
directory media
, which in turn will contain various subdirectories for each medium of the distribution. <name> is combined with medium names
found to create newer medium names in the urpmi database.

Re: Creating repository on USB harddrive

PostPosted: Apr 7th, '14, 17:45
by louielouie
'find /run/media/louielouie/Mageia4' produces:
Code: Select all
/run/media/louielouie/Pocketsize1/Mageia4/                                           
/run/media/louielouie/Pocketsize1/Mageia4/mageia
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/backports
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/backports/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/backports_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/backports_testing/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/release
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/release/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/updates
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/updates/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/updates_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/updates_testing/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/backports
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/backports/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/backports_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/backports_testing/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/release
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/release/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/updates
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/updates/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/updates_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/nonfree/updates_testing/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/backports
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/backports/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/backports_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/backports_testing/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/release
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/release/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/updates
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/updates/media_info
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/updates_testing
/run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/tainted/updates_testing/media_info

as root:
'urpmi.addmedia test_core file:///run/media/louielouie/Pocketsize1/Mageia4/core'
adding medium "test_core" before remote medium "Core Release"
unable to access medium "test_core".

'urpmi.addmedia --distrib file:///run/media/louielouie/Pocketsize1/Mageia4/'
this location doesn't seem to contain any distribution
unable to add medium

Re: Creating repository on USB harddrive

PostPosted: Apr 7th, '14, 19:35
by jkerr82508
Based on the paths to the repo's that you show, I think that you need something like:

Code: Select all
urpmi.addmedia test_core file:///run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64/media/core/release

urpmi.addmedia --distrib file:///run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64


So far as I know, you need to point urpmi.addmedia to the repo directory, or in the case of --distrib to the top-level directory of the arch.

Jim

Re: Creating repository on USB harddrive

PostPosted: Apr 7th, '14, 21:00
by doktor5000
So what did you post previously? The ls output does not correspond to the find output which shows the directory structure.

louielouie wrote:ls -al /run/media/louielouie/Pocketsize1/Mageia4
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ./
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ../
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 core/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 media_info/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 nonfree/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 tainted/

Re: Creating repository on USB harddrive

PostPosted: Apr 8th, '14, 02:52
by louielouie
doktor5000 wrote:So what did you post previously? The ls output does not correspond to the find output which shows the directory structure.

louielouie wrote:ls -al /run/media/louielouie/Pocketsize1/Mageia4
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ./
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 ../
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 core/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 media_info/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 nonfree/
drwx------ 1 louielouie louielouie 4096 Apr 4 04:47 tainted/

Yes, on the 4th I posted the 'ls -al' output but on the 7th I did post the 'find' output. By that time I had tried to duplicate the entire directory structure to emulate the distribution.
jkerr82508: I tried the 'test_core' and was successful adding it, but the ".addmedia --distrib" said that there didn't seem to be any distribution. The Software Management won't get very far without a network connection after asking to contact the mirrors.

Re: Creating repository on USB harddrive

PostPosted: Apr 8th, '14, 04:03
by jkerr82508
Try:
Code: Select all
urpmi.addmedia --distrib 'file:///run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64'

Or try using the GUI, drakrpm-editmedia. Select, File - Add a custom medium. The type is Local files, the name is whatever you choose. For the path, browse to /run/media/louielouie/Pocketsize1/Mageia4/mageia/distrib/4/x86_64.
Select "Create media for a whole distribution".

(I assume that x86_64/media/media_info contains valid symlinks to the hdlists etc in each of the repositories.)

Jim

Re: Creating repository on USB harddrive

PostPosted: Apr 18th, '14, 04:09
by louielouie
OK, I have come up with a solution:
1. Mirror everything below x86_64/media/ on the USB hard drive
Code: Select all
 cd /run/media/louielouie/Pocketsize1/mageia/distrib/4/x86_64/
          lftp -e 'open mirrors.kernel.org/mageia/distrib/4/x86_64/
                mirror media            &&
          exit'

2. Run genhdlist2 --allow-empty-media from the /x86_64/ folder
3. From 'Configure Media Sources' of the firewalled machine, add the /x86_64/media folder on the mounted USB drive with the "Create media for whole distribution" switch

I guess if you want the 32-bit stuff also you could:
Code: Select all
 cd /run/media/louielouie/Pocketsize1/mageia/distrib/4/
          lftp -e 'open mirrors.kernel.org/mageia/distrib/4/
                mirror /i586/media            &&
                mirror /x86_64/media        &&
          exit'

and run genhdlist2 --allow-empty-media from the mageia/distrib/4 directory. I'll mark this thread as "SOLVED"