Archive for ‘Leopard’ Category
Leopard »

Get rid of double (triple) entries in Finder’s “Open With” Menu

datePosted on 09:55, February 20th, 2013 by Many Ayromlou

Does sh*t like this make you wanna smack your mac :-)

Screen Shot 2013-02-20 at 9.48.59 AM

Here is a quick way to rebuild the Launch Services database and get rid of duplicates in the Open With submenu:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

This process should take about a minute or two. You should check to see if this has fixed the problem. On my machine, running 10.8.2, I had to also restart Finder to complete the process using the following command:

killall Finder

That’s all…..Now Open With submenu is squicky clean

Screen Shot 2013-02-20 at 10.07.02 AM

Renew a DHCP lease

datePosted on 12:46, January 3rd, 2013 by Many Ayromlou

Renew a DHCP lease:

Renewing a DHCP lease via the Network System Preference Pane has the advantage of not dropping the connection, unlike switching the interface to BOOTP and back to DHCP. This command mimics that behavior. 


Adding GD support to builtin php5 on OSX Leopard….

datePosted on 15:17, February 4th, 2011 by Many Ayromlou

I got a request to add GD support to our Leopard server today and here is a brief step-by-step installation instruction. This works well under the current 10.5.8 server installation. It should also work for 10.6 (snow leopard), but I have not tried it. Before you start here are the requirements:

  • Backup your system
  • Install (and update) the latest XCode (I’ve got version 3)
  • Install X11 client stuff from your server install DVD
  • install X11 SDK stuff from your server install DVD
  • Ensure you have server 10.5.8 (latest update as of Feb.04.2011)
  • Make sure you have not tried to install GD using another method. We need a “virgin” 10.5.8 install (as far as homebrew/local installs)

Please note that this will add GD support to php. This is NOT the same as compiling the GD graphics library (libgd).

Okay, so now that we have all the requirements, you need to get a command line window opened and get a root shell (sudo -i). The rest of this document assumes you’re typing the commands in a root shell.

There is one dependency that we need to clear before we actually get down and dirty and that is libjpeg (known as jpegsrc). Follow the instructions below to get this installed:

mkdir /SourceCache
cd /SourceCache
curl -O

This is the latest version as of this writing (Feb.04.2011).

NOTE: If you’re compiling on a G5 machine you’ll need to tell the compiler that you want to build/configure for a ppc64 target so instead of the below configure command you need to use this:

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=" -arch ppc64 -g -Os -pipe -no-cpp-precomp" CCFLAGS=" -arch ppc64 -g -Os -pipe" CXXFLAGS="-arch ppc64 -g -Os -pipe" LDFLAGS="-arch ppc64 -bind_at_load" ./configure --enable-shared
tar -zxvlf jpegsrc.v8c.tar.gz
cd jpeg-8c/
make test
make -n install

The last command will simulate the installation process. Make sure the stuff is getting installed in /usr/local/lib

make install

At this point you should have a working installation of libjpeg. Now we double check our php version.

server:jpeg-8c root# php -v
PHP 5.2.14 (cli) (built: Oct  6 2010 16:57:10)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

Notice in the output that I have php 5.2.14 installed on the machine (again the latest update as of Feb.04.2011). Apple does not provide source code for this exact version of PHP. On top of that The numbering scheme that they use is weird. On my machine it is “apache_mod_php-44.6”, you can find yours using the following:

server:jpeg-8c root# php -i |more
PHP Version => 5.2.14

System => Darwin 9.8.0 Darwin Kernel Version 9.8.0: Wed Ju
l 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
Build Date => Oct  6 2010 16:55:34
Configure Command =>  '/SourceCache/apache_mod_php/apache_mod_php-44.6/php/confi
gure'  '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--
disable-dependency-tracking' '--with-apxs2=/usr/sbin/apxs' '--with-ldap=/usr' '-
-with-kerberos=/usr' '--enable-cli' '--with-zlib-dir=/usr' '--enable-trans-sid'
'--with-xml' '--enable-exif' '--enable-ftp' '--enable-mbstring' '--enable-mbrege
x' '--enable-dbx' '--enable-sockets' '--with-iodbc=/usr' '--with-curl=/usr' '--w
ith-config-file-path=/etc' '--sysconfdir=/private/etc' '--with-mysql-sock=/var/m
ysql' '--with-mysqli=/usr/bin/mysql_config' '--with-mysql=/usr' '--with-openssl'
 '--with-xmlrpc' '--with-xsl=/usr' '--without-pear'

The thing you’re looking for (“apache_mod_php-44.6”) is under Configure Command. If you go to the following URL ( in your browser (safari, firefox) you’ll soon discover these weird directory names with numbers that don’t match the php versions. Again, as of this writing (Feb.04.2011), I can’t find apache_mod_php-44.6 folder in the listing so I grabbed the nearest numbers apache_mod_php-44.2 which is php 5.2.8…….close enough. It seems to work. Follow the steps below to get the file and compile the GD portion of it. Remember we’re not recompiling the entire php, just the GD plugin portion.

UPDATE: You CAN install the exact version of your PHP’s GD extension. Instead of grabbing the file from Apple, figure out the version of your PHP using “php -v” and grab the appropriate file from instead. I just recompiled the GD portion of PHP 5.2.14, since I wanted a perfect match between my php engine and the extension. The instructions below (except curl which needs to be modified) work.

NOTE: If you’re compiling on a G5 machine you’ll need to tell the compiler that you want to build/configure for a ppc64 target so instead of the below configure command you need to use this:

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=" -arch ppc64 -g -Os -pipe -no-cpp-precomp" CCFLAGS=" -arch ppc64 -g -Os -pipe" CXXFLAGS="-arch ppc64  -g -Os -pipe" LDFLAGS=" -arch ppc64  -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
cd /SourceCache
curl -O
tar xjvf php-5.2.8.tar.bz2
cd /SourceCache/php-5.2.8/ext/gd
./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype- dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
make test
make -n install

The last command will simulate the installation process. Make sure the stuff is getting installed in /usr/lib/php/extensions/no-debug-non-zts-20060613

make install

Now we need to modify our php.ini file and tell the php5 engine of the availability of this new module. To do this you need to copy php.ini.default to php.ini (in /etc directory). For details of why have a look at this article.

cd /etc
cp php.ini.default php.ini

Edit the newly created/copied php.ini using your favourite editor. Add the following line to the appropriate location (read the comments in the file to find the location):

Still in the same file find the variable “extension_dir” and change it’s value to “/usr/lib/php/extensions/no-debug-non-zts-20060613” path instead of “./”. Save the php.ini and use the following command to see if GD extensions are available:

server:etc root# php -i |grep GD
GD Support => enabled
GD Version => bundled (2.0.34 compatible)

Done. Restart Apache service from the server manager (just for the sake of completeness).

Someone must have screwed up something in the freshclam plist as part of the update for Leopard (2009-05). I was getting this error constantly in my system.log which was not only annoying as hell, but also kept clam from downloading new virus definitions. Anyways, here is how you fix it.

  1. use sudo and edit the file /System/Library/LaunchDaemons/org.clamav.freshclam.plist
    sudo vi /System/Library/LaunchDaemons/org.clamav.freshclam.plist
  2. Somewhere in this file you’ll find a block of code like this:
    <string>-c 4</string>
    </array> </code>

    Change it to look like:
    </array> </code>
  3. Then use the following two sudo commands to reload the freshclam service.
    sudo launchctl unload /System/Library/LaunchDaemons/org.clamav.freshclam.plist
    sudo launchctl load /System/Library/LaunchDaemons/org.clamav.freshclam.plist

OSX 10.5: How to create a public share folder…..

datePosted on 12:39, June 11th, 2009 by Many Ayromlou

This problem has been around (I think) ever since the introduction of POSIX permissions. In pre-10.5 versions you could sorta do something like this by changing the default umask on the system, but that was system wide and applied to all folders/files a user created on the entire filesystem…..not nice. The real question is how do you create a directory that is totally public without mucking around with system/user wide settings. A folder that anyone on the system in question can read/write/modify/delete anything anyone else has put in there. A true shared directory with share permission inheritence. We call it “pub” directory at my place of work.

The old trick in OSX (in case someone is interested) was to write a small script that you ran via cron every 5-10 minutes that would “chmod” all the entries in a folder to be open to a specific POSIX group….something like the script below:

find /path/to/shared/directory ! -type l ! -perm -g=w -print0 | while IFS
= read -rd $'\0' filename
echo "*+*+*Permission changing program caught something"
if [ -d "$filename" ]then
chmod g+rwx "$filename"
# echo Directory changed
stat -l "$filename"
if [ -f "$filename" ]then
chmod g+rw "$filename"
# echo File changed
stat -l "$filename"

Well those were the old days and now with the help of ACL’s we can do this a lot nicer/cleaner. The procedure below is for OSX 10.5+ (it should also work on 10.4, although I haven’t tried it).

  1. Enable ACL’s on your computer. Type the following command in a Terminal window: sudo /usr/sbin/fsaclctl -p / -e and verify that ACL’s are now enabled by typing: sudo fsaclctl -p /
  2. Create a new group. The easiest way to do this is through the Accounts pane in System Preferences. Just click on the Plus sign to add a new account and then select Group from the New Account drop-down menu. Call this group anything you want; I called mine public. Add all the users who you want to participate in the file sharing to your newly-created group.
  3. Do the following steps in Terminal, in Applications -> Utilities:
  4. Change directory to /Users/Shared: cd /Users/Shared
  5. Create a new folder where the users will be able to share their files. I created a folder named Pub by typing mkdir Pub
  6. Change the group of the new folder to your newly-created group: sudo chown admin:public Pub
  7. Change the default permissions, if you wish: sudo chmod 770 Pub (this is optional if you’re happy with the default permissions).
  8. Create the ACL entry for the new folder:sudo chmod +a "group:public allow file_inherit,directory_inherit,readattr,readextattr,readsecurity,read,execute,list,search,writeattr,writeextattr,delete,append,write,delete_child,add_file,add_subdirectory" Pub

You now have a true public folder where all members of the group public can read, write and delete files, as well as read, write to and create new sub folders. The ACL rule takes precedence over standard UNIX file permissions and is automatically inherited. It’s this automatic inheritance that is really important.

IMPORTANT: You must copy (hold down Option in Finder prior to dragging), and not merely move, items. This is particularly important with bundles, such as the Aperture library bundle for example. Moving items doesn’t inherit/change the permissions/ACL’s. Copying ensures that the files are actually created in the shared folder, thereby forcing the ACL rules to be inherited. If you have moved files into this directory and the permissions are a bit messed up you can quickly fix that by issuing the following recursive command which will set the ACL’s and POSIX permissions to the “right” ones so that everyone can do anything in that directory:
sudo chmod -R +a "group:public allow file_inherit,directory_inherit,readattr,readextattr,readsecurity,read,execute,list,search,writeattr,writeextattr,delete,append,write,delete_child,add_file,add_subdirectory" /Users/Shared/Pub

OSX 10.5: How to delete user accounts from Command Line….

datePosted on 11:34, June 11th, 2009 by Many Ayromlou

I ran into this problem a little while back and thought I should document it. It’s kinda similar to the “How to get Admin rights in OSX Leopard using single user mode…” document from earlier this year. Here is the procedure:

  1. Boot into single user mode. Hold Command-s at startup.
  2. Check the filesystem: /sbin/fsck -fy
  3. If no remaining errors, mount the filesystem: /sbin/mount -uw /
  4. Start up directory services:launchctl load /System/Library/LaunchDaemons/ that single user mode said to use, but that didn’t work — this did.
  5. Find what groups the user belongs to: dscl . -list /groups GroupMembership | grep username — repeat for each group except for the user’s own group.
  6. Remove the group corresponding to the username: dscl . delete /groups/username (this may not be necessary — you may get an error that the group doesn’t exist; you can ignore it and go on).
  7. Remove the user account: dscl . delete /users/username
  8. At this point, you may wish to remove or archive the user folder in /Users.
  9. You may wish to remove the .AppleSetupDone file in /var/db to cause the Setup Assistant to run when next booted.
  10. All done? Type reboot to reboot the system or shutdown -h now to shut down the system.

Nice and squeaky clean…..

How to get Admin rights in OSX Leopard using single user mode…

datePosted on 23:11, February 18th, 2009 by Many Ayromlou

Here is a quick way to gain access to that leopard machine you don’t remember the admin password to. Yes I know this can be used by all the kiddies out there, but lets hope they are smarter than that. To start, reboot the machine into single user mode by holding down command-s before the chime (on the white screen with gray apple logo). Once in single user mode you need to mount the HD in read-write mode using the following commands:
/sbin/fsck -fy
/sbin/mount -uw /

Then we need to start the directory services by issuing the following:
launchctl load /System/Library/LaunchDaemons/
First thing we need to do is to create the new userid (I call it newadminusername, you can use whatever you want). It is important to assign the user a Realname (which is the long name under OSX), a UID in 5xx range (I use 599 in this example) and assign the user to group 80 (which is the admin group):
dscl . create /Users/newadminusername
dscl . create /Users/newadminusername RealName “Test Admin User”
dscl . create /Users/newadminusername UniqueID 599
dscl . create /Users/newadminusername PrimaryGroupID 80

Next we need to use the dscl command to make our newadminusername part of the admin group in open directory using the following command:
dscl . append /Groups/admin GroupMembership newadminusername
To check and make sure it worked lets look at the list of users in the admin group using the following command:
dscl . read /Users/newadminusername
and make sure newadminusername is setup correctly.
dscl . read /Groups/admin
and make sure newadminusername is listed as part of this group. The output of the commands on my machine for my test userid “tester” (I chose tester as my “newuseradmin”):
Brain:~ root# dscl . read /Groups/admin
AppleMetaNodeLocation: /Local/Default
GroupMembership: root mayromlou tester
Password: *
PrimaryGroupID: 80
RealName: Administrators
RecordName: admin
RecordType: dsRecTypeStandard:Groups
SMBSID: S-1-5-32-544
Brain:~ root# dscl . read /Users/tester
AppleMetaNodeLocation: /Local/Default
AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;tester@LKDC:SHA1.532A60C783871C50CE0DAF911171860F528DE20F;LKDC:SHA1.532A60C783871C50CE0DAF911171860F528DE20F;
GeneratedUID: A248AE2D-DCA4-41AF-B3C9-91F96CB42091
Password: ********
PrimaryGroupID: 80
Test User
RecordName: tester
RecordType: dsRecTypeStandard:Users
UniqueID: 599

If everything is good to go reset the users password:
passwd newadminusername
Reboot by typing reboot from the command line. You can now use your newadminusername to login and admin the machine. Once you’ve got access back to the machine through your regular account, you might want to undo all the stuff we have done above (just to keep things neat and tidy). If you decide to do that, reboot into single user mode again by holding down command-s before the chime (on the white screen with gray apple logo). Once in single user mode you need to mount the HD in read-write mode using the following commands:
/sbin/fsck -fy
/sbin/mount -uw /

Then we need to start the directory services by issuing the following:
launchctl load /System/Library/LaunchDaemons/
Then we need to undo all the steps we did above to create the newadminusername ID. That can be done simply by issuing the following commands:
dscl . delete /Groups/admin GroupMembership newadminusername
dscl . delete /Users/newadminusername

That’s it…..You’re done……

Quick command line trick to make your Leopard stacks look nice….

datePosted on 15:30, August 25th, 2008 by Many Ayromlou

Here is a quick command to make Leopard’s stacks behave nicer when you move your mouse across the icons. You can type these two commands in terminal to activate the feature:
defaults write mouse-over-hilte-stack -boolean YES
killall Dock

or alternatively if you don’t like the look, type the following in terminal to reset it back:
defaults write mouse-over-hilte-stack -boolean NO
killall Dock

Custom Date Display for OSX

datePosted on 15:55, May 17th, 2008 by Many Ayromlou

Came across this tip today and I thought it might be useful to some of you out there. OSX, as great as it is, has always had this (atleast) one shortcoming for me. The stupid date display in the menubar. Why did they decide to hide the actual date/day of the week is beyond me. Yes, you can go and grab Magical, I know…..But that’s yet another program that needs to be loaded. There is a simpler solution. Follow the steps below and you can prettify your date display too :-).

  1. In System Preferences, open International and go to the Formats tab.
  2. Next to Dates, click the Customize button. Arrange your date in the format you want to appear on your menubar. I just simply grabbed the full format. Select the entire date format and copy it to your clipboard (Cmd+A, Cmd+C). Hit OK.
  3. Now back in the formats screen, hit the Customize button next to Times. Choose the “Medium” format. Make sure you do this to the Medium format, I tried the other ones (Short and Long) and it did not work (at least under Leopard 10.5.2). Paste the date format on your clipboard next to the time format, and hit OK. I pasted mine inside a set of square brackets in front, you can customize the extra characters to your liking.
  4. You should see the changes on your menubar immediately. If you end up with double day of the week display, in System Preferences, go to Date and Time, and uncheck “Show the day of the week.”

Enjoy :-).

RevoLabs makes Microphones cool again….

datePosted on 21:53, March 28th, 2008 by Many Ayromlou

A friend passed this on today (thanks Jeremy). If you use a mic in your day to day businness (or even if you’re an occasional ichat/skype user, you should check this out. RevoLabs have introduced a new line of Wireless microphones that come with RF-Armor. What does that mean, well the next time your GSM phone rings/sync/receives email, your microphone won’t be going all crazy. Plus their Solo mics come in three different types:

  • Wearable
  • Tabletop Boundry
  • XLR adapter for handheld mics

All their mics use a base station that hooks up to your PC or Mac via USB (no driver needed) and show up as a sound device. As a bonus the wearable one also has a audio out so you can wear it around your neck (on in your pocket) and hook up a headset to it as well.
They also have larger 4 channel and 8 channel wireless systems that you can mix and match using different solo mics. The preconfigured systems even come with a 4 or 8 channel Gentner echo cancellation device by polycom. Very nice…..