Is the link's target a valid (existing) directory?
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.
This all seems so familiar, yet I can't remember what I did about it...
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
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
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)