Skype

来自Ubuntu中文
Alfredhuang留言 | 贡献2008年7月23日 (三) 10:24的版本
跳到导航跳到搜索

{{#ifexist: :Skype/zh | | {{#ifexist: Skype/zh | | {{#ifeq: {{#titleparts:Skype|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:Skype|1|-1|}} | zh | | }}


介绍

Skype是一款能让你使用电脑通过互联网拨打电话的专用软件。Skype使用了分散点对点技术,所以你的电话不是通过一个中心服务器,而是通过分布式服务器群和其他用户传递。它使用了其专有的通信协议来实现这点。另外,所有的通信均使用端到端加密以防他人窃听。Skype软件是自由使用的,但它并不是免费软件;其源代码是私有并不可修改的。 更多有关Skype的信息见Wikipedia。Skype官方站点是http://www.skype.com。 SkypeEthics给出了一些信息以说明为什么有些用户选择不使用Skype。 使用开源协议的开源可替代软电话包括EkigaTwinkleWengophone。 你需要一套可工作的声音输入和输出配置以使用Skype。 大多数的现代电脑拥有外置的声音输出,但是你需要一个麦克风(或头戴设备,当你没有购买麦克风时)作为输入。为了播放你的面容,你可能还需要一个网络摄像头。 有关发行于Ubuntu上的Skype详细信息的连接能够在下面的资源中找到。

安装Skype

Skype不包含在任何一个Ubuntu软件库中,因此不能通过使用不带Skype库的Ubuntu的包管理软件如Synapticapt-get。这里有两种选择-Skype库,或Medibuntu库。 Using a repository, you will automatically receive future updates to the software. If you don't want to do that, or can't (for example, if you're on amd64), perhaps the easiest way to install is from the Debian (.deb) package available directly from the Skype website. The downside of this is that you won't automatically get future updates, you will have to download the new versions as they become available.

Skype库

  1. Add the Skype repository*: deb http://download.skype.com/linux/repos/debian/ stable non-free
  2. Reload or update the package information
  3. Install the skype package.

Medibuntu库

  1. See Medibuntu for more information.

Refer to Repositories/Ubuntu for information on adding, removing and modifying repositories

Debian包

  1. Download Debian package from http://www.skype.com/go/getskype-linux-ubuntu
  2. Open the file (will open with the default GDebi Package Installer).
  3. Click on install button.

AMD64

For 6.06:

  1. Download the debian package (http://skype.com/download/skype/linux/)
  2. Install skype: sudo dpkg -i --force-all <the_package>
  3. Determine missing 32bit libs: ldd /usr/bin/skype | grep not
  4. Download the libs (the i386 version of course, hint: the package is named libqt3-mt): http://packages.ubuntu.com/
  5. mkdir ~/.32bitLibs (or use /lib32 and change last step to this directory)
  6. extract the *.deb files (dpkg-deb --extract <package> <targetdir>)
  7. copy the necessary library files from the extracted packages to ~/.32bitLibs
  8. create a wrapper script: export LD_LIBRARY_PATH="/home/<your_user>/.32bitLibs/";skype

For 6.10 or 7.04:

  1. Install 32-bit libraries: sudo aptitude install lib32asound2 ia32-libs-gtk ia32-libs-kde
  2. Download the debian package (http://skype.com/download/skype/linux/)
  3. Install skype: sudo dpkg -i --force-architecture <the_package>

For 7.10:

  1. Install 32-bit libraries: sudo aptitude install lib32asound2 ia32-libs-gtk ia32-libs-kde
  2. Download the Ubuntu package (http://skype.com/download/skype/linux/)
  3. Install skype: sudo dpkg -i --force-architecture <the_package>
  4. Determine if missing any additional 32bit libs: ldd /usr/bin/skype | grep not
  5. Search and download the missing 32bit (i386) libs. (Hint libdbus-1.3, libqt4-core, libqt4-gui, libsigc++-2.0, libXss)
  6. Extract the downloaded *.deb files: dpkg-deb --extract <package> <targetdir>
  7. Copy the necessary library files from the extracted packages to /lib32: sudo cp -i <targetdir>/usr/lib/* /lib32/

For 8.04:

  1. Install the ia32-libs package (from universe component)
  2. Download Skype package for Ubuntu (http://skype.com/download/skype/linux/)
  3. Install it: sudo dpkg --install --force-architecture --force-depends <downloaded_package>

运行Skype

To start Skype, choose Applications->Internet->Skype. It usually takes a minute or two for Skype to get started, and you may think that nothing is happening, so be patient. When the Skype window finally opens, sign up (if necessary) and log in to your Skype account. Test your configuration by selecting the Echo / Sound Test Service contact (if not there already, add contact echo123) and clicking on the large green button at the bottom of the Skype window. If the connection is made and you hear a voice, your sound configuration is fine. If you cannot hear a voice, see the troubleshooting section below.

Skype疑难解答

If you are having audio problems, first check to make sure that sound is working on your system and that your microphone and speaker volume levels are high enough. If that does not work, then try changing the Skype audio device, and finally, if all else fails, modify your ESD configuration.

音频问题

1. 音量

  1. Test that output is working with the Sound Preferences dialog. Choose System->Preferences->Sound.
  2. Test that microphone input is working with the Sound Recorder application. Choose Applications->Sound & Video->Sound Recorder.
  3. Ensure that your audio output and microphone input channels are not muted by choosing Applications->Sound & Video->Volume Control.

2. Skype 音频设备

If your audio levels are properly configured and you can hear audio in Skype but your contacts cannot hear your input, you may need to change Skype's input device. From the Skype menu, choose Tools->Options and select Hand/Headsets in the dialog that opens. Experiment with different Calls selections, if they are available.

3. ESD 配置

Note: for Ubuntu 5.10 (Breezy) only. This is the already the default configuration in Ubuntu 6.06 (Dapper). A problem with the GNOME ESD (Enlightened Sound Daemon) server may cause issues with Skype for some users. If Skype is unable to make or receive calls and continuously crashes, then a small change to the ESD configuration may help. Run:

gksudo gedit /etc/esound/esd.conf

and change the line:

auto_spawn=0

to:

auto_spawn=1

Log out and back in to restart ESD, and test Skype again as above. It is likely that this solution will only work if Skype is the only application using audio. You will not be able to play music while using Skype, and you will not be able to use Skype while playing music. For more setup information, see the Skype website article Skype Sound and Audio Set-Up - PC Running Linux.

4. ALSA 配置

Enabling ALSA gives you the choice to workaround some Skype issues: The present Skype Linux release (1.2.0.18) uses OSS sound, which means it allows only one application to access sound device. On some systems, OSS is not even used by default, which means you won't be able to select the OSS sound device (/dev/dsp) at all, because it does not exist. Worse off, it has a bug that makes Skype unusable after a call. Sometimes a few calls can be made, before it happens, but later only solution is to restart Skype. Technically it seems that Skype "forgets" to close the sound device before trying to open it again and therefore locks up. This seems to happen when you are the first to hang up and not when the other party hangs up first, so a workaround is to just wait at the end of a call and let the other party finish first. To avoid these issues, you can use ALSA instead of ESD. First, follow the guidelines found in [1]. Then follow up with [2]. Good luck! Note that the above forum post howto is for Hoary/Breezy. This should, according to mdz's post, not be an issue in Ubuntu 6.06 (Dapper).

4.1 软件混音的另一个可能的解决办法

If none of the other options works, try this one (it's working on a HP Pavilion dv1000). Taken from http://forum.skype.com/viewtopic.php?t=48195 Create or add the following to your .asoundrc file:

gedit ~.asoundrc

Add the following text to it

pcm.skype {
   type asym
   playback.pcm "skypeout"
   capture.pcm "skypein"
}

pcm.skypein {
   # Convert from 8-bit unsigned mono (default format set by aoss when
   # /dev/dsp is opened) to 16-bit signed stereo (expected by dsnoop)
   #
   # We can't just use a "plug" plugin because although the open will
   # succeed, the buffer sizes will be wrong and we'll hear no sound at
   # all.
   type route
   slave {
      pcm "skypedsnoop"
      format S16_LE
   }
   ttable {
      0 {0 0.5}
      1 {0 0.5}
   }
}

pcm.skypeout {
   # Just pass this on to the system dmix
   type plug
   slave {
      pcm "dmix"
   }
}

pcm.skypedsnoop {
   type dsnoop
   ipc_key 1133
   slave {
      # "Magic" buffer values to get skype audio to work
      # If these are not set, opening /dev/dsp succeeds but no sound
      # will be heard. According to the alsa developers this is due
      # to skype abusing the OSS API.
      pcm "hw:0,0"
      period_size 256
      periods 16
      buffer_size 16384
   }
   bindings {
      0 0
   }
}

Create a skype launcher (in this example is going to be at your home directory).

gedit ~/skype.sh

add the following text

#/usr/bin/sh

ALSA_OSS_PCM_DEVICE="skype" aoss /usr/bin/skype --disable-dbus

Give skype.sh execution rights by browsing with Nautilus over there, right click on the file, go to Properties, go to Permissions tab, and select "Execute" for the user. Double click on the file and you should be done.

视频问题

For troubleshooting video issues on Skype, the following wiki pages may be helpful:

端口使用

Skype uses port 80 by default, and thus, may block some other applications that use the same port such as Apache. The solution is to change the port in one of the applications. Usually, port 81 is free and works fine. To change the port number in Skype go to menu Tools > Options, then click on the Advanced tab, then in the 'port' box, change to your preference.

无效指针

Some very few users have experienced the inability to normally start Skype 1.3 under Dapper, receiving the following error:

*** glibc detected *** free(): invalid pointer: 0x08aab8a0 ***

The pointer's address might vary on install or version, the only common factor exhibited by all people receiving the error is that all of them use SCIM to be able to input in one of various asian languages (some users exhibit this while using scim for Chinese, others when using it to input in Japanese so the language itself seems not to be important, only the presence of scim is). A few of these same persons report success in running a statically compiled version of the Skype 1.3 client. Others have shown success in changing the XIM input preferences during Skype launch by launching Skype (from either the command line or Gnome's/Kde's menu) with this command:

XMODIFIERS=@im=none QT_IM_MODULE=xim skype

This will hinder (read, remove) your ability to use scim to type in a foreign language inside Skype itself, but it will also most probably permit you to run Skype normally. If you use SCIM as your default input method, and you are unable to run Skype you could try these solutions and see if they solve the problem.

系统的短暂挂起(几秒内)

Skype apparently creates FIFO threads when initiating a chat with someone. Users members of the admin group (typically the user who has installed Ubuntu) are likely to find this really annoying as the created threads do not relinquish the CPU easily. The first option (maybe the easiest) is to remove yourself from the admin group. You may otherwise intercept calls to pthread_create() with a preloaded (LD_PRELOAD) DSO:

#define _GNU_SOURCE 1
#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>
#include <string.h>

int (* orig_pthread_create) (pthread_t *thread,
       const pthread_attr_t *attr,
       void *(*start_routine)(void*), void *arg) = NULL;

static void change_sched_policy (pthread_attr_t *attr) {

   int policy;

   if (attr == NULL) return;
   pthread_attr_getschedpolicy (attr, &policy);
   if (policy == SCHED_FIFO) {
      printf ("### SCHED_FIFO policy changed to SCHED_RR\n");
      pthread_attr_setschedpolicy (attr, SCHED_RR);
   }
}

int pthread_create(pthread_t *thread,
       const pthread_attr_t *attr,
       void *(*start_routine)(void*), void *arg) {

   pthread_attr_t new_attr;

   if (orig_pthread_create == NULL) {
      orig_pthread_create = dlsym (RTLD_NEXT, "pthread_create");
   }

   change_sched_policy (attr);

   return orig_pthread_create (
      thread, attr, start_routine, arg
   );

}

Compile the above source code with gcc -shared -o libskype.so skype.c and launch Skype as follow:

export LD_LIBRARY_PATH=path_to/libskype.so:/usr/lib/libqt-mt.so.3
/usr/bin/skype

My work colleagues and I have tested this on Ubuntu Edgy Eft and we haven't seen, so far, any side effects.

Skype 启动失败

Skype has a conflict when the Nessus scanner is installed. When opening Skype from the command line the following error occurs:

skype: symbol lookup error: /usr/lib/libQtNetwork.so.4: undefined symbol: _ZN14QObjectPrivate15checkWindowRoleEv

The solution is to edit /etc/ld.so.conf and comment out the line /opt/nessus/lib and then run sudo ldconfig.

sudo nano /etc/ld.so.conf

Put a # infront of the line /opt/nessus/lib. Save and exit.

include /etc/ld.so.conf.d/*.conf

#/opt/nessus/lib

Run

sudo ldconfig

Now Skype should open.

显示配置

Because Skype is a Qt application, Skype's typeface will appear very large on GNOME desktops. You can use either the kcontrol or the qt3-qtconfig package to configure the appearance of Skype and other KDE/QT applications. Of these two, the QT Configurator (qt3-qtconfig) has far fewer dependencies than kcontrol and may therefore be more convenient for people who mostly use non-KDE software. See also QtGnome for how to make Skype (and other Qt applications) look more like Gnome.

  • A quick fix, without installing any configuration packages at all, is to make a file qtrc in your $HOME/.qt directory, and put these two lines in it:
  [General]
  font=Bitstream Vera Sans Mono,9,-1,5,50,0,0,0,0,0
  
  • You can start QT Configurator with the "qtconfig" command. On the "Fonts" tab, choosing Font Family Sans Serif and Point Size 10 will give something that resembles Ubuntu's GNOME desktop.
  • If you install the kcontrol package, you may run it by entering kcontrol into the Applications/Run Application... prompt. Expand the Appearance & Themes menu and select Fonts. Press Adjust All Fonts and select Size. Lower this value to your preference (size 10 or 11 is usually satisfactory). Press OK and Apply and exit the KDE Control Center.

Skype?action=AttachFile&do=get&target=kcontrol.png

资源

http://forum.skype.com/

  • A discussion on Skype forum of the dependency problem

http://forum.skype.com/viewtopic.php?t=38474&postdays=0&postorder=asc&start=0

  • A discussion on Ubuntu forum of the dependency problem

http://www.ubuntuforums.org/showthread.php?t=81831

System hangs for a short while