I've been lately doing some "research" about Linux. I just plainly sought what can be possibly done with sudo su.
I came across apt-get function. Apparentely this is way Linux works, along with sum' file extension, that, I forgot (.deb?).
But thats besides the point. Then I related apt-get remove and apt-get install to "chunk-system" (only I call it that way {supposedly}). So Linux, is like kind of worktable and all the applications are tools? I can just download Linux Ubuntu for example. apt-get remove everything I don't need and apt-get install all I need? Is that really so simple? But, then, how do I know name for application? So far I've seen in tutorials on how to install applications I saw pretty deadly names:

bash-3.1.10_1       The GNU Project's Bourne Again SHell
expat-2.0.0_1       XML 1.0 parser written in C
gettext-0.14.5_2    GNU gettext package
lftp-3.4.0_3        Shell-like command line ftp client
libiconv-1.9.2_2    A character set conversion library
libstatgrab-0.12_1  Provides a useful interface to system statistics
nmap-4.01           Port scanning utility for large networks
pcre-6.6_1          Perl Compatible Regular Expressions library
pkgconfig-0.20      A utility to retrieve information about installed libraries
vim-lite-6.4.6_1    Vi "workalike", with many additional features (Lite package

Recommended Answers

All 2 Replies

So Linux, is like kind of worktable and all the applications are tools?

Yes, like any other operating system. The main difference with Linux is that it is far more deeply modular. Except for the kernel itself, which is one monolithic block (but modules can be added to it), everything else that makes up the system is a large collection of small tools. In fact, the proper name for Linux is GNU/Linux because the GNU tools (e.g., bash, tar, gzip, gcc, cp, less, cat, dd, mount, ping, su, etc...) are what really make the operating system useful; the kernel by itself wouldn't be of much use. If you take any Linux distribution and look into the /bin folder, you find there all the core GNU tools without which the system wouldn't really work. It would be a really bad idea to remove any of these. The stuff you install later usually end up in the /usr/bin folder (or /usr/local/bin), which is more for accessory stuff.

In terms of terminology, we generally talk about "libraries", "tools", and "applications". Libraries are collections of executable functions that can be called from other programs or libraries, i.e., they are what programs use to do things. Tools are generally very small command-line programs that do one specific task (like diff which just tells you what is different between two files or folders) and they can be used directly in the terminal, or used in the back-end of other programs (tools or applications). And applications are programs that are meant to be for the end-user, e.g., like GIMP, or web-browsers, or a text editor, etc...

In Linux, everything is built on this ecosystem of libraries, tools and applications, which requires a good solution to deal with all the dependencies between these things. And that's where package management systems come into play. A "package" is a specific set of libraries, tools or applications, with the instructions on how to install, configure and remove it from the system, as well as the list of all the things it depends on (and minimum acceptable version). Conceptually, a package contains just a single library, tool or application, but usually that implies several files (binaries and configuration files). What the package management system does is that given a task, like installing a new package, it goes through the list of dependencies, if any of them are not yet installed on the system, it will add them to the list of packages to be installed (and recursively check their dependencies), and do general maintenance of a database (or dependency-graph) of all the packages, and report or resolve any conflicts between versions and things like that.

You can think of packages as a sort of equivalent of Windows installers (.msi), and the package management system as a kind of equivalent of Windows' "add/remove applications" thing. However, the Linux package management systems are miles ahead of the Windows equivalents, obviously. This is because Windows is not built as an ecosystem of tools and libraries, but rather as one system (the OS) with some applications installed on it. This means that most applications in Windows will install (and packaged with) all their dependencies (which are never exposed). This has the advantage that all applications are independent (self-sufficient, no dependency except for Windows itself, and some of its run-time libraries (.NET, VB for Apps, VC++ for Apps, DirectX, etc.)), but it has the great disadvantage that every application has very large installation requirements (HDD space) and there is a huge amount of duplication (that's the main reason why Windows together with its applications take up so much space on the hard-drive).

But from an end-user perspective, all you need to know is that if you want to install an application, you either go to your "software center" (or equivalent app), look it up and click "install", or you go to the terminal and type sudo apt-get install .. or sudo yum install .. (for Red-Hat).

can just download Linux Ubuntu for example. apt-get remove everything I don't need and apt-get install all I need?

Technically-speaking, yes, you could do that. Of course, like I said, there are core tools that you can't really remove without rendering your system unusable. And also, remember that the desktop environment (gnome, kde, etc.) that give you the nice graphical interface to your system can also be "removed", and so, be prepared to end up booting into your system and the system doesn't find a desktop environment to start, and therefore, will boot you into an old-school terminal and you'll have to manage from there. Obviously, if your goal is to really go deep and remove some of these core components (desktop env., X window system, etc.), then you are, in effect, creating your own custom distribution of Linux. If you changes you want to make are too deep, you probably shouldn't start with a very "complete" distribution like Ubuntu, you should probably start with a more stripped-down distribution like Debian or Arch. Most people who install Debian or Arch do it because that avoids the "removing everything" step when you want to install only the specific things that you want or need for your specific application or custom distribution.

But if you are talking more at a higher-level, then it is also true that if there is any application on your Ubuntu installation that you don't like, you can remove it. I mean, there is no limit to how much stuff you can remove from the system, and how much stuff you can install to replace it. But, like I said, if you would need to do a major overhaul of Ubuntu to be happy with your system, then you probably shouldn't install Ubuntu. The whole point of having all these distributions around is that you can pick the one that best approximates your desires or needs, and then tweak it to your liking, but you are better off starting with a reasonably close approximation of what you want, and distros like Ubuntu / Fedora / Mint / etc. are a reasonably close approximation of what most ordinary users want or need.

Is that really so simple?

Yes. At least 99% of the applications that you would want to install on Linux can be installed just with one apt-get command (or equivalently, by going through the GUI "software center" application). Occasionally, you might want to install software that is not present in the main repositories (where all the packages can be downloaded from). In those cases, you will have to manually download the .deb file and install it using either the command sudo dpkg --install my_package.deb or by simply double-clicking on the .deb file in your file-explorer application. Another possibility is that you find a third-party repository that hosts the packages you want, these are called "PPA" (Personal Package Archive), which require that you add the address of that repository to your system's list of repositories, which also just a simple command to issue, and it is usually posted on the PPA's webpage. But these two cases (PPA or manually installing a deb-file) occur very rarely ( < 1% of the time), and usually only when you are installing very "special" packages.

But, then, how do I know name for application? So far I've seen in tutorials on how to install applications I saw pretty deadly names:

Those names look like the actual names of the .deb files. These are not the names by which you find the packages on the main repositories, in general. You have to understand that there are two systems at play here. There is the actual package management system (the command dpkg on Debian-derived systems (like Ubuntu) and rpm on Red-Hat-derived systems (like Fedora or Red-Hat Enterprise Linux (RHEL)) which does the install/remove and dependency resolution work, e.g., actually installing .deb files (or .rpm files). Then, there are the applications that connect to package repositories, like apt-get (for Debian) and yum (for Red-Hat), or their GUI front-ends like "software center". Most main distributions have servers that host repositories of packages, which are periodically updated to the newer versions. When you do an install via apt-get, the package is looked-up via a much simpler name, such as just "bash", and the latest package (the actual .deb file) is downloaded and installed. So, the name of the .deb file is usually complicated because it includes the version name and the architecture (i386 or x86_64) but the name that you use to look it up in apt-get or the software center is usually only the base name (and sometimes with the major version number).

Most of the time, you can just try to issue the apt-get command with the base name, and it will work. For example, if you want to install GIMP (the "photoshop" equivalent in Linux), you can just do apt-get install gimp and it will work. Or, you can do a search in the software center, which will give you the matches to choose from. Or, you can do a search through the terminal by doing aptitude search gimp, which will print all the package with "gimp" in their name, along with a short (one line) description, and then you can install the appropriate package. And as a last resort, you can do a google search like "GIMP package Ubuntu", and look for links to launchpad.net which are webpages that host the descriptions and instructions for all packages in Ubuntu's main repositories and PPAs.

commented: Uhm, he just explained everything I could ask for. Congratulations. +2

I saw your answer before now already. But I went for some thoughts. I tried to install Debian, but it's impossible for me to understand what I have to do because there are 8 CD's. So I went for Arch Linux, which worked out in virtual machine. But, according to your post:

If you want a real powerful command-line operating system, you need to look at Unix-like systems, such as various distributions of Linux or BSD. The set of tools and commands available in a "bash" or similar shell environment on Unix-like systems dwarfs the pathetic features of the DOS environment.

So I could practically use Arch Linux for that? I won't just install GUI just fill it will all lotsa of goods etc. ? I learned a littlebit about Linux, including nano (package?), the utility that allows you to view files, in very command mode. So I just, install Arch, without GUI, fill it will whole lotsa of programs and utilities that are compatible to work in command-line mode and, of the bat?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.