Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

5/13/2013

Push to multiple remote repositories from a single local repo in Mercurial

You can set multiple remote repository aliases in the [paths] section of the repository configuration file. This file is in .hg/hgrc, and you would add paths like this:
[paths]
default = http://your-default-repo.com/repo
2nd = http://your-second-repo.com/repo
Then you would run hg push 2nd to push to your second repo and hg push to push to your default repo. 
Unfortunately its not possible to run  hg push * to push to all remote hosts at once, you have to specify 
each push destination one by one.

8/09/2012

view confs without comments

Just to note to myself. how to generate clean configs w/out any comments


sed -e '/^$/d;/^#/d;/^;/d' /etc/php.ini > php.ini.clean

result

root@ ~ # cat /etc/php.ini |wc -l
1249
root@ ~ # cat php.ini.clean |wc -l
182


5/24/2012

{new stable release} Zabbix auto install scripts

!!!NOTE: this scripts only for education/testing/investigation purposes, use on your own risk

I've prepared 2 auto Zabbix 2.0.0  installation scripts, tested on Centos 5.8 and 6.2

https://www.dropbox.com/s/pdekmf5yi6on8o3/zabbix20_el6_install.sh << Centos 6.2
https://www.dropbox.com/s/6sdlerh4ufthys4/zabbix20_el5_install.sh << Centos 5.8

short desc
#!/bin/sh
#
# Centos 6.2 (5.8) zabbix 2 install w/ psql9.1 jabber IPv6 support
#
# known problems:
# zabbix web config not fully configured during installation
# need manually to  setup $ZBX_SERVER  and $ZBX_SERVER_NAME parameters after installation finish
# after installation rpm prepared and it is in /root/rpmbuild/RPMS/
# do not know why but in this version zabbix won't work with DB user other than root had to create role for root
#
# reboot required after installation
#
#
# software distributed under the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
# (c) Michael Veselovski support@omgsw.com
# v1: initial release 4/10/2011
# v2: 24/12/2011 new release:
# - psql 9.1 support added
# - db user should be provided during installation
# - zabbix 1.9.8 support added
# v3.1: 15/05/2012 new release
# - script complete rewitten for Centos 6.2 suppport
# - script installing Zabbix 2.0.0rc4 /psql
# v3.2: 15/05/2012 second script for Centos 5.8
# - separate script for Centos 5.8 
# v4: 23/05/2012 script for zabbix 2.0.0
# - same problems as above

5/15/2012

{new release} Zabbix auto install scripts

!!!NOTE: this scripts only for education/testing/investigation purposes, use on your own risk


I've prepared 2 auto Zabbix 2.0.0rc4 installation scripts, tested on Centos 5.8 and 6.2

https://www.dropbox.com/s/unzvemer4itptdt/zabbix2rc4_el5_install.sh
https://www.dropbox.com/s/88nudr29280xm61/zabbix2rc4_el6_install.sh

short desc
#!/bin/sh
#
# Centos 6.2 (5.8) zabbix 2rc4 install w/ psql9.1 jabber IPv6 support
#
# known problems:
# zabbix web config not fully configured during installation
# need manually to  setup $ZBX_SERVER  and $ZBX_SERVER_NAME parameters after installation finish
# after installation rpm prepared and it is in /root/rpmbuild/RPMS/
# do not know why but in this version zabbix won't work with DB user other than root had to create role for root
#
# reboot required after installation
#
#
# software distributed under the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
# (c) Michael Veselovski support@omgsw.com
# v1: initial release 4/10/2011
# v2: 24/12/2011 new release:
# - psql 9.1 support added
# - db user should be provided during installation
# - zabbix 1.9.8 support added
# v3.1: 15/05/2012 new release
# - script complete rewitten for Centos 6.2 suppport
# - script installing Zabbix 2.0.0rc4 /psql
# v3.2: 15/05/2012 second script for Centos 5.8
# - separate script for Centos 5.8

5/05/2012

Changing tables engine from MyISAM to InnoDB

1. Edit /etc/my.cnf , make sure that:
  
#skip-innodb - commented out
innodb_file_per_table = ON

2. install Percona toolkit

Visit http://www.percona.com/software/percona-toolkit/ to download the latest release of Percona Toolkit. Or, get the latest release from the command line:
 
wget percona.com/get/percona-toolkit.tar.gz

wget percona.com/get/percona-toolkit.rpm

wget percona.com/get/percona-toolkit.deb

You can also get individual tools from the latest release:
 
wget percona.com/get/TOOL 
 
Replace TOOL with the name of any tool.

3. using pt-find convert tables from MyISAM to  InnoDB

pt-find db-name --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print

1/10/2012

[mdadm] 2 how-tos

1. how to cancel sync:

in order to cancel raid sync its necessary to left only one drive as active (we are talking about raid1):

 mdadm --fail /dev/md2 /dev/sda3
and  we will receive something like that (in my case it was md2 and /dev/sda3):

 mdadm --detail /dev/md2
/dev/md2:
        Version : 0.90
  Creation Time : Fri Feb  4 21:22:50 2011
     Raid Level : raid1
     Array Size : 1462766336 (1395.00 GiB 1497.87 GB)
  Used Dev Size : 1462766336 (1395.00 GiB 1497.87 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 2
    Persistence : Superblock is persistent

    Update Time : Tue Jan 10 18:37:27 2012
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           UUID : 71b91f85:bdd01b3f:776c2c25:004bd7b2
         Events : 0.28394

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       19        1      active sync   /dev/sdb3

       2       8        3        -      faulty spare   /dev/sda3
 /dev/sda3 was set as failed.

2. how to re-add failed disk into existing array and restart scan :)

  • set disk as failed (we already did that in 1st how-to )
  • remove device from array
  • mdadm --remove /dev/md2 /dev/sda3 
  • add device one more time
  • mdadm --add /dev/md2/ /dev/sda3

We can check the status of the arrays on the system with:
watch -n .1 cat /proc/mdstat
 or
mdadm --detail /dev/md0

10/04/2011

Zabbix auto install script

few weeks ago I've noticed that Zabbix team actively developed version 2 of their nice monitoring tool. I decided to install beta version with Postgresql 9.1. Unfortunately Zabbix 1.9.6 does not support Psql 9.1, but with my help :) they fixed that issue. meanwhile I've prepared script which install zabbix from source on clean Centos with Psql 8.4 support.

there is download link to that script https://www.dropbox.com/s/e205kh9vnwyppp8/zabbix_install_centos.sh

this script will be good for testers, sys admins who want to check new features of zabbix :)

7/14/2011

How to upgrade Postgres 8.4.x to 9.0.x

I've found a couple of manuals where this procedure is described, but I faced with the problem with postgres-libs which were required for my SVN.

so there is my way how to perfom upgrade

1. service postgresql stop
2. rsync -a -v --progress /var/lib/pgsql/ /var/lib/pgsql.old/ #this will backup everything
3. wget http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
4. rpm -i pgdg-centos-9.0-2.noarch.rpm
5. /etc/yum.repos.d/CentOS-Base.repo and add 'exclude=postgresql*' to the [base] and [updates] sections
6. yum remove postgresql84*
7. rpm -e postgresql-libs --nodeps
8. yum install postgresql90 postgresql90-server postgresql90-libs postgresql90-contrib postgresql90-devel
9. service postgresql-9.0 initdb
10. export PATH=/usr/pgsql-9.0/bin:$PATH
11. su - postgres ; export PATH=/usr/pgsql-9.0/bin:$PATH ; pg_upgrade --old-datadir "/var/lib/pgsql.old/data" --new-datadir "/var/lib/pgsql/9.0/data" --old-bindir "/usr/bin" --new-bindir "/usr/pgsql-9.0/bin"
12. cp /var/lib/pgsql.old/data/pg_hba.conf /var/lib/pgsql/9.0/data/pg_hba.conf
13. service postgresql-9.0 start
14. vacuumdb --all --analyze-only


Have fun with new Psql version :)

5/31/2011

replace mysql-server with percona server

what is percona-server:

Quote:
Percona Server is an enhanced drop-in replacement for MySQL. With Percona Server,

Your queries will run faster and more consistently.
You will consolidate servers on powerful hardware.
You will delay sharding, or avoid it entirely.
You will save money on hosting fees and power.
You will spend less time tuning and administering.
You will achieve higher uptime.
You will troubleshoot without guesswork.

Does this sound too good to be true? It's not. Percona Server offers breakthrough performance, scalability, features, and instrumentation. Its self-tuning algorithms and support for extremely high-performance hardware make it the clear choice for companies who demand the utmost performance and reliability from their database server


now if you want to have such miracle on your cpanel server you need to do this steps for replacing mysql-server with percona-server:

1. backup VPS.
2. dump all dbs.
3. stop all services on the vps
Code:
/etc/init.d/httpd stop ; /etc/init.d/exim stop ; /etc/init.d/pure-ftpd stop ; /etc/init.d/dovecot stop ; /etc/init.d/cpanel stop ; /etc/init.d/lfd stop ; /etc/init.d/munin-node stop ; /etc/init.d/crond stop ; /etc/init.d/mysql stop ; /etc/init.d/exim stop ;


4. make sure that everything is stopped
5. check what mysql packages are installed

Code:
rpm -qa | grep -i mysql


in my case it was MySQL-client MySQL-devel MySQL-test MySQL-bench MySQL-shared MySQL-server
so I run this command to completely remove mysql from vps
Code:
yum remove MySQL-client MySQL-devel MySQL-test MySQL-bench MySQL-shared MySQL-server


6. add percona repo

Code:
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm


7. check what packages are available in percona repo

Code:
yum list | grep percona


should be something like

Code:
# yum list | grep percona
percona-release.x86_64                    0.0-1                        installed
Percona-SQL-50-debuginfo.x86_64           5.0.92-b23.85.rhel5          percona
Percona-SQL-client-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-devel-50.x86_64               5.0.92-b23.85.rhel5          percona
Percona-SQL-server-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-shared-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-shared-compat.x86_64          5.1.43-2                     percona
Percona-SQL-test-50.x86_64                5.0.92-b23.85.rhel5          percona
Percona-Server-51-debuginfo.x86_64        5.1.56-rel12.7.224.rhel5     percona
Percona-Server-55-debuginfo.x86_64        5.5.11-rel20.2.115.rhel5     percona
Percona-Server-client-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-devel-51.x86_64            5.1.56-rel12.7.224.rhel5     percona
Percona-Server-server-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-shared-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-test-51.x86_64             5.1.56-rel12.7.224.rhel5     percona
gnuplot.x86_64                            4.2.6-14                     percona
gnuplot-emacs.x86_64                      4.2.6-14                     percona
maatkit.noarch                            7284-1                       percona
xtrabackup.x86_64                         1.6-245.rhel5                percona
xtrabackup-debuginfo.x86_64               1.6-245.rhel5                percona


8. decide what version you need 5.1 or 5.5
in my case I've installed percona 5.5

Code:
# rpm -qa | grep Percona
Percona-Server-client-55-5.5.11-rel20.2.115.rhel5
Percona-Server-server-55-5.5.11-rel20.2.115.rhel5
Percona-Server-shared-55-5.5.11-rel20.2.115.rhel5
Percona-Server-shared-compat-5.5.11-rel20.2.115.rhel5
Percona-Server-devel-55-5.5.11-rel20.2.115.rhel5
Percona-Server-test-55-5.5.11-rel20.2.115.rhel5


9. after Percona-server installation it is necessary to check if it started correctly as some variables in my.cnf are not supported.
10. after successful start it is necessary to run mysql_upgrade.
11. for finishing installation run easyapache and recompile apache/php/etc
12. Go to Server Configuration -> Update Config and set MySQL to "never", save, double check it has been done
13. Test new Apache to be sure server is working

12/17/2010

where is my free disk space :)

To list files larger than 10M:
find / -type f -size +10000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

To list files larger than 100M:
find / -type f -size +100000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

11/29/2010

how to convert tables to InnoDB

Using nice tool from Maatkit, we can easy convert tables from any storage engine to other. there is example how to convert from myisam to  innodb

mk-find db-name --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print

10/08/2010

reset CPAN first run

to reset CPAN configuration it is necessary to run this command

perl -e "use CPAN::FirstTime; CPAN::FirstTime::init();" 

9/20/2010

3 ways to reset root password in linux

today I'm gonna to explain how to reset root password in linux. 2 of this ways can be applied only if you have access to PC physically. 3rd way can be applied if your service provider have recovery console or something like that:)

so lets start:

1 EDITING LOADER (in my case it will be GRUB)

boot machine
when the GRUB menu appears, use arrow keys to choose OS to be booted
press letter "e'' on the keyboard to enter edit mode
use arrow keys to select the kernel line for kernel to be booted
press "e" to edit line
go to end of line and type "single" (without quotes) as a separate word
press ESC key to exit the edit mode
press "b" to boot into single user mode
after booting you can set password for root by running passwd  commnad
reboot and login with new pw

2. MAGIC WAY :)

If the easy method doesn't work on your machine, another way to solve the "lost root password" problem is to boot your computer from your Linux Installation CD/DVD, or from a live-CD/DVD such as Knoppix.

Boot with the live-disk then go to a terminal and su to root (no password is required) then issue the following commands (be sure to replace each /sda1 with your own root partition device):


Code:
mount -o dev,rw /mnt/sda1
 
cd /mnt/sda1/etc
Once you are into your system /etc directory, you can use a text editor (vim, nano, pico, etc.) to edit the /etc/shadow file where the password is stored. Various information about root and user accounts is kept in this plain-text file but we are only concerned with the password portion.

For example, the /etc/shadow entry for the "root" account may look something like this:

Code:
root:$1$aB7mx0Licb$CTbs2RQrfPHkz5Vna0.fnz8H68tB.:10852:0:99999:7:::
Now, using your favorite editor (I'll use vim) delete the password hash. For this example, the password is in green text and is all those characters between the 1st and 2nd colons.

Code:
vim shadow
After you've edited this field, it should look like this:

Code:
root::10852:0:99999:7:::
Now save the file and change back to the root directory and unmount the system root partition (don't forget to change the /sda1) as follows:

Code:
cd /
umount /mnt/sda1
Now reboot the computer.

Once the computer has booted and you're at the login prompt, type "root" and when asked for the password just press ENTER (entering no password). After a successful login, you need to set the new password for root using the following command:

Code:
passwd
this way was not tested by me and I found it in google :)
3.RECOVERY CONSOLE or LIVE CD/DVD

1.Boot from LIVECD or in RC
2. mount root partition
- if no raid on server than
mount /dev/hda2 /mnt/newroot
- if you have raid
mount /dev/md1 /mnt/newroot
NOTE make sure that you replace hhd name with your own

3. Bind /dev/random from your server
mount –bind /dev /mnt/newroot/dev
4. changing the root file system. (e.g.):  
# chroot /mnt/newroot /bin/bash
5.change root password
passwd
6. reboot in normal mode

9/14/2010

installin JDK and JRE gentoo way

had a task to install JDK and JRE on customer server. And when I found that on server Gentoo has been installed it was too late for me :) ( it is my first experience with Gentoo)

so there are the steps

1. update portage

#emerge --sync

2. install JDK/JRE

# emerge virtual/jdk
or
# emerge virtual/jre

3. Configuring JVM

 
list of java virtual machines
# java-config --list-available-vms
 
out put should be like:
# java-config --list-available-vms
The following VMs are available for generation-2:
1)      IcedTea6-bin 1.4.1 [icedtea6-bin]
2)      Sun JDK 1.5.0.20 [sun-jdk-1.5] (Build Only)
3)      Sun JDK 1.6.0.16 [sun-jdk-1.6]
set VM


(By handle (preferred))
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
(By number)
# java-config --set-system-vm 3
Now using sun-jdk-1.6 as your generation-2 system JVM


ref http://www.gentoo.org/doc/en/java.xml

9/10/2010

Mysql master-master replication

Today I’m going to write a short manual how to create failover mysql cluster.
What we need:

Server1 = master 1/slave2
Server2 = master2/slave2
Internal or external IPs (in this example I will use server1 _ip and server2_ip)
Replication user = replicau


Step-by-step how to:
Step 1.
On server 1 in my.cnf we need to add following lines

[mysqld]
#master config
Server-id =1
Log-bin = mysql-bin
binlog-do-db = test_db
… #we can add as many DB as we need to replicate
#slave config
replicate-do-db = test_db
… #we can add as many DB as we need to replicate
master-host = server2_ip
master-user= replicau
master-password =password_of_user_replicau
master-port = 3306


same lines we should add in my.cnf on server2, the only thing we should change is master-host parameter to use server1_ip instead of server2_ip and change server-id parameter
Step 2
Restart mysql servers
Step 3
On each server we need to create replication user:
Server1

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server2_ip' IDENTIFIED BY 'password';
server2

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server1_ip' IDENTIFIED BY 'password';

Step 4
Add server2 as slave to server1
- we need to set read_only parameter as ON on server1 (master 1)

mysql> SET GLOBAL read_only = ON;
mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 7984 | | |
+------------------+----------+--------------+------------------+
1 row in set (0,00 sec)
on server2

mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST = "server2_ip", MASTER_USER = "replicau", MASTER_PASSWORD = "password_of_user_replication", MASTER_LOG_FILE = "mysql-bin.000006", MASTER_LOG_POS = 7984;
mysql> slave start;


on server1

mysql> SET GLOBAL read_only = OFF;

on server2 check connection status

mysql> show slave status;

if we do not receive any errors, everything is perfect 

Step 5
Do Step 4 for connecting server 1 as slave to server2.

Step 6
Check if everything is fine, if no try from step 1 

Step 7
It’s time to have a cup of coffee/tea of a bottle of beer

6/23/2010

add repos into suse

recently I had a problem with adding repos into Suse. Unfortunately Google said that it is easy, but for newbie lime me it was very difficult :)

but finally I find the way how to add repos so

1. find link to repo
I suppose that this link will be very useful http://en.opensuse.org/Additional_package_repositories

2 in console please run this command
# zypper ar URL alias
URL- from 1.
Alias - type whatever you want

that's all :)

6/22/2010

How to Install FFmpeg in Linux ~centos way~

FFmpeg is so important if you are planning to run a video website with streaming with conversion of video files to different video formats. This tutorial is intended for Centos/Redhat versions of Linux where any novice user can install ffmpeg without compiling the source which is a more traditional way of installing the FFmpeg software on linux servers. In this tutorial i will show you the easy way to install ffmpeg and ffmpeg-php (php extension) with just yum rather than compiling ffmpeg from source files.

 

FFmpeg (http://ffmpeg.mplayerhq.hu)
Mplayer + Mencoder (http://www.mplayerhq.hu/design7/dload.html)
Flv2tool (http://inlet-media.de/flvtool2)
Libogg + Libvorbis (http://www.xiph.org/downloads)
LAME MP3 Encoder (http://lame.sourceforge.net)
FlowPlayer - A Free Flash Video Player - http://flowplayer.org/

 

Installing FFMpeg

yum install ffmpeg ffmpeg-devel

If you get package not found, then you will need to add few lines in the yum repository for dag packages installation. Create a file named dag.repo in /etc/yum.repos.d with the following contents on it

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

then

yum install ffmpeg ffmpeg-devel

If everything is fine, then the installation should proceed smoothly. If not you will get something like warning GPG public key missing .

Common Errors

To fix rpmforge GPG key warning:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

For more information refer to this faq depending on Centos version

Missing Dependency Error:

If you get missing dependency error like shown below, in the middle of ffmpeg installation

Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package ffmpeg
Error: Missing Dependency: libtheora.so.0(libtheora.so.1.0) is needed by package ffmpeg
Error: Missing Dependency: rtld(GNU_HASH) is needed by package ffmpeg
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package imlib2
Error: Missing Dependency: rtld(GNU_HASH) is needed by package a52dec
Error: Missing Dependency: rtld(GNU_HASH) is needed by package imlib2
Error: Missing Dependency: rtld(GNU_HASH) is needed by package gsm
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package x264
Error: Missing Dependency: rtld(GNU_HASH) is needed by package xvidcore
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package lame
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package a52dec
Error: Missing Dependency: rtld(GNU_HASH) is needed by package faad2
Error: Missing Dependency: rtld(GNU_HASH) is needed by package x264
Error: Missing Dependency: rtld(GNU_HASH) is needed by package lame
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package xvidcore
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package faac
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package faad2
Error: Missing Dependency: libgif.so.4 is needed by package imlib2
Error: Missing Dependency: rtld(GNU_HASH) is needed by package faac
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package gsm
Error: Missing Dependency: libpng12.so.0(PNG12_0) is needed by package imlib2
Error: Missing Dependency: rtld(GNU_HASH) is needed by package libmp4v2
Error: Missing Dependency: libc.so.6(GLIBC_2.4) is needed by package libmp4v2

then most commonly you have GLIB 2.3 installed instead of GLIB 2.4 version. To check the current GLIB version installed on your server. just use

yum list glib*

and it should list the latest GLIB package version.

The reason i was getting this error was my rpmforge packages was pointed to centos 5 versions instead of centos 4.6.

To fix dependency error:

To fix this error, you might need to check your rpmforge packages compatible to the release of your existing CentOS version.
Check the file /etc/yum.repos.d/rpmforge.repo and it should look like for Centos 4.6(Final). If you have lines like http://apt.sw.be/redhat/el5/en/mirrors-rpmforge you might need to make changes to the rpmforge.repos like shown below

Note: Backup the original rpmforge.repo file before you edit its content.

[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el4/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el4/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

To know what linux type and version you are running

cat /etc/redhat-release

Once this is done, do again yum install ffmpeg.

This trick resolved the problem in my linux box running Centos 4.6 and this is the only way i found to install ffmpeg using yum.

To check the FFmpeg working:

Finally, check the ffmpeg whether it is working or not.

> ffmpeg
> ffmpeg -formats
> ffmpeg --help
// This lists path of mpeg, its modules and other path information

ffmpeg -i Input.file Output.file

To check what audi/video formats are supported

ffmpeg -formats > ffmpeg-format.txt

Open the ffmpeg-formats.txt to see the ooutput

D means decode
E means encode
V means video
A means audio
T = Truncated

 

Install FFMPEG-PHP Extension

FFmpeg-php is a very good extension and wrapper for PHP which can pull useful information about video through API interface. Inorder to install it you will need to download the source file and then compile and install extension in your server. You can download the source tarball : http://ffmpeg-php.sourceforge.net/

 

wget http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download
tar xf ffmpeg-php-0.6.0.tbz2
cd ffmpeg-php-0.6.0
phpize
./configure && make && make install
echo 'extension=ffmpeg.so' > /etc/php5/conf.d/ffmpeg.ini
php -i |grep -i ffmpeg
Ensure it shows ffmpeg extension. Restart apache to let PHP use it too
/etc/init.d/apache2 restart
P.S.
On Suse 11 I have met compilation problem (PIX_FMT_RGBA32 undeclared ). It has been described here:
http://ubuntuforums.org/showthread.php?t=902247
I repeat solution:
vi ffmpeg_frame.c
:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32
:wq

 

Common Errors

1. If you get command not found error for phpize, then you will need to do yum install php-devel

2. If you get error like "ffmpeg headers not found" while configuring the source.

configure: error: ffmpeg headers not found. Make sure ffmpeg is compiled as shared libraries using the --enable-shared option

then it means you have not installed ffmpeg-devel packages.

To Fix: Just install ffmpeg-devel using

yum install ffmpeg-devel

3. If you get an error like shared libraries not found problem and the program halts in the middle, then you must specify the ffmpeg installed path explicitly to the ./configure.

configure: error: ffmpeg shared libraries not found. Make sure ffmpeg is compiled as shared libraries using the --enable-shared option

To Fix:

1. First find out the ffmpeg path with ffmpeg --help command. The prefix default path should be like /usr/local/cpffmpeg
2. Configure the FFmpeg-php with --with-ffmpeg option

./configure --with-ffmpeg=/usr/local/cpffmpeg

That should resolve the problem!

Editing PHP.INI

Once you have done that without any problems then you will see the php extension file /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so and you will need mention that extension in php.ini file

nano /usr/local/lib/php.ini

Put the below two lines at the end of the php.ini file

[ffmpeg]
extension=ffmpeg.so

Then restart the server service httpd restart

To check whether ffmpeg enabled with php, point your browser to test.php file. It should show the confirmation of installed ffmpeg php extension

// #test.php
<?php

phpinfo()

?>

If any case the ffmpeg does not show in the phpinfo() test make sure that php.ini path to ffmpeg.so is correct. Still the problem occurs, the reason could be you might be using older versions of ffmpeg-php which is buggy. Just download the latest version of ffmpeg-php source then compile it.

Installing Mplayer + Mencoder

Just issue the following yum commands to install the rest of the packages.

yum install mplayer mencoder

Installing FlvTool2

Flvtool2 is a flash video file manipulation tool. It can calculate metadata and can cut and edit cue points for flv files.

If you are on Centos 5 try yum install flvtool2 with dag repository and if you get package not found you will need to manually download and compile the flvtool2. You can download latest version of flvtool2 here: http://rubyforge.org/projects/flvtool2/

wget <url-link>

ruby setup.rb config
ruby setup.rb setup
sudo ruby setup.rb install

If you get command not found error, it probably means that you dont have ruby installed.

yum install ruby

Thats it! Once ffmpeg works fine with php extension, download a sample video, convert to .flv format in the command line and plug it to flowplayer to see it work on your web browser. Try also to download the video file offline and see whether the converted flv file works well with both audio and video.

6/01/2010

[FIX] #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

If you get such king of error #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

there are the steps how to fix this

1. login into your server
2. enter into mysql

set this 2 variables

set global max_allowed_packet=1000000000;
set global net_buffer_length=1000000;

3. exit from mysql

4. add this line into my.cnf

max_allowed_packet=16M

5 restart mysql

/etc/init.d/mysql restart

6. upload dump :)

4/20/2010

connection count

nice command for counting connection:

netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

4/18/2010

Mount remote FS using SSH

for different purposes you may need to copy a lot of files from your machine to remote. You can use SFTP or SCP but more beautiful solution  is mounting remote catalogs in your system using ssh. As my favorite Linux is Debian, so all examples are for this distr.

 

1. installation SSHFS support

apt-get install sshfs

2. MODULE LOAD

modprobe fuse

 

3. setup permissions

adduser username fuse

chown root:fuse /dev/fuse

 

4. mount remote catalogs

mkdir ~/remoteserver
sshfs username@host:/path ~/remoteserver

 

and for unmounting you can use this command

 

umount ~/remoteserver