|
Home | Switchboard | Unix Administration | Red Hat | TCP/IP Networks | Neoliberalism | Toxic Managers |
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and bastardization of classic Unix |
I regularly sit in the #ubuntu channel on the
Freenode network helping
folks with Ubuntu issues. One of the things I see people often doing is attempting to install software
from source before researching easier installation methods. This tutorial is focuses on using the command
line to perform a set of tasks. I have written a
CLI cheatsheet for those of you who feel the need to brush up on your CLI skills.
The proper steps for software installation on Ubuntu, in my opinion, are as follows:
Step 1
Search the Ubuntu
software repositories (known as repos). The Ubuntu repos are huge and there's a good chance that
the app you're looking for is already packaged for use in Ubuntu. It's important to note here that it's
best to install software from the repos which are meant for your version of Ubuntu. Mixing release packages
(using Jaunty repos in Karmic) or distros (using debian repos in Ubuntu) can cause problems on your
system, so stick with the proper repos. If you're unsure as to which version of Ubuntu you are using,
run lsb_release -a in a terminal.
You can search the Ubuntu repos with the following commands (package "foo" is used here as an example):
apt-cache search foo - Find packages
that include "foo" in the package filename or description
apt-cache search -n foo - Find packages
that include "foo" in the package filename
Example 1: You are looking for an irc client but you don't know of any apps which can perform the required
task, you would type the following:
This command tells the system to search the repos for all packages
which have "irc" in the description or package filename and filter that search for packages which also
have "client" in the description or package filename. Piping the apt-cache command to grep narrows the
search down more thanthat which would have resulted in
apt-cache search irc.
Example 2: You are looking for the Xchat IRC client, you would type the following:
This command tells the system to search the repos for all packages filenames
that contain "xchat".
Once you think you have found the proper package, you can do a bit of investigation with these commands:
apt-cache show xchat - Show information
about package xchat
apt-cache depends xchat - Show the
dependencies of package xchat
dpkg -L package xchat - List all files
in package xchat
Once you have found the proper package, you can install it with the command:
Installing software from the repos has many benefits. The three biggest benefits are that a) the software
is easy to install and remove, b) the system will resolve dependencies for you and c) the system will
keep the software up-to-date for you.
Step 2
If you're unable to find your desired software after searching the repos, you can try to find a PPA
(Personal Package Archive) from which to install the desired software. Personal Package Archives are
a type of software repository which are provided by other users to distribute pre-packaged software
for Ubuntu. You can search for a PPA
here.
Most PPA's will include instructions on how to add that PPA to your Ubuntu sources, update your sources
and install the desired packages.
Installing software from a PPA has the same benefits as installing software from the official Ubuntu
repos.
Step 3
If you're unable to find your desired software after using the above methods, you can try and find a
.deb package that was built specifically for Ubuntu. Keep in mind that other distros also uses .deb
packages but dependency and other issues come into play when attempting to use a .deb package which
wasn't built specifically for Ubuntu. It's also a bad idea to convert a .rpm package into a .deb package
and install the software that way. Some folks will tell you that using a Debian .deb package or converting
a .rpm package are acceptable methods of installing software in Ubuntu, but these methods are neither
recommended nor supported.
There many ways to find a .deb package which is compatible with the Ubuntu system. One way is to use
websites such as
GetDeb or
Gnome Files to
search for your desired software. Another way is to use a Linux-specific search engine such as
Google Linux
to aid your search.
One of the drawbacks to installing from a .deb package is that you may be required resolve dependencies
yourself. This can be a rather large job because some dependencies may have dependencies of their own
- this is known as "dependency hell" and is a place no user wants to be. Another drawback is that the
system will not keep the software up-to-date for you, as it will in installing from the repos, so you're
left to update the software manually.
Step 4
The chances of having to compile software from sources are slim these days thanks to the Ubuntu repos,
PPA's and the good folks who package .deb files. However, if you've come this far and are still unable
to install the desired software, you can attempt to compile and install the software from source. I
have been using Linux since 2001 and Ubuntu since 2005 and I don't bother compiling software anymore.
Call me lazy if you wish, but if I end up at this step and still don't have the desired software installed,
I simply look for another app to do the job - one that is either in the repos or can be installed via
a PPA or .deb package. If you have arrived at this step and still wish to continue, my advice is to
unpack the sources and read any included instructions, these files are often included as README or INSTALL
files. The good news is that you can launch your favorite IRC client and visit the #ubuntu channel on
the Freenode network where there are users just like you who spend their time helping folks solve problems.
Using a computer should be fun and easy, so it's best to begin with the least stressful steps to get
the job done.
|
Switchboard | ||||
Latest | |||||
Past week | |||||
Past month |
Nov 30, 2018 | www.linuxuprising.com
There are multiple ways of finding out to which package a particular file belongs to, on Ubuntu, Debian or Linux Mint. This article presents two ways of achieving this, both from the command line.
From the same series:
- How To Keep A Package From Updating In Ubuntu, Debian Or Linux Mint [APT]
- How To Search Available Packages From Command Line In Debian, Ubuntu Or Linux Mint [APT]
- How To List All Packages In A Repository On Ubuntu, Debian Or Linux Mint [APT]
1. Using apt-file to find the package that provides a file (for repository packages, either installed or not installed)
apt-file indexes the contents of all packages available in your repositories, and allows you to search for files in all these packages.That means you can use apt-file to search for files inside DEB packages that are installed on your system, as well as packages that are not installed on your Debian (and Debian-based Linux distributions, like Ubuntu) machine, but are available to install from the repositories. This is useful in case you want to find what package contains a file that you need to compile some program, etc.
apt-file cannot find the package that provides a file in case you downloaded a DEB package and installed it, without using a repository. The package needs to be available in the repositories for apt-file to be able to find it.
apt-file may not be installed on your system. To install it in Debian, Ubuntu, Linux Mint and other Debian-based or Ubuntu-based Linux distributions, use this command:
sudo apt install apt-file
This tool find the files belonging to a package by using a database, which needs to be updated in order to be able to use it. To update the apt-file database, use:sudo apt-file update
Now you can use apt-file to find the DEB package that provides a file, be it a package you've installed from the repositories, or a package available in the repositories, but not installed on your Debian / Ubuntu / Linux Mint system. To do this, run:apt-file search filenameReplacingfilename
with the name of the file you want to find.This command will list all occurrences of
filename
found in various packages. If you know the exact file path and filename, you can get the search results to only list the package that includes that exact file, like this:apt-file search /path/to/filenameFor example, running onlyapt-file search cairo.h
will list a large list search results:$ apt-file search cairo.h fltk1.3-doc: /usr/share/doc/fltk1.3-doc/HTML/group__group__cairo.html ggobi: /usr/include/ggobi/ggobi-renderer-cairo.h glabels-dev: /usr/include/libglbarcode-3.0/libglbarcode/lgl-barcode-render-to-cairo.h glabels-dev: /usr/share/gtk-doc/html/libglbarcode-3.0/libglbarcode-3.0-lgl-barcode-render-to-cairo.html gstreamer1.0-plugins-good-doc: /usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-cairo.html guile-cairo-dev: /usr/include/guile-cairo/guile-cairo.h guitarix-doc: /usr/share/doc/guitarix-doc/namespacegx__cairo.html ipe: /usr/share/ipe/7.2.7/doc/group__cairo.html libcairo-ocaml-dev: /usr/share/doc/libcairo-ocaml-dev/html/Pango_cairo.html libcairo-ocaml-dev: /usr/share/doc/libcairo-ocaml-dev/html/type_Pango_cairo.html libcairo2-dev: /usr/include/cairo/cairo.h ...
However, if you know the file path, e.g. you want to find out to which package the file/usr/include/cairo/cairo.h
belongs to, run:apt-file search /usr/include/cairo/cairo.h
This only lists the package that contains this file:$ apt-file search /usr/include/cairo/cairo.h libcairo2-dev: /usr/include/cairo/cairo.h
In this example, the package that includes the file I searched for (/usr/include/cairo/cairo.h
) islibcairo2-dev
.apt-file may also be used to list all the files included in a package (
apt-file list packagename
), perform regex search, and more. Consult its man page (man apt-file
) and help for more information (apt-file --help
).2. Using dpkg to find the package that provides a file (only for installed DEB packages - from any source)
dpkg can also be used to find out to which package a file belongs to. It can be faster to use than apt-file, because you don't need to install anything, and there's no database to update.However, dpkg can only search for files belonging to installed packages, so if you're searching for a file in a package that's not installed on your system, use apt-file. On the other hand, dpkg can be used to find files belonging to packages that were installed without using a repository, a feature that's not available for apt-file.
To use dpkg to find the installed DEB package that provides a file, run it with the
-S
(or--search
) flag, followed by the filename (or pattern) you want to see to which package it belongs, like this:dpkg -S filename
For example, to find out to which package thecairo.h
file belongs to, usedpkg -S cairo.h
:$ dpkg -S cairo.h libgtk2.0-dev:amd64: /usr/include/gtk-2.0/gdk/gdkcairo.h libcairo2-dev:amd64: /usr/include/cairo/cairo.h libpango1.0-dev: /usr/include/pango-1.0/pango/pangocairo.h libgtk-3-dev:amd64: /usr/include/gtk-3.0/gdk/gdkcairo.h
Just like for apt-file, this may show multiple packages that have files containing the filename you're looking for. You can enter the full path of the file to get only the package that contains that specific file. Example:$ dpkg -S /usr/include/cairo/cairo.h libcairo2-dev:amd64: /usr/include/cairo/cairo.h
In this example, the Debian package that includes the file I searched for (/usr/include/cairo/cairo.h
) islibcairo2-dev
.Other notable ways of finding the package a file belongs to is using the online search provided by Ubuntu and Debian:
- Ubuntu: https://packages.ubuntu.com/ - scroll down to
Search the contents o packages
and enter the filename you're looking for, as well as the distribution (Ubuntu version) and architecture.- Debian: https://www.debian.org/distrib/packages#search_contents - the search is similar to the one available for Ubuntu, so enter the filename you want to find, the distribution and architecture.
For both, you'll also find options to find the packages that contain files named exactly like your input keyword, packages ending with the keyword, or packages that contains files whose names contain the keyword.The Linux Mint package search website doesn't include an option to search for files inside packages, but you can use the Ubuntu or Debian online package search for packages that Linux Mint imports from Debian / Ubuntu.
Jun 28, 2017 | help.ubuntu.com
The
apt
tool on Ubuntu 14.04 and above makes this very easy to list installed packagesapt list --installed
All these commands except the search commands must be run as root or with superuser privileges, see sudo for more information.
Installation commands
Example:
sudo apt-get install ubuntu-desktopauto-apt
apt-get install <package_name>This command installs a new package. apt-get build-dep <package_name>This command searches the repositories and installs the build dependencies for <package_name>. If the package is not in the repositories it will return an error.
aptitude install <package_name>Aptitude is an Ncurses viewer of packages installed or available. Aptitude can be used from the command line in a similar way to apt-get. Enter man aptitude for more information.
- APT and aptitude will accept multiple package names as a space delimited list. For example:
apt-get install <package1_name> <package2_name> <package3_name>
Use the -s flag to simulate an action. For example: "apt-get -s install <package_name>" will simulate installing the package, showing you what packages will be installed and configured.
Maintenance commands
auto-apt run <command_string>This command runs <command_string> under the control of auto-apt. If a program tries to access a file known to belong in an uninstalled package, auto-apt will install that package using apt-get. This feature requires apt and sudo to work.
- Auto-apt keeps databases which need to be kept up-to-date in order for it to be effective. This is achieved by calling the commands auto-apt update, auto-apt updatedb and auto-apt update-local.
- Usage example
You're compiling a program and, all of a sudden, there's an error because it needs a file you don't have. The program auto-apt asks you to install packages if they're needed, stopping the relevant process and continuing once the package is installed.
# auto-apt run ./configureIt will then ask to install the needed packages and call apt-get automatically. If you're running X, a graphical interface will replace the default text interface.Removal commands
apt-get updateRun this command after changing /etc/apt/sources.list or /etc/apt/preferences . For information regarding /etc/apt/preferences , see PinningHowto . Run this command periodically to make sure your source list is up-to-date. This is the equivalent of "Reload" in Synaptic or "Fetch updates" in Adept.
apt-get upgradeThis command upgrades all installed packages. This is the equivalent of "Mark all upgrades" in Synaptic. apt-get dist-upgradeThe same as the above, except add the "smart upgrade" checkbox. It tells APT to use "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary.
"apt-get dist-upgrade" does not upgrade from a previous version of Ubuntu. For more information of upgrading from a previous version of Ubuntu see http://www.ubuntu.com/getubuntu/upgrading .
apt-get checkThis command is a diagnostic tool. It does an update of the package lists and checks for broken dependencies. apt-get -f installThis command does the same thing as Edit->Fix Broken Packages in Synaptic. Do this if you get complaints about packages with "unmet dependencies".
apt-get autocleanThis command removes .deb files for packages that are no longer installed on your system. Depending on your installation habits, removing these files from /var/cache/apt/archives may regain a significant amount of diskspace.
apt-get cleanThe same as above, except it removes all packages from the package cache. This may not be desirable if you have a slow Internet connection, since it will cause you to redownload any packages you need to install a program.
The package cache is in /var/cache/apt/archives . The command
du -sh /var/cache/apt/archiveswill tell you how much space cached packages are consuming. dpkg-reconfigure <package_name>Reconfigure the named package. With many packages, you'll be prompted with some configuration questions you may not have known were there.
For example:
will present you with a "wizard" on configuring fonts in Ubuntu. echo "<package_name> hold" | dpkg --set-selectionsThis command places the desired package on hold. TODO: Bug #42178: This is the same as Synaptic's Package->Lock Version . */
This command may have the unintended side effect of preventing upgrades to packages that depend on updated versions of the pinned package. apt-get dist-upgrade will override this, but will warn you first. If you want to use this command with sudo, you need to use echo "<package_name> hold" | sudo dpkg --set-selections not sudo echo "<package_name> hold" | dpkg --set-selections .
echo "<package_name> install" | dpkg --set-selectionsThis command removes the "hold" or "locked package" state set by the above command. The note above about sudo usage applies to this command.Search commands
apt-get remove <package_name>This command removes an installed package, leaving configuration files intact. apt-get purge <package_name>This command completely removes a package and the associated configuration files. Configuration files residing in ~ are not usually affected by this command.
- + operator
If you want to remove package1 and install package2 in one step:
apt-get remove <package1> <package2>+. apt-get autoremoveThis command removes packages that were installed by other packages and are no longer needed.
apt-get autoremove <package_name>This command removes an installed package and dependencies.While there is no built in way to remove all of your configuration information from your removed packages you can remove all configuration data from every removed package with the following command.
dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge
apt-cache search <search_term>Each package has a name and a description. This command lists packages whose name or description contains <search_term>.
dpkg -l *<search_term>* apt-cache search , but also shows whether a package is installed on your system by marking it with ii (installed) and un (not installed). apt-cache show <package_name>This command shows the description of package <package_name> and other relevant information including version, size, dependencies and conflicts.
dpkg --print-avail <package_name>This command is similar to "apt-cache show". dpkg -L <package_name>This command will list files in package <package_name>.
dpkg -c foo.debThis command lists files in the package "foo.deb". Note that foo.deb is a pathname . Use this command on .deb packages that you have manually downloaded.
dlocate <package_name>This command determines which installed package owns <package_name>. It shows files from installed packages that match <package_name>, with the name of the package they came from. Consider this to be a "reverse lookup" utility.
In order to use this command, the package dlocate must be installed on your system.
dpkg -S <filename_search_pattern>This command does the same as dlocate , but does not require the installation of any additional packages. It is slower than dlocate but has the advantage of being installed by default on all Debian and Ubuntu systems.
apt-file search <filename_search_pattern>This command acts like dlocate and dpkg -S , but searches all available packages. It answers the question, "what package provides this file?".
apt-file needs to be updated regularly like apt-get. Use the command:
apt-file update
In order to use this command, the package apt-file must be installed on your system.
apt-cache pkgnamesThis command provides a listing of every package in the systemA general note on searching: If searching generates a list that is too long, you can filter your results by piping them through the command grep . Examples:
apt-cache search <filename> | grep -w <filename>will show only the files that contain <filename> as a whole word
dpkg -L package | grep /usr/binwill list files located in the directory /usr/bin, useful if you're looking for a particular executable.For more information on apt-get, apt-cache and dpkg consult their manual pages by using the man command. These manuals will provide a wider scope of information in addition to all of the options that you can use with each program.
Typical usage example
Example:
man apt-get.I want to feel the wind in my hair, I want the adrenaline of speed. So let's install a racing game. But what racing games are available?
apt-cache search racing gameIt gives me a lot of answers. I see a game named "torcs". Let's get some more information on this game.
apt-cache show torcsHmmm... it seems interesting. But is this game not already installed on my computer? And what is the available version? Which repository is it from (Universe or Main)?
apt-cache policy torcsOk, so now, let's install it!
apt-get install torcsWhat is the command I must type in the console to launch this game? In this example, it's straightforward ("torcs"), but that's not always the case. One way of finding the name of the binary is to look at what files the package has installed in "/usr/bin". For games, the binary will be in "/usr/games". For administrative programs, it's in "/usr/sbin".
dpkg -L torcs | grep /usr/games/The first part of the command display all files installed by the package "torcs" (try it). With the second part, we ask to only display lines containing "/usr/games/".
Hmmm, that game is cool. Maybe there are some extra tracks?
apt-cache search torcsBut I'm running out of space. I will delete the apt cache!
apt-get cleanOh no, my mother asked me to remove all games from this computer. But I want to keep the configuration files so I can simply re-install it later.
apt-get remove torcsIf I want to also remove config files :
apt-get purge torcsSetting up apt-get to use a http-proxyThese are three methods of using apt-get with a http-proxy.
Temporary proxy sessionThis is a temporary method that you can manually use each time you want to use apt-get through a http-proxy. This method is useful if you only want to temporarily use a http-proxy.
Enter this line in the terminal prior to using apt-get (substitute your details for yourproxyaddress and proxyport).
export http_proxy=http://yourproxyaddress:proxyportIf you normally use sudo to run apt-get you will need to login as root first for this to work unless you also add some explicit environment settings to /etc/sudoers, e.g.
Defaults env_keep = "http_proxy https_proxy ftp_proxy"APT configuration file methodThis method uses the apt.conf file which is found in your /etc/apt/ directory. This method is useful if you only want apt-get (and not other applications) to use a http-proxy permanently.
On some installations there will be no apt-conf file set up. This procedure will either edit an existing apt-conf file or create a new apt-conf file.
gksudo gedit /etc/apt/apt.confAdd this line to your /etc/apt/apt.conf file (substitute your details for yourproxyaddress and proxyport).
Acquire::http::Proxy "http://yourproxyaddress:proxyport";Save the apt.conf file.
BASH rc methodThis method adds a two lines to your .bashrc file in your $HOME directory. This method is useful if you would like apt-get and other applications for instance wget, to use a http-proxy.
gedit ~/.bashrcAdd these lines to the bottom of your ~/.bashrc file (substitute your details for yourproxyaddress and proxyport)
http_proxy=http://yourproxyaddress:proxyport export http_proxySave the file. Close your terminal window and then open another terminal window or source the ~/.bashrc file:
source ~/.bashrcTest your proxy with sudo apt-get update and whatever networking tool you desire. You can use firestarter or conky to see active connections.
If you make a mistake and go back to edit the file again, you can close the terminal and reopen it or you can source ~/.bashrc as shown above.
source ~/.bashrcHow to login a proxy userIf you need to login to the Proxy server this can be achieved in most cases by using the following layout in specifying the proxy address in http-proxy. (substitute your details for username, password, yourproxyaddress and proxyport)
http_proxy=http://username:password@yourproxyaddress:proxyport
Google matched content |
...
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: December, 24, 2018
Also what happens if the person doesn't know the names of the application they want, only it's type?
Both of these are issues that I come across regularly.