https://wiki.archlinux.org/api.php?action=feedcontributions&user=Kristi&feedformat=atomArchWiki - User contributions [en]2024-03-28T21:25:27ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=CUPS&diff=70781CUPS2009-06-18T10:34:10Z<p>Kristi: net-snmp is not listed as a dependency so it no longer needs to be manually installed</p>
<hr />
<div>[[Category:Printers (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|CUPS}}<br />
{{i18n_entry|Рolski|CUPS (Polski)}}<br />
{{i18n_entry|Русский|CUPS (Русский)}}<br />
{{i18n_entry|Türkçe|CUPS (Türkçe)}}<br />
{{i18n_links_end}}<br />
=Introduction=<br />
<br />
==What is CUPS?==<br />
<br />
Straight from the CUPS website:<br />
:''"The Common UNIX Printing System ("CUPS") is a cross-platform printing solution for all UNIX environments. It is based on the "Internet Printing Protocol" and provides complete printing services to most Postscript and raster printers. CUPS is provided under the GNU GPL..."''<br />
Although there are other printing packages such as LPRNG, CUPS is quite popular and relatively easy to use. It is the default printing system on Arch Linux as well as many other Linux distributions.<br />
<br />
==Troubleshooting CUPS & components==<br />
<br />
The best way to get printing working is to set 'LogLevel' in {{Filename|/etc/cups/cupsd.conf}} to:<br />
LogLevel debug<br />
<br />
And then viewing the output from {{Filename|/var/log/cups/error_log}} like this:<br />
# tail -n 100 -f /var/log/cups/error_log<br />
<br />
The characters at the left of the output stand for:<br />
*D = Debug<br />
*E = Error<br />
*I = Information<br />
*And so on.<br />
<br />
These files may also prove useful:<br />
*{{Filename|/var/log/cups/page_log}} &ndash; spits out a new entry each time a print is successful.<br />
*{{Filename|/var/log/cups/access_log}} &ndash; lists all cupsd http1.1 server activity.<br />
<br />
Of course it's important to know how CUPS work if you want to solve your problems, this is somewhat correct:<br />
<br />
# An application sends a .ps file (PostScript, a script language that details how the page will look) to CUPS when you select 'print' (99% of apps do).<br />
# CUPS then looks at your printers PPD file (printer description file) and figures out what filters it needs to use to convert the .ps file to a language that the printer understands (like PJL, PCL). Usually it needs ghostscript.<br />
# GhostScript takes the input and figures out which filters it should use, then applies them and converts the .ps file to a format understood by the printer.<br />
# Then it is sent to the backend. For example, if you have your printer connected to a USB port, it uses the USB backend.<br />
<br />
Print a document and watch {{Filename|error_log}} to get a more detailed and correct image of the printing process.<br />
<br />
=Installing CUPS=<br />
<br />
==Packages==<br />
<br />
You will need CUPS and Ghostscript for sure:<br />
# pacman -S cups ghostscript gsfonts<br />
<br />
* '''cups''' &ndash; The actual CUPS software<br />
* '''dbus-core''' &ndash; The dbus library is needed for cups<br />
* '''ghostscript''' &ndash; An interpreter for the Postscript language<br />
* '''gsfonts''' &ndash; Ghostscript standard Type1 fonts<br />
<br />
Here are some of the following driver packages; choosing the right driver depends on the printer you own. If unsure, install gutenprint.<br />
<br />
* '''gutenprint''' &ndash; A collection of high quality drivers for Canon, Epson, Lexmark, Sony, Olympus, and PCL printers for use with Ghostscript, CUPS, Foomatic, and the Gimp.<br />
* '''foomatic-db''', '''foomatic-db-engine''', '''foomatic-db-nonfree''' and '''foomatic-filters''' &ndash; Foomatic is a database-driven system for integrating free software printer drivers with common spoolers under Unix<br />
* Installing '''foomatic-filters''' should solve your problems if the cups error_log is reporting "stopped with status 22!"<br />
* '''hplip''' &ndash; HP Linux inkjet driver. Provides support for DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet printer models.<br />
* '''ufr2''' &ndash; Canon UFR2 driver with support for LBP, iR and MF series printers. Package is available in AUR.<br />
* '''cups-pdf''' &ndash; A nice package that allows one to setup a virtual PDF Printer that generates a PDF out of anything sent to it.<br />
<br />
If your system is connected to a networked printer using the samba protocol or if the system is to be a print server for Windows clients:<br />
# pacman -S samba<br />
<br />
==Download Printer PPD==<br />
Depending on your printer, this step is optional and may not be needed, as the standard CUPS installation already comes with quite a few PPD (Postscript Printer Description) files. Moreover, the ''foomatic-filters'', ''gimp-print'' and ''hplip'' packages already include quite a few PPD files which will automatically be detected by CUPS.<br />
<br />
Here's an explanation of what a PPD file is from the Linux Printing website: "For every PostScript printer the manufacturers provide a PPD file which contains all printer-specific information about the particular printer model: Basic printer capabilities as whether the printer is a color printer, fonts, PostScript level, etc., and especially the user-adjustable options, as paper size, resolution, etc."<br />
<br />
If the PPD for your printer is '''not already in CUPS''', you can:<br />
*check [[AUR]] to see if there are packages for your printer/manufacturer<br />
*go to http://www.linuxprinting.org/printer_list.cgi and select the manufacturer and model of your printer<br />
*visit the website of your manufacturer and search for linux drivers.<br />
<br />
<br />
<br />
{{Note|PPD files go in {{Filename|/usr/share/cups/model/}}}}<br />
<br />
=Configuring Cups=<br />
<br />
==Options==<br />
<br />
Now that you have cups installed, you have a variety of options on how to setup CUPS. You can always use the tried and true command line. Likewise, various desktop environments such as GNOME and KDE have useful programs that can help you manage your printers. However, in order to make this process easy for the largest amount of users, we will use the web interface provided by CUPS.<br />
<br />
Please note that if you are planning on connecting to a network printer, rather than one that is directly connected to your computer, you may wish to jump to the Printer Sharing section first. Linux to Linux printer sharing is quite easy and involves very little configuration. Windows to Linux and vice-versa requires a little bit more effort, but is relatively easy as well.<br />
<br />
==Kernel Modules==<br />
<br />
Before we can use the CUPS web interface, we must install the appropriate kernel modules. The following are steps that from the Gentoo Printing Guide.<br />
<br />
This step may not be necessary, however, depending on which kernel you're using. The kernel module may load automatically, when you plug in your printer. Use the "tail" command (described below) to see if your printer has already been detected. You can also use the following command to see what modules have been loaded:<br />
# lsmod<br />
<br />
===USB printers===<br />
If you want to use a USB printer with a 2.6.x kernel, use the following command:<br />
# modprobe usblp<br />
<br />
If you are using a USB printer and a 2.4.x kernel, use the following command:<br />
# modprobe printer<br />
<br />
Note, this assumes that you are using the stock kernels from Arch Linux. If you custom-rolled your own, you may need to run this first:<br />
# modprobe usbcore<br />
<br />
Once you have the modules installed, you should plug in your printer and check if the kernel detected it by running the following:<br />
# tail /var/log/messages.log<br />
or<br />
# dmesg<br />
<br />
You should see something like this:<br />
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional<br />
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E<br />
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920<br />
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver<br />
<br />
===Parallel port printers===<br />
If you plan on using a parallel port printer, the configuration is pretty much the same. Kernel 2.6.x users have to first type in:<br />
# modprobe lp<br />
<br />
And then both 2.4.x and 2.6.x kernel users can enter in:<br />
# modprobe parport<br />
# modprobe parport_pc<br />
<br />
Once again, you can check your setup by running:<br />
# tail /var/log/messages.log<br />
You should see something like this:<br />
lp0: using parport0 (polling).<br />
<br />
====Troubleshooting====<br />
Installing my Brother HL 1250 I found that permissions for the device won't let CUPS write on the device, so it doesn't print. To fix it:<br />
[root@mihal ~]# ls /dev/usb/<br />
lp0<br />
[root@mihal ~]# chgrp lp /dev/usb/lp0<br />
<br />
===Auto-loading===<br />
You may also want to have the system automatically load the kernel module every time the computer starts up. To do this use your favorite text editor to open up {{Filename|/etc/[[rc.conf]]}} and add the appropriate module to the <code>MODULES=()</code> line. Here's a portion of the text from my {{Filename|rc.conf}} file:<br />
<br />
MODULES=(!usbserial scsi_mod sd_mod snd-ymfpci snd-pcm-oss lp parport parport_pc ide-scsi)<br />
<br />
==CUPS Daemon==<br />
<br />
With the kernel modules installed, you are now ready to start the actual CUPS daemon. To do this, simply run this command as root:<br />
# /etc/rc.d/cups start<br />
<br />
If you want to have cups start up automatically every time you start your computer, then you need to add it to your <code>DAEMONS=()</code> line in the {{Filename|/etc/rc.conf}} file. For example:<br />
<br />
DAEMONS=(pcmcia syslogd klogd !fam esd mono network autofs cups crond gdm)<br />
<br />
==Web Interface and tool kit.==<br />
<br />
Once the daemon is running, if a web interface is available. Open up your browser and go to:<br />
<br />
''http://localhost:631''<br />
<br />
(You may need to replace ''localhost'' with your hostname found in {{Filename|/etc/hosts}})<br />
<br />
'''or''' install "GNOME CUPS Manager" GUI frontend (see Appendix: A.1 [http://wiki.archlinux.org/index.php/CUPS_Setup#Alternative_CUPS_Interfaces Alternative CUPS Interfaces])<br />
<br />
From here, all you have to do is follow the various wizards to add your printer. To setup my Samsung ML-1250 printer, I started out by clicking on ''Manage Printers'', and then ''Add Printer''. I was then prompted for a username and password. I just logged in as root. I entered in ml1250 for my printer name, My Room for location and then Peter's Samsung ML-1250 Laster Printer for description. Next you will select the device. Since my printer is a USB device, I just selected ''USB Printer #1''. The name of my printer also showed up next to the label ''USB Printer #1'', so look for that. Next, I simply chose the appropriate drivers and the installation was complete.<br />
<br />
Once the installation is complete, you can test your configuration by pressing the Print Test Page button.<br />
<br />
===CUPS Administration===<br />
A username and password will be required when you administrate your printer in the web interface, such as: adding or removing printers, stopping print task, etc. The default username is the username in the sys group, or the root (you can change this by editing {{Filename|/etc/cups/cupsd.conf}} in the line of '''SystemGroup'''). <br />
<br />
If the root account has been locked, you cannot log in the CUPS administration interface by the default username and passwd. Then, you may need to change the default SystemGroup in cupsd.conf, and read '''''[http://bbs.archlinux.org/viewtopic.php?id=35567 this post]'''''.<br />
<br />
===Remote Access to Web Interface===<br />
By default the CUPS web interface can only be accessed by the ''localhost''; i.e. the computer that it is installed on. To remotely access the interface make the following changes to the {{Filename|/etc/cups/cupsd.conf}} file. Replace the line<br />
Listen localhost:631<br />
with<br />
port 631<br />
so that CUPS will listen to incoming requests. There are three levels of access that can be granted:<br />
<Location /> #access to the server<br />
<Location /admin> #access to the admin pages<br />
<Location /admin/conf> #access to configuration files<br />
To give remote hosts access to one of these levels add an '''Allow''' statement to that level’s section. An '''Allow''' statement can take one or more of the forms listed below:<br />
Allow all<br />
Allow host.domain.com<br />
Allow *.domain.com<br />
Allow ip-address<br />
Allow ip-address/netmask<br />
Deny statements can also be used. For example if I wanted to give all hosts on the 192.168.1.0/255.255.255.0 subnet full access, my {{Filename|/etc/cups/cupsd.conf}} file would include this:<br />
<br />
# Restrict access to the server...<br />
# By default only localhost connections are possible<br />
<Location /><br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Restrict access to the admin pages...<br />
<Location /admin><br />
# Encryption disabled by default<br />
#Encryption Required<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Restrict access to configuration files...<br />
<Location /admin/conf><br />
AuthType Basic<br />
Require user @SYSTEM<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
=Printer Sharing=<br />
<br />
==Linux to Linux==<br />
<br />
Once you have CUPS setup on your Linux print server, sharing the printer with another Linux box is relatively easy. There are several ways to configure such a scenario &mdash; here we will describe the manual setup. On the server computer (the one managing and connecting to the printer) simply open up {{Filename|/etc/cups/cupsd.conf}} and allow access to the server by modifying the location lines. For instance:<br />
<br />
<Location /><br />
Order allow,deny<br />
Allow localhost<br />
Allow 192.168.0.*<br />
</Location><br />
<br />
You will also need to make sure the server is listening on the IP address your client will be addressing. Add the following line after "# Listen <yourserverip>:631":<br />
<br />
Listen 192.168.0.101:631<br />
<br />
using your server's IP address instead of client's 192.168.0.100<br />
<br />
To "Show shared printers on the local network" add the line "BrowseAllow all":<br />
<br />
Browsing On<br />
BrowseOrder allow,deny<br />
BrowseAllow @LOCAL<br />
BrowseAllow all<br />
<br />
After you make your modifications, you will want to restart CUPS by doing:<br />
# /etc/rc.d/cups restart<br />
<br />
On the client side, open up {{Filename|/etc/cups/cupsd.conf}} and add the ServerName to match the IP address or the name of your server. Add this line:<br />
<br />
ServerName 192.168.0.101<br />
<br />
To "Show shared printers on the local network" add the line "BrowseAllow all":<br />
<br />
Browsing On<br />
BrowseOrder allow,deny<br />
BrowseAllow @LOCAL<br />
BrowseAllow all<br />
<br />
There are more configuration possibilities including an automatic configuration which are described in detail on http://localhost:631/help/network.html<br />
<br />
After you make your modifications, restart CUPS.<br />
When adding the printer from the client, if using the Internet Printing Protocol (ipp) and put the URI as ipp://192.168.0.101:631/printers/<name-of-printer><br />
<br />
That's it for Linux to Linux printer sharing.<br />
<br />
==Linux to Windows==<br />
<br />
If you are connected to a Windows print server (or any other Samba capable print server), you can skip the section about kernel modules and such. All you have to do is start the CUPS daemon and complete the web interface as specified in section 3.3 and 3.4. Before this, you need to activate the Samba CUPS backend. You can do this by entering the following command:<br />
# ln -s `which smbspool` /usr/lib/cups/backend/smb<br />
<br />
Note that the symbol before is ` (underneath the ~ on a standard US keyboard) and not '. After this, you will have to restart CUPS using the command specified in the previous section. Next, simply log in on the CUPS web interface and choose to add a new printer. As a device choose "Windows Printer via SAMBA".<br />
<br />
For the device location, enter:<br />
smb://username:password@hostname/printer_name<br />
<br />
Or without a password:<br />
smb://username@hostname/printer_name<br />
<br />
Make sure that the user actually has access to the printer on the Windows computer. Select the appropriate drivers and that's about it. If the computer is located on a domain, make sure the username includes the domain: <br />
smb://username:password@domain/hostname/printer_name<br />
<br />
Note: If your network contains many printers, use {{Codeline|lpoptions -d your_desired_default_printer_name}} to set your preferred printer<br />
<br />
Note: I, thepizzaking, was having 'NT_STATUS_ACCESS_DENIED' errors and to fix them I needed to use a slightly different syntax:<br />
smb://workgroup/username:password@hostname/printer_name<br />
<br />
==Windows to Linux==<br />
<br />
Sometimes you might want to allow a Windows computer to connect to your Linux server. There are a few ways to do this, and the one I am most familiar with is using Samba. In order to do this, you will have to edit your {{Filename|/etc/samba/smb.conf}} file to allow access to your printers. Your {{Filename|smb.conf}} can look something like this:<br />
<br />
<pre><br />
[global]<br />
workgroup = Heroes<br />
server string = Arch Linux Print Server<br />
security = user<br />
<br />
[printers]<br />
comment = All Printers<br />
path = /var/spool/samba<br />
browseable = yes<br />
# to allow user 'guest account' to print.<br />
guest ok = no<br />
writable = no<br />
printable = yes<br />
create mode = 0700<br />
write list = @adm root neocephas<br />
</pre><br />
<br />
That should be enough to share your printer, but you just might want to add an individual printer entry:<br />
<br />
<pre><br />
[ML1250]<br />
comment = Samsung ML-1250 Laser Printer<br />
printer=ml1250<br />
path = /var/spool/samba<br />
printing = cups<br />
printable = yes<br />
printer admin = @admin root neocephas<br />
user client driver = yes<br />
# to allow user 'guest account' to print.<br />
guest ok = no<br />
writable = no<br />
write list = @adm root neocephas<br />
valid users = @adm root neocephas<br />
</pre><br />
<br />
Please note that in my configuration I made it so that users must have a valid account to access the printer. To have a public printer, set ''guest ok'' to ''yes'', and remove the ''valid users'' line. To add accounts, you must set up a regular Linux account and then set up a Samba password on the server. For instance:<br />
<br />
<pre><br />
# useradd neocephas<br />
# smbpasswd -a neocephas<br />
</pre><br />
<br />
After setting up any user accounts that you need, you will also need to set up the samba spool directory:<br />
<br />
<pre><br />
# mkdir /var/spool/samba<br />
# chmod 777 /var/spool/samba<br />
</pre><br />
<br />
The next items that need changing are {{Filename|/etc/cups/mime.convs}} and {{Filename|/etc/cups/mime.types}}:<br />
<br />
{{Filename|mime.convs}}:<br />
<pre><br />
# The following line is found at near the end of the file. Uncomment it.<br />
application/octet-stream application/vnd.cups-raw 0 -<br />
</pre><br />
<br />
{{Filename|mime.types}}:<br />
<pre><br />
# Again near the end of the file.<br />
application/octet-stream<br />
</pre><br />
<br />
The changes to {{Filename|mime.convs}} and {{Filename|mime.types}} are needed to make CUPS print Microsoft Office document files. Many people seem to need that.<br />
<br />
After this, restart your Samba daemon:<br />
# /etc/rc.d/samba restart<br />
<br />
Obviously there are a lot of tweaks and customizations that can be done with setting up a Samba print server, so I advise you to look at the Samba and CUPS documentation for more help. The {{Filename|smb.conf.example}} file also has some good samples to that you might want to look at.<br />
<br />
==Windows 2000 and Windows XP to Linux==<br />
<br />
For the most modern flavors of Windows, an alternative way of connecting to your Linux printer server is to use the CUPS protocol directly. The Windows client will need to be using Windows 2000 or Windows XP. Make sure you allow the clients to access the print server by editing the location settings as specified in section 4.1.<br />
<br />
On the Windows computer, go to the printer control panel and choose to Add a New Printer. Next, choose to give a URL. For the URL, type in the location of your printer:<br />
<br />
''http://host_ip_address:631/printers/printer_name''<br />
<br />
where host_ip_address is the Linux server's IP address and printer_name is the name of the printer you are connecting to. After this, install the printer drivers for the Windows computer. If you setup the CUPS server to use its own printer drivers, then you can just select a generic postscript printer for the Windows client. You can then test your print setup by printing a test page.<br />
<br />
==Others to Linux, Linux to others==<br />
<br />
More information on interfacing CUPS with other printing systems can be found in the CUPS manual, e.g. on http://localhost:631/sam.html#PRINTING_OTHER<br />
<br />
=Appendix=<br />
<br />
==Alternative CUPS Interfaces==<br />
<br />
If you are a [[GNOME]] user, you can manage and configure your printer by using the gnome-cups-manager. This package is available through pacman if you have the "community" repository uncommented in {{Filename|/etc/pacman.conf}}.<br />
<br />
# pacman -S gnome-cups-manager<br />
<br />
Alternatively, you may also install system-config-printer-gnome from the "community" repository:<br />
# pacman -S system-config-printer-gnome<br />
<br />
For system-config-printer to work as it should you may run as root or with sudo/gksudo, or alternatively set up a "normal" user to administer cups (if so '''follow steps 1-3''')<br />
<br />
* 1. Create group, and add a user<br />
# groupadd lpadmin<br />
# usermod -aG lpadmin <username><br />
<br />
* 2. Add "lpadmin" (without the quotes) to this line in {{Filename|/etc/cups/cupsd.conf}}<br />
SystemGroup sys root <insert here><br />
<br />
* 3. Restart cups, log out and in again (or restart your computer)<br />
# /etc/rc.d/cups restart<br />
<br />
[[KDE]] users can modify their printers from the Control Center. Both should refer to those desktop environments' documentation for more information on how to use the interfaces.<br />
<br />
There is also gtklp. It is in the "extra" repository.<br />
# pacman -S gtklp<br />
<br />
==PDF Virtual Printer==<br />
<br />
A nice is CUPS-PDF. This package allows one to setup a virtual printer that will generate a PDF from anything sent to it. Obviously this package is not necessary, but it can be quite useful.<br />
<br />
You can find generated PDF documents in a directory of your user name located in <code>/var/spool/cups-pdf</code> directory.<br />
<br />
This package can be installed by the following command:<br />
# pacman -S cups-pdf<br />
<br />
After installing the package, you can set it up as you would for any other printer in the web interface. For the Device, select '''CUPS-PDF (Virtual PDF Printer)'''; Make/Manufacturer, choose '''Generic'''; Model/Driver, select '''Generic postscript color printer'''. Alternatively, provide the PPD file from this link: [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/cups-pdf-CURRENT/extra/CUPS-PDF.ppd].<br />
<br />
===Print to Postscript -- A CUPS-PDF Virtual Printer Trick===<br />
<br />
Printing to pdf in most applications like OpenOffice is no problem, just hit the button, but if you want to print to postscript, then things take a little more work. For applications like OpenOffice where printing to kprinter is nebulous at best, there has to be another way -- and there is. The CUPS-PDF (Virtual PDF Printer) actually creates a postscript file and then creates the pdf using the ps2pdf utility. To print to postscript, what you need to do is capture the intermediate postscript file created by CUPS-PDF. This is easily accomplished with by selecting the "print to file" option in the print dialog. (choose either .ps or .eps as the extension) After selecting the "print to file" checkbox simply enter the filename, click "print" and you are left with a very nice postscript file.<br />
<br />
'''Configuring the CUPS-PDF Virtual Printer'''<br />
<br />
1. install cups & cups-pdf from extra;<br />
<br />
2. start cups with:<br />
<br />
# /etc/rc.d/cups <br />
<br />
('''Note:''' add 'cups' to the deamons line in /etc/rc.conf to start automatically at boot)<br />
<br />
3. access the cups print manager: http://localhost:631 and select:<br />
<br />
Administration -> Find New Printers<br />
Select CUPS-PDF (Virtual PDF), choose for the make and driver:<br />
Make: Generic<br />
Driver: Generic CUPS-PDF Printer<br />
<br />
Done!<br />
<br />
Now to print to postscript, just print as usual, in the print dialog choose "CUPS-PDF" as the printer, then select the checkbox for "print to file", hit print, enter the filename.ps and click save. This is handy for faxes, etc...<br />
<br />
==Online Resources==<br />
<br />
Here is a listing of web sites that may be of use to you:<br />
<br />
* [http://localhost:631/documentation.html Official CUPS documentation on your computer]<br />
* [http://www.cups.org/ Official CUPS Website]<br />
* [http://www.linuxprinting.org/ Linux Printing]<br />
* [http://home.nyc.rr.com/computertaijutsu/cups.html Tips and Suggestions on common CUPS problems]<br />
* [http://www.gentoo.org/doc/en/printing-howto.xml Gentoo's Printing Guide]<br />
* [http://bbs.archlinux.org/ Arch Linux User Forums]<br />
<br />
==Specialized Cases==<br />
<br />
This section is dedicated to specific problems and their solutions. If you managed to get some unusual printer working, please put the solution here.<br />
<br />
===Brother DCP 7020 ===<br />
''See [[Brother_DCP-7020]].''<br />
<br />
===Getting FX C1110 (not model B) to work ===<br />
<br />
'''Assumes:''' <br />
<br />
# The printer is connected and listening on the network.<br />
# The printer driver is in rpm package.<br />
<br />
* Install cpio and rpmunpack to later unpack rpm package<br />
# pacman -S cpio rpmunpack cups ghostscript gsfonts<br />
<br />
* Get the FX Linux Driver [http://www.fujixeroxprinters.com/downloads/uploaded/Drivers/DocuPrint%20C1110%20C1110B/linux/fxlinuxprint-1.0.1-1.i386.zip here].<br />
<br />
* In /var/tmp unzip {{Filename|fxlinuxprint-1.0.1-1.i386.zip}}:<br />
# unzip fxlinuxprint-1.0.1-1.i386.zip -d /var/tmp<br />
<br />
* In /var/tmp:<br />
cd /var/tmp<br />
rpmunpack fxlinuxprint-1.0.1-1.i386.rpm<br />
gunzip fxlinuxprint-1.0.1-1.cpio.gz<br />
mkdir /var/tmp/DST<br />
mv fxlinuxprint-1.0.1-1.cpio /var/tmp/DST<br />
cd /var/tmp/DST<br />
cpio -id < fxlinuxprint-1.0.1-1.cpio<br />
rm fxlinuxprint-1.0.1-1.cpio<br />
cd /var/tmp<br />
find /var/tmp/DST -type f |cat -n<br />
1 /var/tmp/DST/etc/cups/mimefx.convs<br />
2 /var/tmp/DST/etc/cups/mimefx.types<br />
3 /var/tmp/DST/usr/lib/cups/filter/pdftopjlfx<br />
4 /var/tmp/DST/usr/lib/cups/filter/pstopdffx<br />
5 /var/tmp/DST/usr/lib/cups/filter/pdftopdffx<br />
6 /var/tmp/DST/usr/share/cups/model/FujiXerox/en/fxlinuxprint.ppd<br />
<br />
* Copy /var/tmp/DST files to /<br />
{{Note|For the PPD use {{Filename|/usr/share/cups/model/fxlinuxprint.ppd}}}}<br />
<br />
* Point web browser at http://localhost:631/ and point and click to add lpd://f.q.d.n/queue printer<br />
{{Note|In the final step authenticate using the root password.}}<br />
<br />
* Manage Printer and Set Printer Options<br />
<br />
* Print a test page, and if printer name is color103, use at a shell prompt:<br />
$ lpq -Pcolor103<br />
color103 is ready<br />
no entries<br />
<br />
* The End<br />
<br />
===Printing does not work/aborts with the HP Deskjet 700 Series Printers.===<br />
<br />
*The solution is to install '''pnm2ppa''' printer filter for the HP Deskjet 700 series. Without this the print jobs will be aborted by the system. A [[ABS - The Arch Build System | PKGBUILD]] for pnm2ppa can be found in [http://aur.archlinux.org/packages.php?do_Details=1&ID=696&O=0&L=0&C=0&K=pnm&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0 AUR].<br />
<br />
===Getting HP LaserJet 1010 to work===<br />
I had to compile ghostscript myself because ESP gs in rep was 7.07 and had not fixed some bugs like ESP 8.15.1 had. I never downloaded 'foomatic' in rep. I think that is an old package. <br />
<pre><br />
$ pacman -Qs cups a2ps psutils foo ghost<br />
local/cups 1.1.23-3<br />
The CUPS Printing System<br />
local/a2ps 4.13b-3<br />
a2ps is an Any to PostScript filter<br />
local/psutils p17-3<br />
A set of postscript utilities.<br />
local/foomatic-db 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-db-engine 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-db-ppd 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-filters 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/espgs 8.15.1-1<br />
ESP Ghostscript<br />
</pre><br />
I also had to set <code>LogLevel</code> in {{Filename|/etc/cups/cupsd.conf}} to <code>debug2</code> before I saw that I missed some "Nimbus" fonts. Then I had to rename and put them where the log told me to. Some fancy google searching had to be applied, e.g., http://www.google.com/search?q=n019003l+filetype%3Apfb since the fonts turned out to be proprietary (I'm sure Windows comes with these by default). Nevertheless, after downloading them (about 7 fonts) and putting them in the correct directory, printing started working.<br />
<br />
Before, I was getting all the errors said here: http://linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_1010 'Unsupport PCL' etc...<br />
<br />
I'm sure it could have worked with ESP gs 7.07 too (in rep) if I were smart enough to turn on DebugLevel2 sooner :/ UPDATE: yeah it did... maybe this info is useful for someone else though... sorry for the inconvenience.<br />
<br />
===Getting HP LaserJet 1020 to work===<br />
<br />
====Manual installation====<br />
After a lot of tries with hplib and gutenprint, I finally found the solution to get my printer HP LaserJet 1020 printing. <br />
<br />
First of all, you only need to install cups and ghostscript. Then follow the link on http://www.linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_1020 to the http://foo2zjs.rkkda.com/ printer driver page and follow the install instructions. Log in as root. After you've downloaded the package and extracted the archive, change into the foo2zjs directory. Now you can follow the original installation instructions with a minor modification to change the userid for printing:<br />
<br />
$ make<br />
$ ./getweb 1020<br />
<br />
Open the {{Filename|Makefile}}<br />
$ nano Makefile<br />
and search for the line<br />
# LPuid=-olp<br />
and modify it to<br />
# LPuid=-oroot<br />
then continue with the script<br />
$ make install<br />
$ make install-hotplug<br />
$ make cups<br />
<br />
====Installation from AUR====<br />
You can also use the package foo2zjs from AUR and modify the {{Filename|PKGBUILD}}. Change the line:<br />
./getweb all<br />
to<br />
./getweb 1020<br />
<br />
(or if you're setting another printer, change this line to what you need).<br />
<br />
If you get errors with incorrect md5sums, you should also change the md5sum of {{Filename|foo2zjs.tar.gz}} in PKGBUILD to match the downloaded driver.<br />
<br />
As a last step, add and configure the printer in the CUPS manager. The printer should be recognized automatically. It works fine for root and all users. When booting the operating system, the printer is initialized and indicates it's working.<br />
<br />
=== Printer connected to an Airport Express Station ===<br />
The first thing to do is to scan the airport express station. It<br />
seems that there are different addresses depending on the model.<br />
<pre><br />
[root@somostation somos]# nmap 192.168.0.4<br />
<br />
Starting Nmap 4.20 ( http://insecure.org ) at 2007-06-26 00:50 CEST<br />
Interesting ports on 192.168.0.4:<br />
Not shown: 1694 closed ports<br />
PORT STATE SERVICE<br />
5000/tcp open UPnP<br />
9100/tcp open jetdirect<br />
10000/tcp open snet-sensor-mgmt<br />
MAC Address: 00:14:51:70:D5:66 (Apple Computer)<br />
<br />
Nmap finished: 1 IP address (1 host up) scanned in 25.815 seconds<br />
</pre><br />
With my station, the port is 9100. The airport station is accessed like<br />
an HP JetDirect printer.<br />
Afterwards, you can edit your {{Filename|printer.conf}} file in this way:<br />
<pre><br />
# Printer configuration file for CUPS v1.2.11<br />
# Written by cupsd on 2007-06-26 00:44<br />
<Printer LaserSim><br />
Info SAMSUNG ML-1510 gdi<br />
Location SomoStation<br />
DeviceURI socket://192.168.0.4:9100<br />
State Idle<br />
StateTime 1182811465<br />
Accepting Yes<br />
Shared Yes<br />
JobSheets none none<br />
QuotaPeriod 0<br />
PageLimit 0<br />
KLimit 0<br />
OpPolicy default<br />
ErrorPolicy stop-printer<br />
</Printer><br />
</pre><br />
It should work. I had a few problems. They were resolved by removing foomatic and installing foomatic-db, foomatic-db-engine, foomatic-db-ppd instead.<br />
<br />
===Performing Utility Functions on Epson Printers===<br />
<br />
====Escputil====<br />
<br />
Here we explain how to perform some of the utility functions such as nozzle cleaning and nozzle checks on Epson printers. We will use the escputil utility, which is part of the gutenprint package.<br />
<br />
There is a man page ("man escputil") that provides pretty good information, but it does not include necessary information on how to identify your printer. There are two parameters that can be used. One is <tt>--printer</tt>; what it expects is the name you used to identify your printer when you configured it. The other is <tt>--raw-device</tt>. What this option expects is is something beginning with "/dev". If your printer is a serial printer, and the only serial printer, it is "/dev/lp0". If it is a USB printer, it is "/dev/usb/lp0". If you have more than one printer, they will have names ending in "lp1", "lp2", etc. <br />
<br />
* To clean the printer heads:<br />
$ escputil -u --clean-head<br />
<br />
* To print the nozzle-check pattern, allowing you to verify that the previous head cleaning worked. (Or to determine that you need to clean the heads)<br />
$ escputil -u --nozzle-check<br />
<br />
If you want to perform an operation that requires two-way communication with a printer, you must use the "--raw-device" specification and your user must be root or be a member of the group "lp". <br />
<br />
* The following is an example of getting the printer's internal identification:<br />
$ sudo escputil --raw-device=/dev/usb/lp0 --identify<br />
<br />
* To print out the ink levels of the printer:<br />
$ sudo escputil --raw-device=/dev/usb/lp0 --ink-level<br />
<br />
====Mtink====<br />
<br />
This is a printer status monitor which enables to get the remaining ink quantity, to print test patterns, to reset printer and to clean nozzle. It use an intuitive graphical user interface. Package can be downloaded from [http://aur.archlinux.org/packages.php?do_Details=1&ID=476&O=0&L=0&C=0&K=mtink&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd AUR].<br />
<br />
==Another Source for Printer Drivers==<br />
<br />
On ''http://www.turboprint.de/english.html'' is a really good printer driver for many printers not yet supported by Linux (especially Canon i*). The only problem is that high-quality-prints are either marked with a turboprint-logo or you have to pay for it &mdash; it's not open source.<br />
<br />
{{Wikipedia|Common_Unix_Printing_System}}<br />
<br />
=Troubleshooting=<br />
==As a result of upgrade==<br />
<br />
===CUPS stops working after an upgrade===<br />
The chances are that a new config file is needed for the new version to work properly. You may get 404 - page not found errors trying to manage cups via localhost:631 for example.<br />
To use the new config just copy over /etc/cups/cupsd.conf.default to /etc/cups/cupsd.conf:<br />
# cp /etc/cups/cupsd.conf.default /etc/cups/cupsd.conf<br />
and restart cups to use it:<br />
# /etc/rc.d/cups restart<br />
''Note:'' Do not forget to backup the old config if you have some important settings there.<br />
<br />
===Error with gnutls===<br />
After updating, if you get something like :<br />
/usr/sbin/cupsd: error while loading shared libraries: libgnutls.so.13: cannot open shared object file: No such file or directory<br />
<br />
You need to update gnutls:<br />
# pacman -Sy gnutls<br />
<br />
In addition, in <code>/etc/cups</code>, there will be a file named {{Filename|cupsd.conf.pacnew}}. Rename it to {{Filename|cupsd.conf}}.<br />
<br />
===All jobs are "stopped"===<br />
After updating CUPS, if all jobs sent to the printer become "stopped", delete the printer and add it again.<br />
Using the CUPS web interface (http://localhost:631), go to Printers > Delete Printer.<br />
<br />
''Note:'' If you don't remember your printer's settings, go to Printers > Modify Printer. Copy down the information displayed, click 'Modify Printer' to proceed to the next page(s), etc.<br />
<br />
===The PPD version (XXXXXX) is not compatible with Gutenprint X===<br />
Run (as root):<br />
# /usr/sbin/cups-genppdupdate<br />
<br />
And restart CUPS (as pointed out in gutenprint's post-install message)<br />
<br />
==Other==<br />
<br />
===A HPLIP printer sends "/usr/lib/cups/backend/hp failed" error===<br />
Make sure dbus is installed and running, e.g. check DAEMONS in {{Filename|/etc/rc.conf}} or run {{Codeline|ls /var/run/daemons}}.<br />
<br />
===hp-toolbox sends an error "Unable to communicate with device"===<br />
<br />
if the hp-toolbox command when not run as root sends an error<br />
<br />
# hp-toolbox<br />
# error: Unable to communicate with device (code=12): hp:/usb/<your printer id><br />
<br />
or when running hp-toolbox again as non root you get an error {{Codeline|Unable to communicate with device}}<br />
<br />
then you may have to add yourself to the lp group bu running the following command as root:<br />
<br />
# gpasswd -a <username> lp<br />
<br />
<br />
===CUPS returns ""foomatic-rip" not available/stopped with status 3" with a HP printer===<br />
<br />
If you receive any of the following error messages in {{Filename|/var/log/cups/error_log}} while using a HP printer, with jobs appearing to be processed while they all end up not being completed with their status set to 'stopped':<br />
<br />
* Filter "foomatic-rip" for printer "<printer_name>" not available: No such file or director<br />
* PID 5771 (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!<br />
<br />
Make sure you have '''hplip''' installed, in addition to [[CUPS_Setup#Packages|the packages mentioned above]]; '''net-snmp''' is also needed. See http://bbs.archlinux.org/viewtopic.php?id=65615<br />
<br />
# pacman -S hplip<br />
<br />
Personally I experienced this with a HP LaserJet 1100A (hplip says it only supports a couple of laser models, which could make you skip the option of trying it) over an LPR print server. I don't know if it applies to using it through {{Filename|/dev/lp0}} (parallell port) as well, although it would make sense.<br />
<br />
===Printing fails with unauthorised error===<br />
If you added yourself to the lp group, and allowed your user to print ({{Filename|cups.conf}}), then problem lies in {{Filename|/etc/cups/printers.conf}}. There should be a line that says<br />
AuthInfoRequired negotiate<br />
Just delete it or comment it out, restart cups and printing will magically work again.<br />
<br />
===Print button greyed out in Gnome print dialogs===<br />
Be sure the package: '''libgnomeprint''' is installed<br />
<br />
Edit {{filename|/etc/cups/cupsd.conf}} and add<br />
<br />
# HostNameLookups Double<br />
<br />
Restart cups: <br />
# /etc/rc.d/cups restart<br />
<br />
Source: http://bbs.archlinux.org/viewtopic.php?id=70418</div>Kristihttps://wiki.archlinux.org/index.php?title=AUR_User_Guidelines&diff=68723AUR User Guidelines2009-05-14T22:38:32Z<p>Kristi: Add link to the packages page</p>
<hr />
<div>[[Category:Package management (English)]]<br />
[[Category:About Arch (English)]]<br />
[[Category:Package development (English)]]<br />
[[Category:AUR]]<br />
[[Category:Guidelines (English)]]<br />
{{Article summary start}}<br />
{{Article summary text|Explains how to access and use the Arch User Repository}}<br />
{{Article summary heading|Available in languages}}<br />
{{i18n_entry|Česky|:AUR - uživatelský průvodce (Česky)}}<br />
{{i18n_entry|Dansk|:AUR_Brugervejledning}}<br />
{{i18n_entry|English|:AUR_User_Guidelines}}<br />
{{i18n_entry|Español|:Guía de usuario AUR (Español)}}<br />
{{i18n_entry|French|:AUR_User_Guidelines (French)}}<br />
{{i18n_entry|Italiano|:AUR_User_Guidelines (Italiano)}}<br />
{{i18n_entry|Русский|:AUR_руководство_пользователя}}<br />
{{i18n_entry|简体中文|:AUR用户指南_(简体中文)}}<br />
{{Article summary heading|Related articles}}<br />
{{Article summary wiki|AUR Trusted User Guidelines}}<br />
{{Article summary wiki|AUR}}<br />
{{Article summary wiki|AUR Q & A}}<br />
{{Article summary wiki|Aurbuild}}<br />
{{Article summary end}}<br />
<br />
==Purpose==<br />
<br />
The [[ArchLinux User-community Repository (AUR)]] is a community driven repository for Arch users. It contains package descriptions that allow you to compile a package from source and then install it via [[Pacman]]. This document shows the normal user how to access AUR using the web interface and how to work with AUR.<br />
<br />
==How to use the AUR==<br />
===Searching the AUR===<br />
Open a browser and go to the [http://aur.archlinux.org/packages.php AUR package page]<br />
<br />
Search queries for Name actually searches package name and description via a MySQL LIKE comparison.<br />
If you need to search for a description that contains '%' escape it with '\%'.<br />
This means you can make searches a little more flexible.<br />
Try searching for 'tool%like%grep' vs 'tool like grep'.<br />
<br />
===Installing Packages from the AUR===<br />
To install a package found in AUR (aka the UNSUPPORTED repository) follow the steps listed below:<br />
<br />
''Included in these steps is an example installation of a package called "foo".''<br />
<br />
*First make sure that the necessary tools are installed. The metapackage "base-devel" should be sufficient, as it includes makepkg and the tools needed for compiling from source. <br />
<br />
<code>pacman -Sy base-devel </code><br />
<br />
*Next choose an appropriate build directory. A build directory is simply a directory where the package will be made or "built" and can be any directory. Examples of commonly used directories are:<br />
<br />
<code>~/builds</code><br />
<br />
:or if using ABS (Arch Build System):<br />
<br />
<code>/var/abs/local</code> <br />
<br />
:For more information on ABS go to the [[ABS]] page. The example will use <code>~/builds</code> as the build directory.<br />
<br />
*locate the package in the AUR. This is done using the [http://aur.archlinux.org/packages.php search feature], to navigate to this feature from the [http://aur.archlinux.org/ AUR home page] click on the "packages" link in the top right menu. Clicking the application's name in the search list brings up an information page on the package. Read through the description to make sure this is the desired package, it is also good to check when the package was last updated and read any comments.<br />
<br />
*Download the necessary build files. From the package's information page download the build files by clicking the link "Tarball" on the left hand side near the end of the page. This file should be saved to a build directory, but could be copied to the directory after downloading. In the example the file download should be called "foo.tar.gz" if it has been properly submitted.<br />
<br />
*Extract the tarball. Change directories to the build directory if not already done and extract the build files.<br />
<br />
<code>cd ~/builds<br />
tar -xvzf foo.tar.gz</code><br />
<br />
This should create a new directory called "foo" in the build directory.<br />
<br />
*'''IMPORTANT''' Carefully check all files. Change directories to the newly created directory and carefully check the PKGBUILD and any .install file for malicious commands. If in any doubt DO NOT build the package and seek advice on the forums or mailing list.<br />
<br />
<code>cd foo<br />
<favourite text editor> PKGBUILD # Carefully check<br />
# Carefully check any other files like .install</code><br />
<br />
*Make the package. After manually confirming the integrity of the files run makepkg as a normal user in the build directory.<br />
<br />
<code>makepkg -s</code><br />
<br />
This will use [[sudo]] to install any dependencies, if the use of sudo is undesirable use fakeroot (see below) and don't include the "-s" in the makepkg command.<br />
<br />
*Install the package using pacman. A tarball should have been created that is named:<br />
<br />
<code><applications name>-<version number>-<architecture>.pkg.tar.gz.</code><br />
<br />
this package can be installed using the upgrade command of pacman.<br />
<br />
<code>pacman -U foo-0.1-i686.pkg.tar.gz</code> <br />
<br />
'''Please Note''': the above is a brief summary of the package building process. A visit to the [[ABS]] page will provide full details, and is highly recommended, particularly for first-time packagers.<br />
<br />
===Using <code>fakeroot</code>===<br />
<code>fakeroot</code> simply allows a normal user the necessary root permissions to create pkgs in the build environment without being able to alter the wider system. If the build process attempts to alter files outside of the build environment then errors are produced and the build fails - this is very useful for checking the quality/safety/integrity of PKGBUILDs for distribution. By default <code>export USE_FAKEROOT="y"</code> is included in <code>/etc/makepkg.conf</code>, so unless you have switched it off it is already enabled.<br />
<br />
===Submitting Packages to UNSUPPORTED===<br />
After logging in to the AUR web interface, a user can [http://aur.archlinux.org/pkgsubmit.php submit] a gzipped tarball (tar.gz) of a directory containing build files for a package. The directory inside the tarball should contain a PKGBUILD, any .install files, patches, etc (ABSOLUTELY no binaries). Examples of what such a directory should look like can be seen inside /var/abs. <br />
<br />
Note that this is a gzipped tarball - assuming you're uploading a package called 'libfoo', when you create the file it should look similar to this:<br />
$ ls -a libfoo<br />
. .. PKGBUILD libfoo.install<br />
$ makepkg --source<br />
<br />
# List contents of tarball.<br />
$ tar tf libfoo-0.1-1.src.tar.gz<br />
libfoo/<br />
libfoo/PKGBUILD<br />
libfoo/libfoo.install<br />
<br />
When submitting a package, observe the following rules: <br />
* Check [core], [extra], and [community] for the package. If it is inside any of those repositories in ANY form, DO NOT submit the package (if the current package is broken or is lacking an included feature then please file a bug report in [http://bugs.archlinux.org/ FlySpray]).<br />
* Check UNSUPPORTED for the package. If it is currently maintained, changes can be submitted in a comment for the maintainer's attention. If it is unmaintained, the package can be adopted and updated as required.<br />
* Verify carefully that what you are uploading is correct. All contributors must read and adhere to the [[Arch Packaging Standards]] when writing PKGBUILDs. This is essential to the smooth running and general success of the AUR. Remember you are not going to earn any credit or respect from your peers by wasting their time with a bad PKGBUILD.<br />
* Packages that contain binaries or that are very poorly written may be deleted without warning.<br />
* If you are unsure about the package (or the build/submission process) in any way, submit the PKGBUILD to the AUR Mailing List or the AUR boards on the forum for public review before adding it to the AUR.<br />
* Make sure the package is useful. Will anyone else want to use this package? Is it extremely specialized? If more than a few people would find this package useful, it is appropriate for submission.<br />
* Gain some experience before submitting packages. Build a few packages to learn the process and then submit.<br />
* If you submit a package.tar.gz with a file named 'package' in it you'll get a an error: 'Could not change to directory /home/aur/unsupported/package/package'. To resolve this rename the file named 'package' to something else, for example, 'package.rc'. When it is installed in the pkg directory you may rename it back to 'package'.<br />
<br />
===Maintaining Packages in UNSUPPORTED===<br />
* Check for feedback and comments from other users and try to incorporate any improvements they suggest; consider it a learning process!<br />
* Please DO NOT just submit and forget about packages! While in UNSUPPORTED, it is the user's job to maintain the package by checking for updates and improving the PKGBUILD.<br />
* If you do not want to continue to maintain the package for some reason, <code>disown</code> the pkg using the AUR web interface and/or post a message to the AUR Mailing List.<br />
<br />
==The User and the AUR==<br />
<br />
The normal user plays an essential role in the AUR and without the support, involvement and contribution of the wider user community the AUR cannot fulfill its potential. The lifecycle of an AUR package starts and ends with the user and requires the user to contribute in several ways.<br />
<br />
===Sharing PKGBUILDs in UNSUPPORTED===<br />
Users can '''share PKGBUILDs''' using the UNSUPPORTED area in the AUR. UNSUPPORTED does not contain any binary packages but allows users to upload PKGBUILDs that can be downloaded by others. A comments facility allows users to provide suggestions and feedback on improvements to the PKGBUILD contributor. These PKGBUILDs are completely unofficial and have not been thoroughly vetted, so they should be used at your own risk.<br />
<br />
There is not and will never be an official mechanism for downloading build material from UNSUPPORTED, but there are many scripts and tools which can do so.<br />
<br />
===[community]===<br />
The [community] repo is a supplement to the [extra] and [core] repositories where the most popular packages from UNSUPPORTED are maintained by the Trusted Users group on behalf of the users. [community], unlike UNSUPPORTED, contains binary packages that can be installed directly with pacman and the build files can also be accessed with [[ABS]]. Some of these packages may eventually make the transition to the [core] or [extra] repositories as the developers consider them crucial to the distribution.<br />
<br />
Users can access the AUR [community] repo by adding/uncommenting this line in their pacman.conf file (''enabled by default''):<br />
Include = /etc/pacman.d/mirrorlist<br />
If <code>/etc/pacman.d/mirrorlist</code> does not exist then it should be created and contain the following:<br />
<pre>[community]<br />
Server = ftp://ftp.archlinux.org/community/os/i686/</pre><br />
<br />
Users can also access the [community] build files by editing <code>/etc/abs.conf</code> and removing the exclamation mark from in front of the community repo (''disabled by default''), as follows:<br />
<pre>REPOS=(core extra community !testing)</pre><br />
<br />
===Voting===<br />
One of the easiest activities for '''all''' Arch users is to browse the AUR and '''vote''' for their favorite packages using the online interface. All packages are eligible for adoption by a TU for inclusion in [community], and the vote count is one of the considerations in that process - so it is in everyone's interest to vote!<br />
<br />
===Install an AUR Helper===<br />
[[AUR Helpers]] add seamless access to the [[AUR]]. They vary in their features, but can ease in searching, fetching, building, and installing from PKGBUILDs found in AUR.<br />
<br />
All of these scripts can be found in UNSUPPORTED.</div>Kristihttps://wiki.archlinux.org/index.php?title=AUR_User_Guidelines&diff=68722AUR User Guidelines2009-05-14T22:35:24Z<p>Kristi: Specify this document is for the AUR web interface usage</p>
<hr />
<div>[[Category:Package management (English)]]<br />
[[Category:About Arch (English)]]<br />
[[Category:Package development (English)]]<br />
[[Category:AUR]]<br />
[[Category:Guidelines (English)]]<br />
{{Article summary start}}<br />
{{Article summary text|Explains how to access and use the Arch User Repository}}<br />
{{Article summary heading|Available in languages}}<br />
{{i18n_entry|Česky|:AUR - uživatelský průvodce (Česky)}}<br />
{{i18n_entry|Dansk|:AUR_Brugervejledning}}<br />
{{i18n_entry|English|:AUR_User_Guidelines}}<br />
{{i18n_entry|Español|:Guía de usuario AUR (Español)}}<br />
{{i18n_entry|French|:AUR_User_Guidelines (French)}}<br />
{{i18n_entry|Italiano|:AUR_User_Guidelines (Italiano)}}<br />
{{i18n_entry|Русский|:AUR_руководство_пользователя}}<br />
{{i18n_entry|简体中文|:AUR用户指南_(简体中文)}}<br />
{{Article summary heading|Related articles}}<br />
{{Article summary wiki|AUR Trusted User Guidelines}}<br />
{{Article summary wiki|AUR}}<br />
{{Article summary wiki|AUR Q & A}}<br />
{{Article summary wiki|Aurbuild}}<br />
{{Article summary end}}<br />
<br />
==Purpose==<br />
<br />
The [[ArchLinux User-community Repository (AUR)]] is a community driven repository for Arch users. It contains package descriptions that allow you to compile a package from source and then install it via [[Pacman]]. This document shows the normal user how to access AUR using the web interface and how to work with AUR.<br />
<br />
==How to use the AUR==<br />
===Searching the AUR===<br />
Search queries for Name actually searches package name and description via a MySQL LIKE comparison.<br />
If you need to search for a description that contains '%' escape it with '\%'.<br />
This means you can make searches a little more flexible.<br />
Try searching for 'tool%like%grep' vs 'tool like grep'.<br />
<br />
===Installing Packages from the AUR===<br />
To install a package found in AUR (aka the UNSUPPORTED repository) follow the steps listed below:<br />
<br />
''Included in these steps is an example installation of a package called "foo".''<br />
<br />
*First make sure that the necessary tools are installed. The metapackage "base-devel" should be sufficient, as it includes makepkg and the tools needed for compiling from source. <br />
<br />
<code>pacman -Sy base-devel </code><br />
<br />
*Next choose an appropriate build directory. A build directory is simply a directory where the package will be made or "built" and can be any directory. Examples of commonly used directories are:<br />
<br />
<code>~/builds</code><br />
<br />
:or if using ABS (Arch Build System):<br />
<br />
<code>/var/abs/local</code> <br />
<br />
:For more information on ABS go to the [[ABS]] page. The example will use <code>~/builds</code> as the build directory.<br />
<br />
*locate the package in the AUR. This is done using the [http://aur.archlinux.org/packages.php search feature], to navigate to this feature from the [http://aur.archlinux.org/ AUR home page] click on the "packages" link in the top right menu. Clicking the application's name in the search list brings up an information page on the package. Read through the description to make sure this is the desired package, it is also good to check when the package was last updated and read any comments.<br />
<br />
*Download the necessary build files. From the package's information page download the build files by clicking the link "Tarball" on the left hand side near the end of the page. This file should be saved to a build directory, but could be copied to the directory after downloading. In the example the file download should be called "foo.tar.gz" if it has been properly submitted.<br />
<br />
*Extract the tarball. Change directories to the build directory if not already done and extract the build files.<br />
<br />
<code>cd ~/builds<br />
tar -xvzf foo.tar.gz</code><br />
<br />
This should create a new directory called "foo" in the build directory.<br />
<br />
*'''IMPORTANT''' Carefully check all files. Change directories to the newly created directory and carefully check the PKGBUILD and any .install file for malicious commands. If in any doubt DO NOT build the package and seek advice on the forums or mailing list.<br />
<br />
<code>cd foo<br />
<favourite text editor> PKGBUILD # Carefully check<br />
# Carefully check any other files like .install</code><br />
<br />
*Make the package. After manually confirming the integrity of the files run makepkg as a normal user in the build directory.<br />
<br />
<code>makepkg -s</code><br />
<br />
This will use [[sudo]] to install any dependencies, if the use of sudo is undesirable use fakeroot (see below) and don't include the "-s" in the makepkg command.<br />
<br />
*Install the package using pacman. A tarball should have been created that is named:<br />
<br />
<code><applications name>-<version number>-<architecture>.pkg.tar.gz.</code><br />
<br />
this package can be installed using the upgrade command of pacman.<br />
<br />
<code>pacman -U foo-0.1-i686.pkg.tar.gz</code> <br />
<br />
'''Please Note''': the above is a brief summary of the package building process. A visit to the [[ABS]] page will provide full details, and is highly recommended, particularly for first-time packagers.<br />
<br />
===Using <code>fakeroot</code>===<br />
<code>fakeroot</code> simply allows a normal user the necessary root permissions to create pkgs in the build environment without being able to alter the wider system. If the build process attempts to alter files outside of the build environment then errors are produced and the build fails - this is very useful for checking the quality/safety/integrity of PKGBUILDs for distribution. By default <code>export USE_FAKEROOT="y"</code> is included in <code>/etc/makepkg.conf</code>, so unless you have switched it off it is already enabled.<br />
<br />
===Submitting Packages to UNSUPPORTED===<br />
After logging in to the AUR web interface, a user can [http://aur.archlinux.org/pkgsubmit.php submit] a gzipped tarball (tar.gz) of a directory containing build files for a package. The directory inside the tarball should contain a PKGBUILD, any .install files, patches, etc (ABSOLUTELY no binaries). Examples of what such a directory should look like can be seen inside /var/abs. <br />
<br />
Note that this is a gzipped tarball - assuming you're uploading a package called 'libfoo', when you create the file it should look similar to this:<br />
$ ls -a libfoo<br />
. .. PKGBUILD libfoo.install<br />
$ makepkg --source<br />
<br />
# List contents of tarball.<br />
$ tar tf libfoo-0.1-1.src.tar.gz<br />
libfoo/<br />
libfoo/PKGBUILD<br />
libfoo/libfoo.install<br />
<br />
When submitting a package, observe the following rules: <br />
* Check [core], [extra], and [community] for the package. If it is inside any of those repositories in ANY form, DO NOT submit the package (if the current package is broken or is lacking an included feature then please file a bug report in [http://bugs.archlinux.org/ FlySpray]).<br />
* Check UNSUPPORTED for the package. If it is currently maintained, changes can be submitted in a comment for the maintainer's attention. If it is unmaintained, the package can be adopted and updated as required.<br />
* Verify carefully that what you are uploading is correct. All contributors must read and adhere to the [[Arch Packaging Standards]] when writing PKGBUILDs. This is essential to the smooth running and general success of the AUR. Remember you are not going to earn any credit or respect from your peers by wasting their time with a bad PKGBUILD.<br />
* Packages that contain binaries or that are very poorly written may be deleted without warning.<br />
* If you are unsure about the package (or the build/submission process) in any way, submit the PKGBUILD to the AUR Mailing List or the AUR boards on the forum for public review before adding it to the AUR.<br />
* Make sure the package is useful. Will anyone else want to use this package? Is it extremely specialized? If more than a few people would find this package useful, it is appropriate for submission.<br />
* Gain some experience before submitting packages. Build a few packages to learn the process and then submit.<br />
* If you submit a package.tar.gz with a file named 'package' in it you'll get a an error: 'Could not change to directory /home/aur/unsupported/package/package'. To resolve this rename the file named 'package' to something else, for example, 'package.rc'. When it is installed in the pkg directory you may rename it back to 'package'.<br />
<br />
===Maintaining Packages in UNSUPPORTED===<br />
* Check for feedback and comments from other users and try to incorporate any improvements they suggest; consider it a learning process!<br />
* Please DO NOT just submit and forget about packages! While in UNSUPPORTED, it is the user's job to maintain the package by checking for updates and improving the PKGBUILD.<br />
* If you do not want to continue to maintain the package for some reason, <code>disown</code> the pkg using the AUR web interface and/or post a message to the AUR Mailing List.<br />
<br />
==The User and the AUR==<br />
<br />
The normal user plays an essential role in the AUR and without the support, involvement and contribution of the wider user community the AUR cannot fulfill its potential. The lifecycle of an AUR package starts and ends with the user and requires the user to contribute in several ways.<br />
<br />
===Sharing PKGBUILDs in UNSUPPORTED===<br />
Users can '''share PKGBUILDs''' using the UNSUPPORTED area in the AUR. UNSUPPORTED does not contain any binary packages but allows users to upload PKGBUILDs that can be downloaded by others. A comments facility allows users to provide suggestions and feedback on improvements to the PKGBUILD contributor. These PKGBUILDs are completely unofficial and have not been thoroughly vetted, so they should be used at your own risk.<br />
<br />
There is not and will never be an official mechanism for downloading build material from UNSUPPORTED, but there are many scripts and tools which can do so.<br />
<br />
===[community]===<br />
The [community] repo is a supplement to the [extra] and [core] repositories where the most popular packages from UNSUPPORTED are maintained by the Trusted Users group on behalf of the users. [community], unlike UNSUPPORTED, contains binary packages that can be installed directly with pacman and the build files can also be accessed with [[ABS]]. Some of these packages may eventually make the transition to the [core] or [extra] repositories as the developers consider them crucial to the distribution.<br />
<br />
Users can access the AUR [community] repo by adding/uncommenting this line in their pacman.conf file (''enabled by default''):<br />
Include = /etc/pacman.d/mirrorlist<br />
If <code>/etc/pacman.d/mirrorlist</code> does not exist then it should be created and contain the following:<br />
<pre>[community]<br />
Server = ftp://ftp.archlinux.org/community/os/i686/</pre><br />
<br />
Users can also access the [community] build files by editing <code>/etc/abs.conf</code> and removing the exclamation mark from in front of the community repo (''disabled by default''), as follows:<br />
<pre>REPOS=(core extra community !testing)</pre><br />
<br />
===Voting===<br />
One of the easiest activities for '''all''' Arch users is to browse the AUR and '''vote''' for their favorite packages using the online interface. All packages are eligible for adoption by a TU for inclusion in [community], and the vote count is one of the considerations in that process - so it is in everyone's interest to vote!<br />
<br />
===Install an AUR Helper===<br />
[[AUR Helpers]] add seamless access to the [[AUR]]. They vary in their features, but can ease in searching, fetching, building, and installing from PKGBUILDs found in AUR.<br />
<br />
All of these scripts can be found in UNSUPPORTED.</div>Kristihttps://wiki.archlinux.org/index.php?title=Yaourt&diff=68721Yaourt2009-05-14T22:07:30Z<p>Kristi: /* Install */</p>
<hr />
<div>{{i18n_links_start}}<br />
<br />
{{i18n_entry|English|Yaourt}}<br />
{{i18n_entry|Italiano|Yaourt (Italiano)}}<br />
{{i18n_entry|简体中文|Yaourt(简体中文)}}<br />
{{i18n_entry|Español|Yaourt_(Español)}}<br />
{{i18n_entry|Türkçe|Yaourt (Türkçe)}}<br />
<br />
{{i18n_links_end}}<br />
<br />
'''Y'''et '''A'''n'''O'''ther '''U'''ser '''R'''epository '''T'''ool. Yaourt is a community-contributed wrapper for pacman which adds seamless access to the [[AUR]], allowing and automating package compilation and installation from your choice of the 11,000+ PKGBUILDs in the [[AUR]], in addition to the many thousands of available Arch binary packages. Yaourt uses the same exact syntax as pacman, which saves you from relearning an entirely new method of system maintenance, but also adds new options. Yaourt expands the power and simplicity of pacman by adding even more useful features and provides pleasing, colorized output, interactive search mode, and much more. You will almost certainly want this. <br />
<br />
=Install=<br />
<br />
==First of all==<br />
<br />
Install the "build-devel" package, so that you won't miss utilities like gcc or make later on.<br />
pacman -Sy base-devel<br />
<br />
==PKGBUILD Install==<br />
<br />
The traditional way to install Yaourt is through the actual AUR. In learning how to install yaourt this way, you will have the opportunity to learn how the AUR (and PKGBUILD)works.<br />
<br />
Open a web browser and head to the [http://aur.archlinux.org/packages.php?ID=5863 yaourt AUR page]<br />
<br />
Under package details click the "Tarball" link to download the [http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz tarball]<br />
<br />
Unpack the tarball<br />
<br />
tar zxvf yaourt.tar.gz<br />
<br />
Navigate into the new directory<br />
<br />
cd yaourt<br />
<br />
At this point; '''Make sure that you check the contents of the PKGBUILD and the yaourt.install files!''' This cannot be stressed enough, don't worry, they aren't too complicated. Just take a look, if you see anything suspicious, get on irc or the forum and ask about it.<br />
<br />
more yaourt.install<br />
more PKGBUILD<br />
<br />
If everything looks good. We are ready to build the packages. <br />
<br />
makepkg PKGBUILD<br />
<br />
After this process is complete, you will see several new files and directories. You should be interested in the file that ends with *.pkg.tar.gz (in this case mine is named; yaourt-0.9.2-i686.pkg.tar.gz)<br />
<br />
Now it's time to use pacman to install yaourt. ''Be sure to change the package name to the actual name of your package, don't just copy and paste this line''<br />
<br />
pacman -U yaourt-0.9.2-i686.pkg.tar.gz<br />
<br />
Congratulations! You're done! Remember, this is the SAME process for almost all AUR PKGBUILDs.<br />
<br />
See the [http://archlinux.fr/yaourt-en# yaourt] man page for more.<br />
<br />
==Easy Install==<br />
<br />
The easiest way to install Yaourt is to add the yaourt repository to your /etc/pacman.conf:<br />
<br />
For i686:<br />
[archlinuxfr]<br />
Server = http://repo.archlinux.fr/i686<br />
For x86-64:<br />
[archlinuxfr]<br />
Server = http://repo.archlinux.fr/x86_64<br />
<br />
Sync and install:<br />
pacman -Sy yaourt<br />
<br />
If you wish, you may then create your own command aliases in ~/.bashrc to save typing: <br />
nano ~/.bashrc<br />
<br />
alias p='pacman'<br />
alias y='yaourt' <br />
Save and then source:<br />
source ~/.bashrc<br />
<br />
=Using yaourt=<br />
* [http://www.archlinux.fr/yaourt-en/ yaourt page]</div>Kristihttps://wiki.archlinux.org/index.php?title=Netcfg&diff=68700Netcfg2009-05-14T08:16:17Z<p>Kristi: /* Step 4: Connecting on boot */</p>
<hr />
<div>{{i18n_links_start}}<br />
{{i18n_entry|English|Network Profiles}}<br />
{{i18n_entry|简体中文|Netcfg2网络配置}}<br />
{{i18n_entry|Türkçe|Ağ Profilleri}}<br />
{{i18n_links_end}}<br />
<br />
==Step 1: Install==<br />
Network profiles are handled by the bash scripts available in the netcfg package.<br />
<br />
# pacman -Sy core/netcfg<br />
<br />
For information relating to the latest development version of netcfg, see [[Network Profiles development]]<br />
<br />
==Step 2: Create the profile(s)==<br />
A profile is a single text file in /etc/network.d which defines variables used by netcfg. The file name will become the name of the profile, and can be anything you wish, it is not a setting involved in the connection.<br />
<br />
The easiest way to create a new profile is to copy one of the example profiles from /etc/network.d/examples and edit it to fit with your network.<br />
<br />
{{Box Note | Example profiles are located in /etc/network.d/examples/. Modifying an example from here is the best way to ensure that you have a configuration suitable for your version of netcfg. }}<br />
<br />
{{Box Note | Your network information (e.g. wireless passkey) will be stored in plain text format, so you may want to change the permissions on the newly created /etc/network.d/*.conf file (e.g. <tt>chmod 0600 /etc/network.d/*.conf</tt> to make it readable by root only), depending upon how security conscious you are. }}<br />
<br />
===Configuration Notes===<br />
====Using a string WEP key====<br />
This is for a STRING WEP key, not a HEX WEP key, not a WPA key.<br />
KEY="s:Somepasskey"<br />
<br />
====Ralink legacy drivers rt2500, rt2400 that use iwpriv====<br />
There is no plans to add WPA support to these drivers. rt2x00 is supported, however, and will replace these.<br />
<br />
If you must use them, create a shell script that runs the needed iwpriv commands and put its path in PRE_UP=""<br />
<br />
====Passing arguments to iwconfig before connecting====<br />
Simply:<br />
<br />
IWCONFIG="<arguments>"<br />
<br />
Where <arguments> can be any valid iwconfig argument. The script then runs "iwconfig $INTERFACE $IWCONFIG"<br />
<br />
For example, setting bssid/ap mac:<br />
IWCONFIG="ap 12:34:56:78:90:12"<br />
<br />
This supercedes the IWOPTS and WEP_OPTS options which were incompletely implemented.<br />
<br />
==Step 3: Connect==<br />
To connect to a profile just execute the following command ''as root'':<br />
# netcfg <profile-name><br />
To disconnect from a profile:<br />
# netcfg down <profile-name><br />
<br />
Where <profile-name> is the name of the file created in /etc/network.d. For example /etc/network.d/homewireless would simply have a profile name of homewireless<br />
<br />
==Step 4: Connecting on boot==<br />
===net-profiles===<br />
<code>net-profiles</code> allows you to start some profiles on boot.<br />
<br />
In order to do that you need to list the /etc/network.d/ profiles you want netcfg to try at boot in the <code>NETWORKS=()</code> line in /etc/rc.conf. <br />
<br />
NETWORKS=(home mywireless)<br />
<br />
You also need to add <code>net-profiles</code> to the DAEMONS array, eg: DAEMONS=(... '''net-profiles''' ...).<br />
<br />
====Display a menu at boot====<br />
<code>net-profiles</code> can also display a menu so you can pick which profile you want to set up. For that you just need to set NETWORKS= to menu (ie <code>NETWORKS=menu</code>).<br />
<br />
You can also access that menu at any time by running <code>netcfg-menu</code> in a terminal.<br />
<br />
The dialog package is needed.<br />
<br />
===Automatic detection===<br />
====net-auto====<br />
<code>net-auto</code> is the second boot-time script of the netcfg package. Its function is to determine automatically which profile should be started.<br />
<br />
<code>net-auto</code> reads the AUTO_NETWORKS=() line in /etc/rc.conf. For example:<br />
AUTO_NETWORKS=(auto-wireless wlan0)<br />
<br />
Like <code>net-profiles</code> it needs to be added to the DAEMONS=() line, eg: DAEMONS=(... '''net-auto''' ...).<br />
<br />
To run after boot:<br />
# /usr/bin/netcfg-auto-wireless $interface<br />
<br />
==Troubleshooting==<br />
===Wireless connections===<br />
For wireless connections, make sure the required drivers and firmwares are installed as explained in [[Wireless Setup]].<br />
===netcfg error messages===<br />
====Network unavailable====<br />
This is typically one of:<br />
* Out of range<br />
* Driver issue (See Driver Quirks above)<br />
* Trying to connect to a hidden network<br />
<br />
If you know your network is hidden, set <br />
SCAN=no <br />
<br />
====Wireless Association failed====<br />
This is typically one of:<br />
* Out of range/reception<br />
* Incorrect configuration<br />
* Invalid key<br />
* Driver problem (See Driver Quirks above)<br />
<br />
If it is a range problem, increasing TIMEOUT= can help.<br />
<br />
====Unable to get IP address with DHCP====<br />
This is typically one of:<br />
* Out of range/reception<br />
<br />
Try increasing DHCP_TIMEOUT<br />
<br />
====Not a valid connection, check spelling or look at examples====<br />
You must set CONNECTION= to one of the connection types in /usr/lib/network/connections/. Alternatively use one of the provided configuration examples in /etc/network.d/examples.<br />
<br />
===Driver Quirks (netcfg 2.1 and later)===<br />
{{Box Note | You most likely do NOT need these. Ensure your configuration is correct before considering these. They are for a small range of drivers with unusual issues, many of them older versions. These are workarounds, not solutions. }}<br />
<br />
Some drivers behave oddly and need workarounds to connect. These have to be enabled manually. They're best determined by reading the forums, seeing what others have used, and, if that fails, trial and error. They '''can''' be combined.<br />
<br />
* prescan - Run "iwlist $INTERFACE scan" before attempting to connect (Some broadcom)<br />
* preessid - Run "iwconfig $INTERFACE essid $ESSID" before attempting to connect. (Some ipw3945 and Intel PRO/Wireless 4965AGN)<br />
* wpaessid - Same as previous, run before starting wpa_supplicant<br />
* predown - Take interface down before association and then restore it after. (madwifi)<br />
* postsleep - Sleep 1 second before checking if the association was successful<br />
* postscan - Run "iwlist scan" after associating <br />
<br />
For example<br />
QUIRKS=(prescan preessid)<br />
<br />
If you are having problems with DNS and DHCP, try adding to your profile:<br />
DHCLIENT=no<br />
This will tell netcfg to use dhcpcd instead of dhclient<br />
<br />
If you get "Wireless Network Not Found" or "Association Failed" and have tried the above, try:<br />
SCAN=no<br />
<br />
===It still doesn't work, what do I do ?===<br />
If the FAQs below didn't solve your problem the next best place to go is the forums, or the mailing list. <br />
<br />
To be able to determine what's wrong, we need information so when you post, make sure that you provide the following output:<br />
* '''''ALL OUTPUT FROM netcfg''''' <br />
* '''''ALL OUTPUT FROM netcfg''''' <br />
* '''''ALL OUTPUT FROM netcfg''''' - this is absolutely cruicial to be able determine what went wrong. The message might be short or nonexistant, but it can mean a great deal. <br />
* '''''Your /etc/network.d network profiles''''' - Also cruicial as many problems are simple config issues. Feel free to censor your wireless key.<br />
* '''''netcfg version'''''<br />
* lsmod<br />
* iwconfig<br />
<br />
==GUI==<br />
<br />
A Qt-based netcfg frontend called ArchAssistant exists. It proposes to manage & connect/disconnect profiles from a systray icon. Automatic wireless detection is also available. This tool is particularly useful for laptop users.<br />
<br />
Links:<br />
[http://aur.archlinux.org/packages.php?ID=15655 archassistant on AUR] | [http://www.kde-apps.org/content/show.php/ArchAssistant?content=76760 archassistant on kde-apps.org] | archassistant package on archlinux.fr [http://repo.archlinux.fr/i686/ i686] and [http://repo.archlinux.fr/x86_64/ x86_64]<br />
<br />
==Supplementary tools==<br />
<br />
There is a console tool for selecting wireless networks "in real-time" (in NetworkManager manner) called <code>wifi-select</code>. The tool is convinient for use in wifi-cafe or another places you are visiting for the first (and maybe the last) time. Then you don't need to create the file-profile for a new network, just type <code>sudo wifi-select wlan0</code> and choose the network you need. <br />
<br />
The tool is currently packaged and available in AUR (<code>yaourt -S wifi-select</code>).<br />
<br />
It works as follows:<br />
* parses <code>iwlist scan</code> results and presents list of networks along with its security settings (wpa/wep/none) using <code>dialog</code><br />
* if user selects network with existing profile -- just use this profile to connect with <code>netcfg</code><br />
* if user selects a new network (for example network from wifi-cafe he currently visited), <code>wifi-select</code> automatically generates new profile with corresponding <code>$SECURITY</code> and asks for the key (if needed). It uses DHCP as <code>$IP</code> by default<br />
* then, if connection succeeds, profile is saved for later usage<br />
* if connection fails, user is asked if he/she wants to keep generated profile for further usage (for example to change <code>$IP</code> to static or adjust some additional options)<br />
<br />
Links: <br />
[http://bbs.archlinux.org/viewtopic.php?id=63973 Forum thread] related to development of <code>wifi-select</code> | [http://aur.archlinux.org/packages.php?ID=23471 wifi-select on AUR] | [http://hg.horna.org.ua/wifi-select/ wifi-select mercurial repository]<br />
<br />
==FAQ==<br />
===Why doesnt netcfg do ''x''?===<br />
netcfg doesn't need to. It connects to networks.<br />
<br />
But netcfg is super modular and re-usable. Have a look at /usr/lib/networks/ -- heaps of reusable functions for your own scripts. <br />
<br />
===Why doesn't netcfg behave in this way? It makes more sense===<br />
netcfg doesn't enforce any rules. It's task is to connect to networks. It doesn't impose any heuristics, like 'disconnect from wireless if ethernet is connected'.<br />
<br />
If you want behaviour like that, it'd be really easy to write a separate tool over netcfg. See the question above.<br />
<br />
===Do I still need ''x'' when I'm using netcfg?===<br />
* /etc/hosts: Yes, you still need this, this is important. Don't remove your hostname from this otherwise you'll have some odd problems. <br />
* HOSTNAME= in /etc/rc.conf: It's strongly recommended you keep this, otherwise no hostname will be set if a profile fails<br />
* DAEMONS=(network) and INTERFACES=() in /etc/rc.conf: If you've setup all your networks with netcfg instead, yes, you can remove this. You can also safely remove lo, it's been moved into rc.sysinit.<br />
* lo: This is now in rc.sysinit, you don't need to configure it anywhere.</div>Kristi