While I tried to upgrade both of my FreeBSD server (9 & 10) today, I got the following error:
install: /usr/ports/…/doc/: Inappropriate file type or format
Actually, here is the complete error message:
===> Staging for memcached-1.4.17_1 ===> memcached-1.4.17_1 depends on shared library: libevent-2.0.so - found ===> Generating temporary packing list /usr/bin/make install-recursive Making install in doc /usr/bin/make install-am test -z "/usr/local/man/man1" || /bin/mkdir -p "/usr/ports/databases/memcached/work/stage/usr/local/man/man1" install -o root -g wheel -m 444 memcached.1 '/usr/ports/databases/memcached/work/stage/usr/local/man/man1' test -z "/usr/local/bin" || /bin/mkdir -p "/usr/ports/databases/memcached/work/stage/usr/local/bin" install -s -o root -g wheel -m 555 memcached '/usr/ports/databases/memcached/work/stage/usr/local/bin' test -z "/usr/local/include/memcached" || /bin/mkdir -p "/usr/ports/databases/memcached/work/stage/usr/local/include/memcached" install -o root -g wheel -m 444 protocol_binary.h '/usr/ports/databases/memcached/work/stage/usr/local/include/memcached' install -o root -g wheel -m 555 /usr/ports/databases/memcached/work/memcached-1.4.17/scripts/memcached-tool /usr/ports/databases/memcached/work/stage/usr/local/bin install -o root -g wheel -m 444 /usr/ports/databases/memcached/work/memcached-1.4.17/doc/ /usr/ports/databases/memcached/work/stage/usr/local/man/man1 install: /usr/ports/databases/memcached/work/memcached-1.4.17/doc/: Inappropriate file type or format *** [post-install] Error code 71 Stop in /usr/ports/databases/memcached. *** [install] Error code 1 Stop in /usr/ports/databases/memcached.
Initially, I thought the problem was caused by the syntax error of the code, therefore, I tried to do the following:
#Shut down the server sudo /usr/local/etc/rc.d/memcached stop #Remove Memcached from the system sudo make deinstall #Clean up the package sudo make clean #Compile the package sudo make #Install the package sudo make install
Unfortunately, it still gave the same error message. I noticed that the error message has something to do with the documentation, so I decide to remove the documentation option in the installation page, i.e.,
#Enter the package setup sudo make config #Remove the "doc" option.
Unfortunately, it still gave the same response. I then tried to investigate the cause of the error. So I tried to copy the error command and re-ran it:
install -o root -g wheel -m 444 /usr/ports/databases/memcached/work/memcached-1.4.17/doc/ /usr/ports/databases/memcached/work/stage/usr/local/man/man1
Which return the exact the same error message:
install: /usr/ports/databases/memcached/work/memcached-1.4.17/doc/: No such file or directory
So I came up an idea. Since I don’t really need the documentation, why not I disable the document option?
cd /usr/ports/databases/memcached sudo nano Makefile
Change the following from:
post-install: ${INSTALL_SCRIPT} ${WRKSRC}/scripts/memcached-tool ${STAGEDIR}${PREFIX}/bin ${INSTALL_MAN} ${WRKSRC}/doc/${MAN1} ${STAGEDIR}${MAN1PREFIX}/man/man1 @${MKDIR} ${STAGEDIR}${DOCSDIR}
To:
post-install: ${INSTALL_SCRIPT} ${WRKSRC}/scripts/memcached-tool ${STAGEDIR}${PREFIX}/bin # ${INSTALL_MAN} ${WRKSRC}/doc/${MAN1} ${STAGEDIR}${MAN1PREFIX}/man/man1 @${MKDIR} ${STAGEDIR}${DOCSDIR}
That’s right, I just want to comment out the installation of the man/documentation part. Now, let’s try to reinstall the package again.
#sudo make install
Guess what, it works! Have fun!
–Derrick
Our sponsors:
Dear Derrick, thanks a lot for keeping your blog updated with your experiences on the BSDs, it’s indeed a great source of information for us who aren’t that familiar with them (I’m myself a n00b on them).
Your blog is a must-read one for me as there are some other great places like K.Mandla’s new project Inconsolation or CyberCrud(.net).
BR,
Martin