ASR error installing package

jonscott
New Contributor

Hi All,

When installing an Acrobat 9 Pro package via Remote, I get this message in the log: ASR encountered a problem. See jamf.log for details. Reverting to installation using ditto…

Jamf.log shows: ASR Error while installing AcroPro.dmg: XSTA start 100 client
XSTA setup
Validating target: done
XSTA metadata
Validating source: done
Validating sizes: done
Copying PINF 2 100 Copy
Copying…

Could not copy //Library/ColorSync/Profiles/Profiles; not a directory
Bom copy exited with error 20
Could not restore – Not a directory
XSTA fail

/Library/ColorSync/Profiles/Profiles is an alias to /Library/Application Support/Adobe/Color/Profiles/, but beyond that I'm not sure what's happening. I did scan in asr, which showed no problems with the package. Any ideas?

Thanks,
Jon

6 REPLIES 6

Not applicable

Is the link's target a valid (existing) directory?

jonscott
New Contributor

Yes, it is - which is perhaps part of the problem?
This machine had CS4, which I removed using the resource kit's removecs4 script prior to pushing AcroPro & CS5.

Not applicable

This all seems so familiar, yet I can't remember what I did about it...

jarednichols
Honored Contributor

That's a known one as far as I know. Leave out the ColorSync profiles and if you really need them, make a separate package.

j

donmontalvo
Esteemed Contributor III

According to Adobe, JAMF Composer converts these aliases into actual folders:

/Library/ColorSync/Profiles/Profiles /Library/ColorSync/Profiles/Recommended

So we ZIP the /Library/ColorSync/Profiles folder so it doesn't cause problems. This way we can follow Acrobat Pro 9 with Adobe CS5 at imaging time. Not sure what problems we might run into if only deploying Acrobat Pro 9, since the required Profiles alias is missing. If faced with this, I'd imaging a postflight script can be made to create the required aliases?

Don

--
https://donmontalvo.com

Not applicable

I wrote a script for this bug, long ago. Back when I was building lots of Adobe packages, I ran this script before Composer built a package file. Basically, it looks at all the files in the Source, and compares them to the files in the actual filesystem. If any links have been replaced incorrectly, it fixes them.

#!/usr/bin/python

# Copyright (C) 2010 International Monetary Fund <burban at imf.org<mailto:burban at imf.org>>

import os, sys

def join(paths):
paths = list(paths)
for i, path in enumerate(paths):
if i > 0:
while path.startswith('/'):
path = path[1:]
paths
= path
return os.path.join(*paths)

def remove(item):
if os.path.isdir(item) and not os.path.islink(item):
os.rmdir(item)
else:
os.remove(item)

def delItem(item):
if os.path.isdir(item) and not os.path.islink(item):
for container, dirs, files in os.walk(item, topdown = False):
for i in files + dirs:
remove(join(container, i))
remove(item)

def fix(pkgRoot, fsRoot = '/'):
for container, dirs, files in os.walk(pkgRoot):
container = container.split(pkgRoot, 1)[1]
while container.startswith('/'):
container = container[1:]
for item in dirs:
try:
link = os.readlink(join(fsRoot, container, item))
except OSError: # [Errno 22] Invalid argument: 'whatever'
pass
else:
if not os.path.islink(join(pkgRoot, container, item)):
print "Fixing %s => %s" % (join(pkgRoot, container, item), link)
delItem(join(pkgRoot, container, item))
os.symlink(link, join(pkgRoot, container, item))
else:
del dirs[dirs.index(item)]
for item in files:
try:
link = os.readlink(join(fsRoot, container, item))
except OSError: # [Errno 22] Invalid argument: 'whatever'
pass
else:
if not os.path.islink(join(pkgRoot, container, item)):
print "Fixing %s => %s" % (join(pkgRoot, container, item), link)
remove(join(pkgRoot, container, item))
os.symlink(link, join(pkgRoot, container, item))

if name == 'main':
if 1 < len(sys.argv) < 4:
fix(*sys.argv[1:])
else:
print "Usage: sudo %s PKGROOT [FSROOT]" % (sys.argv[0], )
sys.exit(2)